Company Enrichment API — Domain to Firmographics & Tech
Pricing
from $70.00 / 1,000 company enrichment records
Company Enrichment API — Domain to Firmographics & Tech
Have a list of company names or domains? Feed up to 1,000 and get a firmographic profile per company — industry, headcount, location, funding, detected tech stack, social links, and email patterns. Built for bulk CRM cleanup and lead scoring: domains in, enriched list out. Export CSV/JSON/Excel.
Pricing
from $70.00 / 1,000 company enrichment records
Rating
0.0
(0)
Developer
NexGenData
Maintained by CommunityActor stats
0
Bookmarked
107
Total users
7
Monthly active users
an hour ago
Last modified
Categories
Share
Company Enrichment — Bulk Domain to Firmographics & Tech Stack
Have a list of company names or domains and missing data behind them? Feed up to 1,000 companies and get back a firmographic profile per company — description, estimated industry and size, country, detected tech stack, social links, role-based email patterns and a logo URL. Built for bulk CRM cleanup and lead scoring: a list of domains in, an enriched list out, one structured row per company.
This is an enrichment tool — it needs an input list. If you don't have companies yet and want to discover prospects by job title or industry, use the B2B Leads Finder. If you want the on-site contact details for a list of websites, use the Website Contact Scraper.
📊 Sample Output

companyName | domain | logoUrl | commonEmails | socialProfiles | tech_stack |
|---|---|---|---|---|---|
| stripe.com | stripe.com | https://www.google.com/s2/favicons?domain=stripe.com&sz=128 | ['[email on record]', '[email on record]', '[email on record]', '[ema… | {'linkedin': 'https://linkedin.com/company/stripe', 'twitter': 'https… | ['nginx', 'React', 'Next.js'] |
| airbnb.com | airbnb.com | https://www.google.com/s2/favicons?domain=airbnb.com&sz=128 | ['[email on record]', '[email on record]', '[email on record]', '[ema… | {'linkedin': 'https://linkedin.com/company/airbnb', 'twitter': 'https… | ['nginx'] |
Real rows from run ScoIaCiorPTJ35iX7 on build 0.0.46 (2026-09-24), unedited apart from masked emails/phones and shortened long text; fields the source does not publish are empty.
🔧 Input reference
| Field | Type | Default | What it does |
|---|---|---|---|
companies | array | ["stripe.com", "airbnb.com"] | Company names, domains, or website URLs to enrich (one per line). Example: stripe.com |
enrichEmails | boolean | true | Append business emails found for each company. |
enrichSocials | boolean | true | Append social profile links (LinkedIn, X, etc.) for each company. |
enrichDescription | boolean | true | Append a short company description and firmographics. |
notionConnector | string | Optional. Connect your Notion workspace and the enriched companies are also written as a Notion page in the same run - the Actor never sees your Notion credentials. Authorize a No… | |
notionParentId | string | Optional. The Notion page ID to create the page under. If blank, Notion creates a private page in your workspace. | |
supabaseConnector | string | Optional. Connect your own Supabase project and the results are also inserted into a table in the same run — the Actor never sees your Supabase credentials. Authorize a write-scop… | |
supabaseTable | string | "nexgendata_leads" | Target table in the public schema (created if missing, with id, a jsonb data column, and a scraped_at timestamp). Default: nexgendata_leads. |
supabaseProjectId | string | Your Supabase project reference (e.g. abcdefghijklmnop). Required unless your connector URL is already project-scoped. Find it in your project URL: supabase.com/dashboard/project/… | |
deliveryDedup | boolean | true | When on (default), records already delivered in a previous run are not delivered again to the same destination — so scheduled runs only push new items. Turn off to deliver every r… |
🧾 JSON sample record
One real record from run ScoIaCiorPTJ35iX7 (emails/phones masked, long text shortened):
{"companyName": "stripe.com","domain": "stripe.com","description": "Stripe, LLC is an Irish-American multinational financial services and software as a service company dual-headquartered in South San Francisco, California, United States, and Dublin, Ireland. The company primarily offers payment-processing software and application programming interfaces for e-commerce websites and mobile applications. Stripe is the largest privately owned financial technology company with a valuation of about $159 billion and over $1.9 trillion in payment volume processed in 2025, processing transactions for 5 million businesses in that year.","industry": "Fintech","estimatedEmployees": "1000+","logoUrl": "https://www.google.com/s2/favicons?domain=stripe.com&sz=128","commonEmails": ["[email on record]","[email on record]","[email on record]","[email on record]","[email on record]"],"socialProfiles": {"linkedin": "https://linkedin.com/company/stripe","twitter": "https://twitter.com/stripe.com","github": "https://github.com/stripe.com"},"hasMxRecords": true,"country": "US","tech_stack": ["nginx","React","Next.js"],"sources": ["duckduckgo","dns_mx","web_search","ip_geo","tech_fingerprint"],"error": null}
💰 Pricing
| Event | Price (USD) | When it is charged |
|---|---|---|
Actor Start (apify-actor-start) | $0.00005 | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). |
Company enrichment record (apify-default-dataset-item) | $0.07 | Single result in the default dataset. |
Pay-per-event: you pay only for what the run delivers. A run that delivers nothing bills no result events (only the actor-start event, when the actor defines one). Example: a run that delivers 100 results costs 100 × $0.07 = $7.00 plus the start fee.
Pricing
$0.07 per enriched company row (Pay-Per-Event), plus $0.00005 per Actor start per GB of memory. A company that cannot be resolved to a domain is not written to the dataset and not charged, and no status or error row is ever billed. If the lookup source is unreachable for the whole run, the run fails rather than finishing green and empty.
What you get per company
Exactly these fields, one row per enriched company:
companyName— the value you supplieddomain— resolved company domaindescription— short public description (DuckDuckGo Instant Answer / Wikipedia abstract)industry— estimated from the description keywordsestimatedEmployees— coarse band estimated from the descriptionlogoUrl— logo/favicon image URL for the domaincommonEmails— role-based patterns (info@,contact@,hello@,support@,sales@)socialProfiles— conventional LinkedIn / X / GitHub URLs for the domainhasMxRecords— domain publishes DNS MX recordscountry— 2-letter ISO code from IP geolocation of the domain's A recordtech_stack— CMS, analytics, payments, chat/marketing and infra detected in a live HTTP/HTML scansources— which of the above signals contributed
industry and estimatedEmployees are heuristic estimates derived from the public description, not filed company data. There is no revenue, funding-stage, HQ-city or founded-year field.
Use cases
- CRM cleanup — fill missing firmographics on imported accounts.
- Lead scoring — rank inbound by ICP fit (industry + size + tech).
- Auto-enrich signups — enrich every new signup via webhook.
- Market mapping — bulk-enrich a list of competitor domains.
- Tech-stack targeting — find accounts running a specific SaaS or CMS.
Sample input
{"companies": ["stripe.com", "vercel.com", "anthropic.com"],"enrichEmails": true,"enrichSocials": true,"enrichDescription": true}
Sample output
{"companyName": "stripe.com","domain": "stripe.com","description": "Stripe, LLC is an American multinational financial services and software as a service company…","industry": "Fintech","estimatedEmployees": "1000+","logoUrl": "https://www.google.com/s2/favicons?domain=stripe.com&sz=128","commonEmails": ["info@stripe.com", "contact@stripe.com", "hello@stripe.com"],"socialProfiles": {"linkedin": "https://linkedin.com/company/stripe", "twitter": "https://twitter.com/stripe"},"hasMxRecords": true,"country": "US","tech_stack": ["Stripe", "nginx", "Next.js"],"sources": ["duckduckgo", "dns_mx", "web_search", "ip_geo", "tech_fingerprint"]}
How to use
- Open the Actor in the Apify Console.
- Paste your company names or domains into the Companies field (one per line).
- Toggle Enrich emails, Enrich social profiles, and Enrich company description as needed.
- Click Start, then download the enriched list as JSON, CSV, or Excel, or pull it via the REST API.
Run it on a schedule
Company profiles change slowly, so a monthly or quarterly re-run over your account list is enough for CRM cleanup, and new signups can be enriched one by one through the API as they arrive. Between runs most rows come back the same; what changes is the odd updated description or tech stack, plus any companies you added to the list. When you deliver to Notion or Supabase, deliveryDedup (on by default) skips records already delivered to that destination in a previous run, so a scheduled run only pushes new companies; turn it off when you want refreshed rows pushed again. Send each run's results onward with a webhook, Google Sheets, Zapier, Make or the Apify API.
Video guides from Apify: Schedule your Actor · Integrations
FAQ
Why use this instead of the official company websites and Wikipedia?
You could look each company up by hand for free. This actor combines several public signals into one row per company: a short description from DuckDuckGo Instant Answer or Wikipedia, DNS mail records, web search, IP location and a live scan of the site's tech stack. It handles up to 1,000 companies per run, exports to JSON, CSV or Excel, and companies that cannot be resolved to a domain are skipped and not charged.
What does a typical run cost?
You pay per result, not for run time: $0.07 for each row in the results, plus $0.00005 per run start (charged per GB of run memory, minimum one). A run that returns 2 enriched companies costs about $0.14. Live prices are always shown in the Pricing tab.
How accurate are the industry and employee count fields?
They are estimates. industry and estimatedEmployees are worked out from keywords in the public description, not taken from filed company data. There is no revenue, funding stage, headquarters city or founded-year field.
Does it find real contact emails for each company?
No. commonEmails lists role-based patterns such as info@, contact@, hello@, support@ and sales@ for the domain, not named people. hasMxRecords tells you whether the domain accepts email at all. socialProfiles are the standard LinkedIn, X and GitHub URL patterns for the domain, so check them before you rely on them.
Can I enrich a list of company names without domains?
Usually. Each name is resolved to a domain first. If no domain can be found, that company is left out of the results and not charged.
Can I find companies that use a specific CMS or payment tool?
Yes, within what the site shows. The tech_stack field lists the CMS, analytics, payment, chat and hosting signals found in a live scan of each domain, so you can filter your list on it. Tools that leave no trace on the public site will not show up.
Related actors
- B2B Leads Finder — Prospects by Title, Industry & Location API — find new companies and people first, then enrich them here.
- Website Tech Stack Audit — Bulk BuiltWith Alternative API — a deeper look at the software each domain runs.
- Company Email Finder — B2B Contact Discovery API — find named contacts on a domain, beyond role-based patterns.
- Company Logo API — Clearbit Logo Alternative — get a checked logo image for each domain.
- Lead Enrichment — Enrich Leads with Emails, Phones & Tech — enrich a lead list with contacts and socials.