Business Website Scraper: Name, Contact and Tech Stack
Pricing
from $5.00 / 1,000 business returneds
Business Website Scraper: Name, Contact and Tech Stack
Given a domain, returns one validated business profile: business name and its source, published contact details, and detected technology platforms with evidence. Pay $0.005 per business returned; errors and blocked pages are free.
Pricing
from $5.00 / 1,000 business returneds
Rating
0.0
(0)
Developer
Agent Harbor LLC
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Security
Limited permissionsShare
One row per business domain with the business name and where it was read from, the contact details the site publishes, and the technology platforms it runs, each with the evidence it was detected from. Every platform claim is checked against its own evidence before you see it, and unsupported claims are struck.
What it does
Give it business domains and it returns, for each one:
- the business name and the page element it came from (for example
og:site_name), - the contact details the site publishes, with a confidence and the evidence (fields are
nullwhen the site shows none), - the technology platforms the site runs (email marketing, analytics, SEO tags and more), each with category, confidence, detection method and evidence,
- a
validationresult for the profile.
You pay only for businesses returned with a validated profile. Invalid domains, dead or blocked sites, timeouts and anything that fails the check are listed in the dataset with the reason, and are free. There is no AI in the scrape itself.
Who it's for
- Sales and lead-qualification teams that need a clean name, contact and tech stack for a list of domains.
- Agencies that want to know which platforms a prospect runs before pitching.
- AI agents that need a validated business profile as data (see the FAQ).
Input
| Field | Type | Notes |
|---|---|---|
domains | list of strings | Domains (example.com) or URLs; up to 100 per run (each entry past 100 gets a free error row); duplicates removed. Private addresses, IPs and ports are rejected. |
Example input:
{"domains": ["mailchimp.com"]}
Each entry is one business. Set a maximum charge on the run and the Actor stops there. The Output tab has table views for the overview, contact details and technology platforms.
Output sample
One dataset row per input. Fields:
| Field | Meaning |
|---|---|
domain | The cleaned domain |
status | ok (returned and charged), not_charged, invalid_input or skipped |
charged | true only for ok rows |
business_name, business_name_source | Name and the page element it was read from (for example og:site_name) |
contact | Contact surface found on the site, with a confidence; fields are null when the site publishes none |
platforms | Detected platforms: name, category, confidence and detection method |
validation | The check result for this profile |
reason, error | Why a row was not charged |
result | The full profile as returned by Agent Harbor |
Example ok row from a real run of this Actor (run QHeltxvJHj6eyFR5r, 2026-10-13, input mailchimp.com). The validation and full result fields are left out here for length; contact is all null because the home page publishes no contact details.
{"domain": "mailchimp.com","status": "ok","charged": true,"business_name": "Mailchimp","business_name_source": "og:site_name","contact": {"email": null,"name": null,"confidence": "unknown","evidence": null},"platforms": [{"platform": "Mailchimp","category": "email_marketing","confidence": "high","method": "script_src","evidence": "https://mailchimp.com/cdn/product/release/dist/js-src/ecs/cookie-preferences-manager.20fc3264ba1c0834.js","ah_integrates": false},{"platform": "Google Tag Manager","category": "analytics","confidence": "high","method": "script_src","evidence": "https://www.googletagmanager.com/gtm.js?id=GTM-MCZTKL>g_health=1","ah_integrates": false},{"platform": "Google Search Console","category": "seo","confidence": "high","method": "meta_tag","evidence": "<meta name=\"google-site-verification\" content=\"Xg1n4sbg_Ovzp2zQ3gVV-GBaWZKQeyuePwOikbHbwDU\">","ah_integrates": false},{"platform": "Bing Webmaster","category": "seo","confidence": "high","method": "meta_tag","evidence": "<meta content=\"\" name=\"msvalidate.01\">","ah_integrates": false}],"reason": "ok"}
Pricing example
Pay per event, nothing else: $0.005 per business (event business-scraped), plus $0.00005 once per run for Apify's start event. The price is set in the Apify Console (this Actor's actor.json carries no pricing block); the figure here is the Console price recorded on 2026-10-29, and the Console is the source of truth.
| Size | Cost (plus $0.00005 per run) |
|---|---|
| 1 business | $0.005 |
| 10 businesses | $0.05 |
| 100 businesses | $0.50 |
| 1000 businesses | $5.00 |
So 100 businesses = $0.50 plus the start event. A business is charged only when it came back with a validated profile and its row was saved.
| Event | Charged when | Not charged when |
|---|---|---|
business-scraped | a business came back with a validated profile and its row was saved | the domain was invalid, the site was dead or blocked, the profile failed the check, the service was down, or you reached your maximum cost |
Limits
- One page per business: the home page the domain resolves to. Contact details on other pages may be missed.
- Up to 100 domains per run; about 30 requests per minute across all users, so a busy period can return
rate_limitedrows (free; retry later). - A run fails fast, with no charge, if Agent Harbor's service is unreachable.
- A name, contact or platform is only what the home page shows. A missing contact means the page publishes none, not that the business has none.
- The time a run takes was not measured for the example input; each domain is given up to 90 seconds.
FAQ
Why is my row not_charged?
The reason says: an invalid domain, a blocked or dead site, a profile that failed the check, a busy service (rate_limited) or a timeout. None of those cost anything.
Why is contact empty?
Many home pages publish no contact details. The Actor reports what the page shows and does not guess.
Is there AI in this? No. The scrape is deterministic and the validation strikes any platform claim its own evidence does not support.
Use with AI agents / MCP
- Apify MCP server: add
agent-harbor-llc/scrape-business-actorto thetoolslist, for examplehttps://mcp.apify.com?tools=agent-harbor-llc/scrape-business-actor. Running Actors through it needs your Apify login or API token. - Keep spend bounded: pass
maxTotalChargeUsdwhen you start a run through the API, or set the maximum cost in the Console. - Payments: agents without an Apify account can pay for runs with Apify's agentic payments (x402 USDC on Base, prepaid tokens, or Skyfire). The same service is also sold directly over x402 at
https://x402.agentharbor.agency/scrape($0.01 per call, USDC on Base; that price is separate from the Apify price above).
Who built it? Built and run by Agent Harbor LLC.
Changelog
0.2 (2026-10-31)
- Added the dataset schema with three table views (Overview, Contact, Technology platforms), an output schema linking to them, full input descriptions, an example input and this README in the Store order.
- The README price line now matches the Console price ($0.005 per business; it said $0.01).
- No change to the run behavior, the output row shape or the charge.
0.1: first version. See CHANGELOG.md for the full list.