Company Enrichment API — Domain to Company Name, Logo & Socials
Pricing
$2.00 / 1,000 companies
Company Enrichment API — Domain to Company Name, Logo & Socials
Company name, legal name, logo, founding year, HQ, socials, generic mailboxes, phone and tech hints from a domain's own site and schema.org markup. No people data. Unofficial Company Enrichment API.
Pricing
$2.00 / 1,000 companies
Rating
0.0
(0)
Developer
yestrue
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 hours ago
Last modified
Categories
Share
Turn a list of domains into clean company records: name and legal name, description, logo, founding year, headquarters address, the company's pages on LinkedIn, X/Twitter, Facebook, Instagram, YouTube, GitHub, TikTok and Crunchbase, generic mailboxes (info@, sales@…), the business phone line, the contact/about/careers pages and tech-stack hints — all read from the company's own website and its schema.org markup. No people data: person profiles and personal addresses are left out by design.
Try it in 1 minute:
- Press Start — the prefilled input enriches apify.com, mozilla.org and stripe.com.
- A few seconds later the Output tab shows one record per domain with name, logo, socials, HQ and tech hints.
- Download JSON, CSV or Excel, or call the Actor from your CRM, spreadsheet or AI agent.
Price: $2.00 per 1,000 companies. Domains that do not resolve, answer 404, or whose robots.txt disallows reading are free.
Use it to:
- Enrich sign-ups and leads by their e-mail domain: company name, logo, HQ and socials next to every row in your CRM.
- Build a company directory or a prospect list from a list of websites, with the LinkedIn, X and Crunchbase pages already found.
- Give an AI agent structured facts about a company instead of a raw homepage.
- Spot the tech stack (WordPress, Shopify, HubSpot, Next.js, Cloudflare…) of hundreds of sites for segmentation or sales triggers.
- Check which domains carry schema.org Organization markup, a legal name, an address or a founding date — and which do not.
How it works
- Each input is normalised to a domain (www. removed, paths dropped). A single-word company name ("Apify", "Stripe, Inc.") is turned into
<word>.com; multi-word names are not guessed and come back as a free NOT_FOUND record with a hint. - The site's robots.txt is read (and honoured by default), then the homepage over https — http when https does not answer — following redirects.
- The page is parsed: schema.org JSON-LD (Organization, Corporation, LocalBusiness and their subtypes, also inside
@graph), Open Graph and meta tags, the title tag, the site icon, every link on the page and the response headers. - When the homepage has no address, phone or generic mailbox, the contact page on the same host is read as well (one extra request) and fills those gaps.
- The result is one flat record per domain. Rate limits and network hiccups are retried (the first request goes out directly, retries through the proxy); DNS failures and 404s are free NOT_FOUND records.
What is not done: no external registries, no Wikidata lookups (the wikidataId is filled only when the site's own sameAs links to Wikidata), no employee counts beyond what the site's schema.org markup states, no team pages, no person names, no personal e-mail addresses. Descriptions are scrubbed of phone numbers and e-mail addresses.
Input
| Field | What it does |
|---|---|
domains | Company websites, one per line: bare domain, with www, or a full address. One record per domain. |
names | Optional. Single-word company names are turned into a domain the simple way; others come back as NOT_FOUND with a hint. |
fetchContactPage | Read the contact page when the homepage has no address, phone or mailbox (default on). |
respectRobotsTxt | Skip sites whose robots.txt disallows the homepage (default on; free ROBOTS_DISALLOWED record). |
maxConcurrency | Parallel domains (default 5, up to 20). |
proxyConfiguration | Used only for retries after a network error or rate limit; first requests are direct. |
Output
One record per domain:
| Field | What it is |
|---|---|
domain, finalUrl, httpStatus, canonicalUrl, titleTag, language | What was read and how the site answered |
name, legalName, description | Company name (schema.org → og:site_name → title tag), legal name and description (scrubbed of contact details) |
logo, favicon | Absolute image URLs: schema.org logo, else the site icon, else og:image |
industry, employeeRange, foundingYear, foundingDate, hq | Only from the site's own markup: schema.org business type or keywords meta, numberOfEmployees, foundingDate, address { street, city, region, postalCode, country } |
socials | { facebook, twitter, linkedin, instagram, youtube, github, tiktok, crunchbase } — company pages only |
contactPageUrl, aboutPageUrl, careersPageUrl | Section pages the homepage links to |
emails, phone | Generic mailboxes only (info@, sales@, press@…) and the schema.org business line |
wikidataId | Q-id when the site's sameAs links to Wikidata |
techHints[] | Marks of WordPress, Shopify, Webflow, Wix, Squarespace, HubSpot, Google Tag Manager, Google Analytics, Cloudflare, Next.js, Nuxt, React, Intercom, Segment, Stripe, Drift, Zendesk |
hasOrganizationMarkup, contactPageFetched | Whether schema.org markup was found and whether the contact page was read |
input, status, error, scrapedAt | What you gave, and why a domain gave no record |
Example
{"input": "acme-robotics.example","domain": "acme-robotics.example","finalUrl": "https://www.acme-robotics.example/","httpStatus": 200,"name": "Acme Robotics","legalName": "Acme Robotics, Inc.","description": "Acme Robotics builds pick-and-place robots for small factories.","logo": "https://www.acme-robotics.example/static/img/acme-logo.svg","favicon": "https://www.acme-robotics.example/favicon.ico","industry": "industrial automation","employeeRange": "50-200","foundingYear": 2015,"foundingDate": "2015-03-01","hq": { "street": "100 Market Street, Suite 300", "city": "San Francisco", "region": "CA", "postalCode": "94105", "country": "US" },"socials": {"facebook": "https://www.facebook.com/AcmeRobotics","twitter": "https://twitter.com/acmerobotics","linkedin": "https://www.linkedin.com/company/acme-robotics","instagram": "https://www.instagram.com/acmerobotics","youtube": "https://www.youtube.com/@acmerobotics","github": "https://github.com/acme-robotics","tiktok": null,"crunchbase": "https://www.crunchbase.com/organization/acme-robotics"},"contactPageUrl": "https://www.acme-robotics.example/contact/","aboutPageUrl": "https://www.acme-robotics.example/about/","careersPageUrl": "https://jobs.lever.co/acme-robotics","emails": ["info@acme-robotics.example", "sales@acme-robotics.example"],"phone": "+1-415-555-0100","wikidataId": "Q99999999","techHints": ["WordPress", "Google Tag Manager", "Google Analytics", "Cloudflare", "Stripe"],"language": "en-us","titleTag": "Acme Robotics | Industrial automation that just works","canonicalUrl": "https://www.acme-robotics.example/","hasOrganizationMarkup": true,"contactPageFetched": false,"status": "OK","scrapedAt": "2026-10-19T12:00:00.000Z"}
FAQ
Is this an official API? No, it's an unofficial API built on public pages — each company's own website and the schema.org markup it publishes. Nothing is looked up in third-party databases.
Why are some fields null? Because the site does not state them. legalName, foundingYear, hq, employeeRange and phone come only from schema.org markup; industry only from a specific schema.org business type or the keywords meta tag. The Actor never guesses — hasOrganizationMarkup tells you whether the site had markup at all.
Does it return people, personal e-mails or phone numbers? No. Person profiles (linkedin.com/in/…), personal mailboxes (jane.doe@…) and team pages are skipped; only generic mailboxes from a fixed list (info@, hello@, contact@, support@, sales@, press@, team@, office@…) and the schema.org business line are kept, and descriptions are scrubbed of phone numbers and e-mail addresses.
Can I pass company names instead of domains? Single-word names, yes: "Apify" is tried as apify.com, "Stripe, Inc." as stripe.com. Multi-word names are not guessed (a wrong guess would enrich the wrong company) and come back as a free NOT_FOUND record asking for the domain.
Does it respect robots.txt? Yes, by default: a site whose robots.txt disallows the homepage gives a free ROBOTS_DISALLOWED record. Pages behind a bot wall or a login are not circumvented.
Like it? A short review on the Store page helps other people find this Actor. Something missing or broken? Tell us on the Issues tab — we read every one.
Related Actors
- Website Tech Stack Detector — CMS, frameworks and analytics of any site
- Google Maps Email Extractor — local businesses with their e-mail addresses
- Sitemap Extractor — every URL, date and image from a site's sitemaps
- Domain Checker — WHOIS, DNS and SSL expiry in bulk
- Article Extractor API — title, author, date and full text of any article