Company Enrichment by Domain – B2B Company Card
Pricing
from $14.00 / 1,000 company enricheds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
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):
| domain | status | mail provider | DMARC | CMS / ecommerce | llms.txt | ATS (open roles) | ABN match | overall score | charged |
|---|---|---|---|---|---|---|---|---|---|
| stripe.com | ok | Google Workspace | reject | Contentful | ✅ | – | – | 76 | ✅ |
| shopify.com | ok | Google Workspace | reject | Shopify / Shopify | ✅ | – | – | 62 | ✅ |
| hubspot.com | ok | Google Workspace | reject | HubSpot CMS | ✅ | – | – | 78 | ✅ |
| cultureamp.com | ok | Proofpoint | reject | – | ✅ | Greenhouse (33) | Culture Amp Pty Ltd · medium | 79 | ✅ |
| figma.com | ok | Google Workspace | quarantine | Sanity | ❌ | Greenhouse (141) | – | 74 | ✅ |
| jbhifi.com.au | ok | Proofpoint | quarantine | Contentful / Shopify | ✅ | – | JB HI-FI LIMITED · medium | 78 | ✅ |
| linktr.ee | ok | Google Workspace | reject | Next.js (framework) | ✅ | careers page (~27 role links) | LINKTREE PTY LTD · high | 75 | ✅ |
| canva.com | blocked | Google Workspace | reject | – (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.
| Volume | FREE 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 dataset | Charged? |
|---|---|
status: "ok" | Yes, $0.02 |
blocked, unreachable, timeout, error | No, $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:
| Metric | Result |
|---|---|
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 time | 36 domains in 59 s (concurrency 8), 3 domains in 4 s |
| Peak memory | 210 MB, so the 512 MB default is enough |
| Our platform cost | about $0.0001 per domain, so the price is sustainable |
| Australian ABN matches | 9 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
| Section | Fields |
|---|---|
| Email security | mxProvider (Google Workspace, Microsoft 365, Proofpoint, Mimecast, Cisco…), spfStatus, spfAuthorisedSenders, spfDnsLookupsApprox, dmarcPolicy, dmarcPct, dmarcRuaAddresses, dkimSelectors, dkimProviders (SendGrid, Amazon SES, Mailchimp, HubSpot…), spoofingRisk, emailSecurityScore |
| Tech stack | cms (WordPress, Shopify, Webflow, Contentful, Sanity, AEM, Sitecore, HubSpot CMS…), frontendFramework (Next.js, Nuxt, Astro…), ecommercePlatform, isEcommerce, paymentProviders, techStack, techByCategory, techCount |
| AI-search readiness | hasLlmsTxt, 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 signals | careersPageUrl, atsProvider (Greenhouse, Lever, Ashby, Workday, SmartRecruiters…), atsBoardUrl, openRolesCount (from the public ATS board API when available), openRolesEstimateFromPage, hiringSignal |
| Contact | publicEmails, phones, socialLinks (LinkedIn, X, Facebook, Instagram, YouTube, TikTok…) |
| Australian ABN | abn 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 & score | webSecurityHeadersScore, 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}
domainstakes bare domains, full URLs orwww.hosts. Duplicates are removed.matchAustralianAbnruns only when the site looks Australian (.audomain, AU phone number, an ABN printed on the site, or "Australia" in the title). You can add anabrGuid(a free ABR web-services GUID) for the official lookup.maxItemscaps the number of domains processed.perDomainTimeoutSecsdefaults to 75 (each check is retried up to twice before it is reported asfetch_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: noneor 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.