Company Enrichment by Domain: Logo, Emails, Socials, Tech
Pricing
from $5.00 / 1,000 company enricheds
Company Enrichment by Domain: Logo, Emails, Socials, Tech
Turn a list of company domains into rich rows: company name, description, logo, emails, phones, LinkedIn and other socials, address, country, technologies, email provider and domain age. Read from each company's own website and public registry data.
Pricing
from $5.00 / 1,000 company enricheds
Rating
0.0
(0)
Developer
Charles Markette
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Company Enrichment by Domain turns a list of company domains or websites into one company profile per row: company name, description, logo and favicon, emails, phone numbers (E.164), social profiles (LinkedIn, X, Facebook, Instagram, YouTube, TikTok, GitHub, Pinterest, Crunchbase), postal address, founding year, language, a country hint, the technologies the site runs on, the email provider behind the domain (Google Workspace, Microsoft 365…) and the domain's age and registrar. Paste domains, URLs or work email addresses, or point it at any Apify dataset of leads and the columns are added next to each item.
Everything comes from the company's own public website and public DNS / registry (RDAP) data. No third-party data vendors, no LinkedIn scraping (it only records the LinkedIn link the company puts on its own site), no guessing.
What it reads, per company
- The home page.
- Up to 3 (configurable, 0–10) company pages linked from it: about, contact, imprint and similar pages, found by their link text and URL in many languages (About us, Contact, Impressum, Über uns, Qui sommes-nous, Quiénes somos, Chi siamo…). Blog posts, product pages, carts and logins are never read.
- The domain's MX records (email provider) and its RDAP record (registration date, registrar).
At most 2 requests go to one website at a time, busy answers (429/5xx) are retried with backoff (honouring Retry-After), and every request identifies the tool in its User-Agent. Addresses that resolve to private or internal networks are never visited, including on redirects.
Use cases
- Lead enrichment: add logo, description, LinkedIn page and a contact email to every company a Google Maps or directory scraper found.
- CRM clean-up: fill in missing company names, logos, social links and countries for the domains already in your CRM.
- Lead scoring: domain age, email provider (Google Workspace vs Microsoft 365), technologies (Shopify, WordPress, HubSpot…) and country in one pass.
- Market maps: turn a list of competitor or partner domains into a table with names, descriptions, logos and tech stacks.
- Outreach prep: the published company emails and phones, plus the social profiles to follow.
How to use it
- Add Company domains or websites (
acme.com,https://www.acme.com/en/,sales@acme.com), and/or pick a Dataset to enrich. For datasets, set Domain fields if your website column isn't named website, url, domain, companyWebsite or email. - Choose what to collect: Company pages per domain, Technologies and Email provider and domain age (all on by default).
- Run it. Export the rows as CSV, Excel or JSON, or chain the run with an integration.
Input example
{"domains": ["acme-widgets.com", "https://www.boulangerie-martin.fr", "sales@globex.io"],"maxPagesPerDomain": 3,"includeTechnologies": true,"includeDomainInfo": true}
Enrich a dataset of leads
{"datasetId": "<your dataset ID or {{resource.defaultDatasetId}}>","domainFields": ["website", "company.url", "email"],"keepItemFields": true}
Output example (one row, lists shortened)
{"inputUrl": "acme-widgets.com","domain": "acme-widgets.com","finalUrl": "https://acme-widgets.com/","statusCode": 200,"companyName": "Acme Widgets Inc.","description": "Acme Widgets makes industrial widgets for factories worldwide.","logoUrl": "https://acme-widgets.com/img/acme-logo.svg","logoSource": "schema","faviconUrl": "https://acme-widgets.com/favicon-32.png","primaryEmail": "press@acme-widgets.com","emails": ["info@acme-widgets.com", "press@acme-widgets.com", "support@acme-widgets.com", "sales@acme-widgets.com"],"primaryPhone": "+14155550100","phones": ["+14155550100", "+14155550132"],"socials": {"linkedin": "https://www.linkedin.com/company/acme-widgets","x": "https://x.com/acmewidgets","facebook": "https://www.facebook.com/acmewidgets","instagram": "https://www.instagram.com/acme.widgets","youtube": "https://www.youtube.com/@acmewidgets","tiktok": null,"github": "https://github.com/acme-dev","pinterest": null,"crunchbase": "https://www.crunchbase.com/organization/acme-widgets"},"address": {"streetAddress": "1 Main St", "addressLocality": "Springfield", "addressRegion": "IL", "postalCode": "62701", "addressCountry": "United States"},"addressText": "1 Main St, Springfield, IL 62701, United States","foundingYear": 2009,"language": "en-US","countryHint": "US","countryHintSource": "schemaAddress","technologies": ["WordPress", "Google Tag Manager", "Nginx"],"techCategories": {"CMS": ["WordPress"], "Tag manager": ["Google Tag Manager"], "Web server": ["Nginx"]},"emailProvider": "Google Workspace","mxRecords": ["aspmx.l.google.com", "alt1.aspmx.l.google.com"],"domainCreatedAt": "2009-03-12T10:00:00Z","domainAgeYears": 17.6,"registrar": "Example Registrar, LLC","domainInfoNote": null,"pagesFetched": 4,"pageUrls": ["https://acme-widgets.com/", "https://acme-widgets.com/about-us", "https://acme-widgets.com/contact", "https://acme-widgets.com/privacy"],"enrichedAt": "2026-10-22T12:00:00Z","error": null}
Where each field comes from
| Field | Source, in order of preference |
|---|---|
companyName | schema.org Organization name (JSON-LD) → og:site_name → the home page <title>, cleaned ("Home | Acme Widgets" → "Acme Widgets") |
description | <meta name="description"> → og:description → schema.org description (home page first) |
logoUrl, logoSource | schema.org logo (schema) → the largest apple-touch-icon (appleTouchIcon) → og:image as a fallback (ogImage; often a social banner rather than a logo) |
faviconUrl | the largest declared <link rel="icon">; null when the site declares none |
emails | mailto: links, page text (including name [at] domain [dot] com and Cloudflare-protected addresses) and JSON-LD; deduplicated; addresses on the company's domain first. Placeholders, image file names and no-reply addresses are dropped. |
phones | tel: links, JSON-LD telephone and labelled numbers ("Phone:", "Tel.", "Tél :"…) in page text, as E.164. Numbers without a + code are read with the domain's country (acme.de → DE), else your Default country, else US. |
socials | one company-level link per platform from the site's links and JSON-LD sameAs. Share/intent buttons, posts, videos and personal LinkedIn profiles (/in/…) are skipped. |
address, addressText | schema.org PostalAddress in the site's JSON-LD only |
foundingYear | schema.org foundingDate only; never guessed from page text |
language | the home page's <html lang> |
countryHint, countryHintSource | the schema.org address country (schemaAddress) → the country of the phone numbers written with a + code (phone) → the country-code TLD (ccTLD; generic-use TLDs such as .io, .co, .ai don't count) |
technologies, techCategories | 221 technology fingerprints matched against the home page's HTML, scripts, headers and cookies |
emailProvider | the MX records: Google Workspace, Microsoft 365, Zoho, Proton, Other, or None when the domain has no MX records; null when not looked up |
domainCreatedAt, domainAgeYears, registrar | the registry's RDAP record; null when unavailable (domainInfoNote says why) |
Rows for companies that couldn't be enriched have every company field empty and an error in plain English. A run summary (companies enriched and failed, pages read, why the run stopped) is saved as OUTPUT in the key-value store.
How much does it cost?
Pay per event: $5.00 per 1,000 companies ($0.005 per company whose website was reached), Apify platform usage included. A company counts when its home page answered with a web page, however few fields it publishes. Unreachable sites are free: domains that don't resolve, connection failures, error or bot-protection answers (403, 429, 503…), private addresses, input that isn't a domain, and free-email domains (gmail.com…) all give a free row with an error. Repeats skipped by Enrich each domain once are free too. Each run also has Apify's run start fee of $0.005 (one start event per GB of run memory; the default 512 MB run is charged one).
Worked examples:
- 1,000 company websites, all reachable: 1,000 × $0.005 = $5.00.
- 500 leads from a Google Maps run, 60 of which have a dead website: 440 × $0.005 = $2.20.
If you set a maximum cost per run, the Actor stops cleanly at that limit, and a resumed run continues after the rows already stored.
FAQ and limits
Does it return employee counts, revenue or funding?
No. It returns only what the company publishes on its own website plus public DNS and registry data. It doesn't use data vendors, doesn't estimate company size, and doesn't log in to or scrape LinkedIn, Crunchbase or any other platform (it records the links the company itself publishes).
Why are some fields empty?
Because the site doesn't publish them where the Actor looks. Many sites have no schema.org data (so no address or founding year), no apple-touch-icon (so the logo falls back to og:image, or is empty), or a contact form instead of an email address. Sites that build their pages with JavaScript in the browser may show little to a plain HTTP reader. Emails or phones shown as images can't be read.
Why is the registration date or registrar missing?
Some registries don't offer RDAP (for example several country-code TLDs), and some publish less in it, or rate-limit it. domainInfoNote says what happened. For full WHOIS fallback on those TLDs, use Domain WHOIS & DNS Lookup.
How reliable is the country hint?
It's a hint, and countryHintSource says what it's based on. A schema.org address is the company's own statement; a phone country or ccTLD is a signal, not proof (a .de domain can belong to a US company).
Is the logo always a logo?
schema and appleTouchIcon logos almost always are. ogImage is the page's social sharing image: often a logo, sometimes a banner or photo. Filter on logoSource if that matters.
Does it respect robots.txt?
It reads at most the home page and a few company pages per site (4 pages at the default), like a visitor who checks a company's About and Contact pages, and doesn't crawl beyond that. It doesn't read robots.txt. If you need robots.txt-aware crawling of more pages, use Website Contact Info Scraper.
What does "Enrich each domain once" do with a dataset?
With it on (the default), the second lead at the same company domain is skipped and not output. Turn it off to get one row per item, each charged as its own company.
Use responsibly
The emails and phones are business contact details the companies publish publicly. How you use them is up to you and the law where you and your contacts are: privacy and anti-spam rules such as the GDPR (EU/UK) and CAN-SPAM (US) apply to storing and emailing them. Respect opt-outs and don't use the results for unsolicited bulk messaging where that's not allowed.
Related Actors
| Actor | Use it to |
|---|---|
| Website Contact Info Scraper | Crawl more pages per site (up to 30, robots.txt-aware) for every published email, phone and social profile. |
| Website Tech Stack Detector | Get every detected technology with confidence, version and evidence, plus Shopify store details and tracking IDs. |
| Domain WHOIS & DNS Lookup | Full registration data (expiry, nameservers, DNSSEC, WHOIS fallback) and SPF/DMARC for the same domains. |
| Phone Number Validator & Formatter | Get the type (mobile, landline), carrier and region of the phones found. |
| Merge & Deduplicate Datasets | Keep only new companies between runs before enriching them. |
| Google Sheets Sync | Send the enriched rows to a Google Sheet. |
Phone parsing: phonenumbers (Google's libphonenumber). Domain parsing: tldextract with the Public Suffix List. RDAP servers: IANA bootstrap list.