Company Data Enrichment Scraping for Accurate Firmographics
Quick answer
Company data enrichment scraping works best with the Geonode Scraper API for structured JSON from company websites and public profiles, backed by residential proxies for registries and directories that serve different results by country. The API renders JavaScript, returns HTML, Markdown or JSON, and starts with 1.5K free requests a month, so you can enrich a sample of CRM records before committing to a plan.
Why company data enrichment breaks without the right proxies
Enrichment is a many-sources problem. A single CRM record might need the company's own site for the about page and careers count, a national business registry for the legal entity and address, a public professional profile for headcount and industry, and a tech-lookup page for the stack. Each source has its own defences.
Registries and directories often rate-limit per IP and serve a CAPTCHA after a modest number of lookups. Public profile sites apply aggressive rate limiting to anything that is not a logged-in browser, and datacenter ranges hit HTTP 429 or a login wall quickly. Company sites are easier, but many are behind CDN bot filters that score on IP reputation.
Geography matters too. Registries are national, and some restrict access or change the response format based on the visitor's country. A batch enrichment job from one datacenter location gets a mix of blocked, partial and localised responses, and the CRM ends up with fields that look filled but are wrong.
Which Geonode proxy type fits
For enrichment, start with the Scraper API. It handles JavaScript rendering, returns JSON you can map straight to CRM fields, and the extract endpoint takes a URL and gives you structured content without maintaining your own browser fleet. Batch and map endpoints cover lists of company domains in one call.
Pair it with residential proxies when a source is country-sensitive or when you run your own parser. Residential IPs across 195+ countries let you query a German registry from Germany and a Brazilian one from Brazil. ISP proxies suit a small, steady enrichment job that benefits from a fixed identity, such as a daily refresh of a few thousand accounts.
- Residential — Best for: National registries, directories, public profiles; IP source: Real consumer devices, 195+ countries; Session: Rotating or sticky up to 24 h; Price from: $0.27/GB at volume, 10 GB for $7.92
- ISP (static residential) — Best for: Daily refresh jobs with consistent identity; IP source: Static IPs from real ISPs; Session: Unlimited sessions, unlimited bandwidth per IP; Price from: $1.25/IP
- Datacenter — Best for: Company websites with no bot filtering, own data sources; IP source: Shared datacenter ranges; Session: Rotating; Price from: $0.14/GB
Recommendation: Scraper API as the primary tool, residential proxies as the geo layer underneath.
How to set it up
- Export the CRM records that need enrichment with the fields you already have: domain, country, legal name. Define the target schema: headcount band, HQ city, industry, founding year, tech signals.
- Resolve each domain to its source URLs: the about and careers pages, the registry entry for that country, and any public profile. Store the source URL per field for provenance.
- Call the Scraper API extract endpoint with JSON output for company sites and profiles. Route registry lookups through a country-matched residential proxy when the API alone returns a geo-restricted page.
- Validate before writing: reject headcounts that are not numbers, normalise country codes, and flag records where two sources disagree for manual review.
- Write the enriched fields back with a source and timestamp per field. Schedule a refresh cadence by account tier so high-value accounts stay current.
# verify endpoint against docs.geonode.com before publishing
curl -X POST "https://scraper.geonode.com/api/extract" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example-company.com/about",
"format": "json",
"render_js": true,
"country": "us"
}'
Get the exact snippet for your language from the API Code Generator in the dashboard.
Enrichment-specific settings that matter
Country-matched sources
Query each registry or directory from an IP in its own country. Use the Scraper API country parameter or a residential username with the matching country code. This avoids localised redirects and ensures the legal entity data you record is from the authoritative national source.
Rotating by default, sticky for paginated profiles
Most enrichment requests are one page per source, so rotating sessions spread load and keep per-IP volume low. Use a sticky session only when a source paginates, such as a careers listing, so cookies and pagination tokens stay valid across requests.
Concurrency and rate limits per source
Treat each source separately. Company sites tolerate parallel requests; registries and public profiles do not. Set per-domain concurrency caps in your queue and respect published rate limits. Geonode imposes no fixed thread limit, so the cap is yours to set.
Field-level provenance
Store the URL, timestamp and proxy country for every enriched field, not just the record. When a sales rep questions a headcount, you can show exactly where it came from and re-run that single lookup.
What to log
Log request id, domain, source type, status code, output format and parse success. Track parse failures by source over time: a rising failure rate on one source usually means a layout change, not a proxy issue.
What Geonode gives you for company data enrichment
- Scraper API with built-in JavaScript rendering and HTML, Markdown or JSON output
- Extract, batch, map and crawl endpoints for single domains or whole lists
- 1.5K free requests per month and a 48-hour trial with 5 threads
- Residential proxies in 195+ countries for national registries and directories
- 24/7 support, card and crypto payment, no contract
Pricing for company data enrichment
The Scraper API is free for 1.5K requests a month, then from $3.50 per 10K requests, with monthly unlimited plans from $47 for 2 threads up to $1,799 for 100 threads. Residential proxies for registry and directory lookups are pay-as-you-go from $0.27/GB at volume, with a 10 GB entry plan at $7.92 and a 3-day trial for $5. ISP proxies start at $1.25 per IP and datacenter at $0.14/GB. No contracts. See the pricing page for the full breakdown.
FAQ
What sources does company data enrichment scraping usually cover?
The company's own website for description, locations and open roles; the national business registry for legal name, registration number and address; public company profiles for headcount and industry; and technology lookup pages for stack signals. Each source fills different CRM fields.
Is company data enrichment scraping compliant with GDPR?
Firmographic data about companies is not personal data, but contact-level fields can be. Collect only publicly available data, honour GDPR and CCPA, respect platform terms and robots policies, and never collect credentials or private content. Use proxies only on accounts you own or manage with authorisation. Geonode's AUP prohibits fraud, spam and credential abuse.
Do I need proxies if I use the Scraper API?
Usually not for company websites. The API manages its own IP pool and rendering. Add residential proxies when you run a custom parser against a country-restricted registry or when you want full control over the session and targeting.
How do I handle companies with multiple registries?
Query the registry for the country of incorporation first, then any secondary jurisdictions where the CRM shows an office. Route each lookup through a residential IP in that country and record which registry each field came from.
How often should enriched fields be refreshed?
Headcount, locations and open roles change frequently; legal entity data rarely. Refresh fast-moving fields monthly for priority accounts and quarterly for the rest. Spread refresh jobs across the month to keep per-source volume steady.
Can the Scraper API return JSON I can map straight into the CRM?
Yes. Request JSON output from the extract endpoint and map fields in your pipeline. For large lists, the batch endpoint processes many domains in one call and the map endpoint discovers the relevant pages on each site.
Start
Create an account, use the 1.5K free Scraper API requests on a sample of CRM records, and compare the enriched fields against what your reps already know. Get started or Contact sales for enrichment at CRM scale.
Related: Lead generation · Product data enrichment · Market research