Company Enrichment by Domain – B2B Company Card avatar

Company Enrichment by Domain – B2B Company Card

Pricing

from $14.00 / 1,000 company enricheds

Go to Apify Store
Company Enrichment by Domain – B2B Company Card

Company Enrichment by Domain – B2B Company Card

Company enrichment API by domain. Input: domains or URLs. Returns one B2B company card per domain: DMARC/SPF/DKIM email security, tech stack, CMS, ecommerce, llms.txt AI readiness, careers/ATS hiring, public emails, phones, socials, AU ABN match and overall score. $0.02/company; blocked rows free.

Pricing

from $14.00 / 1,000 company enricheds

Rating

0.0

(0)

Developer

AusBizStack Intelligence

AusBizStack Intelligence

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Give it a list of company domains and get one B2B company card per domain. Each card covers email security (MX provider, SPF, DMARC, DKIM provider), tech stack, CMS and ecommerce platform, llms.txt and AI-search readiness, careers/ATS hiring signals, public contact emails, phones and social links, an optional Australian ABN match, and an overall score. You pay only for domains that return a full card.

▶️ Try it now

The input is prefilled with stripe.com, shopify.com and hubspot.com. Click Start: three company cards arrive in about 5 seconds and cost about $0.06.

Real rows from our cloud test run (512 MB–1 GB, no proxy):

domainstatusmail providerDMARCCMS / ecommercellms.txtATS (open roles)ABN matchoverall scorecharged
stripe.comokGoogle WorkspacerejectContentful✅––76✅
shopify.comokGoogle WorkspacerejectShopify / Shopify✅––62✅
hubspot.comokGoogle WorkspacerejectHubSpot CMS✅––78✅
cultureamp.comokProofpointreject–✅Greenhouse (33)Culture Amp Pty Ltd · medium79✅
figma.comokGoogle WorkspacequarantineSanity❌Greenhouse (141)–74✅
jbhifi.com.auokProofpointquarantineContentful / Shopify✅–JB HI-FI LIMITED · medium78✅
linktr.eeokGoogle WorkspacerejectNext.js (framework)✅careers page (~27 role links)LINKTREE PTY LTD · high75✅
canva.comblockedGoogle Workspacereject– (Cloudflare challenge)––––$0

Every input gets exactly one row, including failures, so you can join results back to your list. DNS results (MX, SPF, DMARC, DKIM) are still returned on blocked rows, and those rows are free.

💰 What it costs

Pay-per-event: $0.02 per company card (company-enriched). Blocked, unreachable, timed-out and invalid inputs are never charged.

VolumeFREE plan ($0.02)BRONZE ($0.018)SILVER ($0.016)GOLD / PLATINUM / DIAMOND ($0.014)
100 domains$2.00$1.80$1.60$1.40
1,000 domains$20.00$18.00$16.00$14.00
10,000 domains$200.00$180.00$160.00$140.00

A tiny start fee ($0.00005 per GB of memory) applies per run. Set Max cost per run in the run options and the Actor stops cleanly when it reaches your budget. Rows that are not charged are marked "charged": false.


💳 What counts as a billed result

You are charged one company-enriched event ($0.02) per domain only when the row is status: "ok" ("charged": true). That is the only per-result charge. Apify also adds its standard tiny start fee per run (apify-actor-start).

Row in your datasetCharged?
status: "ok"Yes, $0.02
blocked, unreachable, timeout, errorNo, $0
invalid_input (not a domain, URL or email)No, $0
duplicate_input (same domain as an earlier line)No, $0

Accuracy: failed fetches (timeouts, network errors, 403 / 429 / 5xx and bot-challenge pages) are retried and then reported as fetch_failed, never as missing; only a real 404 / 410 counts as missing (see llmsTxtStatus, robotsTxtStatus, sitemapStatus). Unverified checks are left out of aiReadinessScore (aiReadinessScoreIsPartial: true), and a domain that is unreachable after retries is not charged.

A non-Australian company costs exactly the same as an Australian one. The ABN block is simply null and auFieldsNote says why (see below).

🧾 Accepted input formats

Paste your list as-is into domains. Each line can be a bare domain (stripe.com), a domain with www., mixed case, spaces or a trailing slash (WWW.Stripe.com/), a full URL (https://www.stripe.com/pricing/) or an email address (sales@stripe.com, mailto:sales@stripe.com). All of these resolve to stripe.com.

Inputs are cleaned and de-duplicated before anything runs or is charged. A second line for the same domain comes back as a free duplicate_input row with duplicateOf, and every row keeps what you typed in input.

Australian-only fields: abn (ABN, GST, entity status) only applies to Australian businesses. For a non-Australian domain it is null, auFieldsApplicable is false and auFieldsNote reads "Not an Australian domain - ABN/GST/entity status fields only apply to Australian businesses, so they are left empty (null)."

📊 Measured quality (not marketing numbers)

We ran 39 real public company domains on the Apify cloud (SaaS, fintech, AU retail, ecommerce brands, dev tools), with no proxy:

MetricResult
Full company cards (ok)33 / 39 = 85%
Blocked by bot protection (Cloudflare / Akamai)6: canva.com (twice), bunnings.com.au, woolworths.com.au, kmart.com.au and seek.com.au. These were returned as blocked with DNS and email-security data, not charged
Invalid input test (not a domain)returned as invalid_input, not charged
Run time36 domains in 59 s (concurrency 8), 3 domains in 4 s
Peak memory210 MB, so the 512 MB default is enough
Our platform costabout $0.0001 per domain, so the price is sustainable
Australian ABN matches9 of the 10 ok sites with an Australian signal were matched to a registered ABN (1 high, 8 medium). nab.com.au returned null rather than a weak guess. No match means abn: null; we do not guess

Sites behind hard bot protection block data-centre IPs. They come back as a clear blocked row with the reason, and you pay nothing.

✨ What is in each card

SectionFields
Email securitymxProvider (Google Workspace, Microsoft 365, Proofpoint, Mimecast, Cisco…), spfStatus, spfAuthorisedSenders, spfDnsLookupsApprox, dmarcPolicy, dmarcPct, dmarcRuaAddresses, dkimSelectors, dkimProviders (SendGrid, Amazon SES, Mailchimp, HubSpot…), spoofingRisk, emailSecurityScore
Tech stackcms (WordPress, Shopify, Webflow, Contentful, Sanity, AEM, Sitecore, HubSpot CMS…), frontendFramework (Next.js, Nuxt, Astro…), ecommercePlatform, isEcommerce, paymentProviders, techStack, techByCategory, techCount
AI-search readinesshasLlmsTxt, hasLlmsFullTxt, llmsTxtTitle, hasRobotsTxt, hasSitemapXml (true / false / null when it could not be fetched), llmsTxtStatus / robotsTxtStatus / sitemapStatus (present, missing, invalid, fetch_failed), blockedAiBots (GPTBot, ClaudeBot, PerplexityBot…), hasOrganizationSchema, aiReadinessScore
Hiring signalscareersPageUrl, atsProvider (Greenhouse, Lever, Ashby, Workday, SmartRecruiters…), atsBoardUrl, openRolesCount (from the public ATS board API when available), openRolesEstimateFromPage, hiringSignal
ContactpublicEmails, phones, socialLinks (LinkedIn, X, Facebook, Instagram, YouTube, TikTok…)
Australian ABNabn object: ABN, registered name, entity type, status, GST, state/postcode, business names, matchSource, matchConfidence (high/medium/low) and ABR link. This is null when there is no confident match or the ABR page is blocked
Web & scorewebSecurityHeadersScore, missingSecurityHeaders, overallScore (0–100), scoreBreakdown, keyFindings

Everything is done in one run in one process, with no calls to other Actors and no API keys needed.

📥 Input

{
"domains": ["stripe.com", "https://www.shopify.com/pricing", "hubspot.com"],
"checkDkim": true,
"checkHiring": true,
"matchAustralianAbn": true,
"maxContactPages": 1,
"concurrency": 8
}
  • domains takes bare domains, full URLs or www. hosts. Duplicates are removed.
  • matchAustralianAbn runs only when the site looks Australian (.au domain, AU phone number, an ABN printed on the site, or "Australia" in the title). You can add an abrGuid (a free ABR web-services GUID) for the official lookup.
  • maxItems caps the number of domains processed.
  • perDomainTimeoutSecs defaults to 75 (each check is retried up to twice before it is reported as fetch_failed).

📤 Output sample (trimmed)

{
"domain": "linktr.ee",
"status": "ok",
"charged": true,
"companyName": "Linktree",
"countryDetected": "AU",
"mxProvider": "Google Workspace",
"spfStatus": "strict (-all)",
"dmarcPolicy": "reject",
"dkimProviders": ["Google Workspace", "SendGrid"],
"spoofingRisk": "low",
"emailSecurityScore": 100,
"frontendFramework": "Next.js",
"techStack": ["Intercom", "Amplitude", "Google Tag Manager", "Next.js"],
"hasLlmsTxt": true,
"aiReadinessScore": 75,
"careersPageUrl": "https://linktr.ee/about/careers",
"openRolesEstimateFromPage": 27,
"hiringSignal": "careers page found",
"publicEmails": ["press@linktr.ee"],
"socialLinks": {"linkedin": "https://www.linkedin.com/company/linktree", "x_twitter": "https://x.com/Linktree_"},
"abn": {"abn": "68 608 721 562", "entityName": "LINKTREE PTY LTD", "matchSource": "website_abn", "matchConfidence": "high"},
"webSecurityHeadersScore": 60,
"overallScore": 75,
"scoreBreakdown": {"emailSecurity": 100, "aiSearchReadiness": 75, "webSecurityHeaders": 60, "contactability": 70, "techMaturity": 52}
}

status is one of ok (charged), blocked, unreachable, timeout, invalid_input or duplicate_input (all free).

🤖 Use it from AI agents (MCP)

Add this Actor to Claude, Cursor, ChatGPT or any MCP client through the Apify MCP server:

https://mcp.apify.com/?actors=ausbizstack/company-enrichment-by-domain

Then ask, for example: "Enrich these 20 domains and tell me which use Microsoft 365, have no DMARC, and are hiring on Greenhouse." The agent gets one structured JSON row per domain.

🔌 API (curl)

curl -X POST "https://api.apify.com/v2/acts/ausbizstack~company-enrichment-by-domain/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"domains":["stripe.com","shopify.com","hubspot.com"]}'

🎯 Use cases

  • Lead enrichment and scoring: add the mail provider, CMS, ecommerce platform and hiring status to a CRM list before outreach.
  • Email deliverability / security prospecting: find companies with dmarcPolicy: none or a soft SPF.
  • Agency prospecting: find Shopify or WordPress stores, sites without llms.txt, or sites that block AI crawlers.
  • Recruiting / sales triggers: see which companies have an ATS board and how many open roles they list.
  • Australian B2B data: match a website to its ABN and registered entity.

❓ FAQ

Is a blocked site charged? No. blocked, timeout, unreachable, invalid_input and duplicate_input rows are free and say why.

Does it use proxies? No. It makes polite direct requests: the homepage, up to 3 contact/about pages, robots.txt, llms.txt, sitemap.xml and the careers page.

How accurate is tech detection? It is signature-based on the homepage HTML, scripts and headers. Ecommerce platforms are only reported when the platform's own markers are present, not when the name is just mentioned on the page.

Why is abn null? Either the site does not look Australian, no registered entity matched the company name confidently, or the ABR lookup page was unavailable. We never return a guessed ABN.

Is the data personal? It returns only company-level public information published on the company's own website and in public DNS.

Built by AusBizStack. Issues and feature requests are welcome on the Issues tab.