
Ethan Collins
Pattern Recognition Specialist

AI agents performing due diligence, lead enrichment, and compliance checks need structured company data from government business registries — incorporation details, officer names, filing status, and registered addresses. These registries deploy CAPTCHA protection that blocks automated verification workflows. This guide covers building a business registry data extraction pipeline for AI agents using CapSolver to maintain access to state, federal, and international corporate databases.
Business registries are authoritative sources for company verification. When an AI agent needs to confirm that a company exists, check its current status, identify officers, or verify its registered address, it queries these government databases. The challenge is that virtually every business registry deploys CAPTCHA protection to prevent bulk automated access.
This creates a bottleneck for AI agents performing:
SEC EDGAR, state Secretary of State databases, UK Companies House, and EU business registers all deploy verification challenges. Without automated solving, an AI agent performing 100 company verifications per day faces 30-50 manual CAPTCHA interventions — making autonomous operation impossible.
pip install git+https://github.com/capsolver-ai/capsolver-core.git
pip install aiohttp beautifulsoup4 pandas
export CAPSOLVER_API_KEY="your-capsolver-api-key"
Additional requirements:
BUSINESS_REGISTRIES = {
"delaware_sos": {
"name": "Delaware Secretary of State",
"url": "https://icis.corp.delaware.gov",
"captcha_type": "ReCaptchaV2TaskProxyLess",
"data": ["entity_name", "file_number", "status", "formation_date", "agent"]
},
"california_sos": {
"name": "California Secretary of State",
"url": "https://bizfileonline.sos.ca.gov",
"captcha_type": "ReCaptchaV2TaskProxyLess",
"data": ["entity_name", "number", "status", "type", "jurisdiction", "agent"]
},
"uk_companies_house": {
"name": "UK Companies House",
"url": "https://find-and-update.company-information.service.gov.uk",
"captcha_type": "ReCaptchaV2TaskProxyLess",
"data": ["company_name", "number", "status", "type", "incorporated", "officers"]
},
"sec_edgar": {
"name": "SEC EDGAR",
"url": "https://www.sec.gov/cgi-bin/browse-edgar",
"captcha_type": "ImageToTextTask",
"data": ["company_name", "cik", "filings", "sic_code", "state"]
}
}
import asyncio
from capsolver_core import create_capsolver, CaptchaType, CaptchaInfo
class BusinessRegistryExtractor:
"""Extract business data from government registries with CAPTCHA handling."""
def __init__(self, api_key: str, proxies: list):
self.cap = create_capsolver(api_key=api_key)
self.proxies = proxies
self.proxy_idx = 0
async def verify_company(self, company_name: str, jurisdiction: str) -> dict:
"""Verify a company in a specific jurisdiction's registry."""
registry = BUSINESS_REGISTRIES.get(jurisdiction)
if not registry:
return {"error": f"Unsupported jurisdiction: {jurisdiction}"}
proxy = self.proxies[self.proxy_idx % len(self.proxies)]
self.proxy_idx += 1
# Search the registry
html = await self._search_registry(registry, company_name, proxy)
# Handle CAPTCHA
if self._is_captcha(html):
token = await self._solve(registry)
html = await self._retry_search(registry, company_name, proxy, token)
# Parse results
return self._parse_registry_result(html, registry)
async def _solve(self, registry: dict) -> str:
type_map = {
"ReCaptchaV2TaskProxyLess": CaptchaType.RECAPTCHA_V2,
"ImageToTextTask": CaptchaType.RECAPTCHA_V2 # Different handling
}
info = CaptchaInfo(
type=type_map[registry["captcha_type"]],
website_url=registry["url"],
website_key=registry.get("site_key", "")
)
solution = await self.cap.solve(info)
return solution.token
async def bulk_verify(self, companies: list, jurisdiction: str) -> list:
"""Verify multiple companies in batch."""
results = []
for company in companies:
result = await self.verify_company(company, jurisdiction)
results.append(result)
await asyncio.sleep(3) # Respectful rate limiting
return results
async def close(self):
await self.cap.aclose()
class CompanyVerificationAgent:
"""AI agent layer for business verification workflows."""
def __init__(self, extractor: BusinessRegistryExtractor):
self.extractor = extractor
async def full_verification(self, company_name: str) -> dict:
"""Run full verification across multiple registries."""
results = {}
# Check primary US registries
for jurisdiction in ["delaware_sos", "california_sos"]:
result = await self.extractor.verify_company(company_name, jurisdiction)
if result.get("status") == "Active":
results["us_registration"] = result
break
# Check SEC for public companies
sec_result = await self.extractor.verify_company(company_name, "sec_edgar")
if sec_result.get("cik"):
results["sec_filing"] = sec_result
# Compile verification report
return {
"company": company_name,
"verified": bool(results),
"registrations": results,
"verification_date": time.strftime("%Y-%m-%d")
}
| Verification Use Case | Registries Checked | CAPTCHAs per Check | Time per Company |
|---|---|---|---|
| Basic existence check | 1 state registry | 1 | 5-15 seconds |
| Multi-jurisdiction | 3-5 registries | 3-5 | 20-60 seconds |
| Full due diligence | 5-8 registries + SEC | 5-8 | 45-120 seconds |
| Bulk lead enrichment | 1 registry per company | 1 per company | 5-10 seconds each |
| Volume | Monthly Verifications | Monthly CAPTCHAs | Monthly Cost |
|---|---|---|---|
| Small (50/day) | 1,500 | ~1,500 | $3-4.50 |
| Medium (200/day) | 6,000 | ~6,000 | $12-18 |
| Large (1,000/day) | 30,000 | ~30,000 | $60-90 |
Claim Your Bonus Code: Use code WEBS at CapSolver Dashboard to get an extra 5% bonus on every recharge.
The CapSolver FAQ on responsible use covers additional compliance guidance. For handling reCAPTCHA on government portals, the v2 solving documentation provides implementation details. The CapSolver web scraping guide covers infrastructure patterns for high-volume data extraction.
Business registry data extraction for AI agents requires handling diverse CAPTCHA systems across government databases in multiple jurisdictions. CapSolver provides the verification-clearing infrastructure that enables automated company lookups at scale — solving reCAPTCHA and image CAPTCHAs in 3-12 seconds so your AI agent can verify businesses, enrich leads, and complete compliance checks without manual intervention.
Any registry using standard CAPTCHA systems: US state Secretary of State databases (all 50 states), SEC EDGAR, UK Companies House, EU national registries, and most international corporate databases. Each requires specific CAPTCHA parameter identification.
Yes. Most registries publicly list current officers, directors, and registered agents. The extraction engine parses these fields along with company status, formation date, and filing history.
Some registries require free account creation for detailed searches. Your AI agent can maintain authenticated sessions after initial setup. CAPTCHAs typically appear on both login and search pages — CapSolver handles both.
Most government registries provide public access to business registration data. Bulk access policies vary by jurisdiction — some explicitly allow it, others have rate limits. Always check specific registry terms and implement respectful rate limiting (3-5 second delays between queries).
Track when ChatGPT Search mentions your brand in AI-generated answers with automated monitoring.

Complete guide to building ecommerce product data pipelines for AI agents with CAPTCHA solving.
