Manta Business Directory Scraper
Pricing
Pay per event
Manta Business Directory Scraper
Search manta.com's US business directory by category/keyword and city or state — one row per business with name, phone, address, category, SIC code, employee-count and revenue estimates, website, and founding year. Built for SMB lead-gen and local-market research.
Pricing
Pay per event
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
🎯 What this scrapes
manta.com aggregates US small/mid-size business listings into a free public directory searchable by category and location. This Actor wraps its search-results pages directly, writing one structured row per listing: name, phone, full address, category, SIC code, employee-count and revenue estimates, website, and founding year — firmographic signal most directory scrapers don't carry alongside contact data.
🔥 What we handle for you
- 🛡️ A real browser, not a script — Manta fronts its directory with a bot wall, so we drive a hardened Firefox (Camoufox) with a genuine fingerprint rather than an HTTP client pretending to be one.
- 🌐 Residential proxy rotation via Apify Proxy — fresh session and exit IP on every block.
- 🔁 Two separate retry budgets — a bot wall (429 / 403) and a dead proxy tunnel are different problems, so we retry them independently on fresh exits. A flaky proxy can no longer burn the budget reserved for real blocks, and the failure message names whichever actually gave out.
- 🧱 Rate-limit-aware pacing — when the target pushes back, we slow down instead of getting banned.
- 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, stable IDs, JSON / CSV / Excel export straight from the Apify Console.
- 💰 Pay-Per-Event pricing — you only pay for results that hit your dataset. No data, no charge.
💡 Use cases
- Sales/SDR prospecting — build a call or email list of SMBs in a category and city or state, with phone and address ready to dial.
- Local-market research — gauge how many businesses of a category operate in a metro, with firmographic (size/revenue/founding-year) signal alongside contact data.
- Agency lead lists — marketing agencies pulling fresh local-business leads by vertical without paying for a directory subscription.
- Competitive landscape mapping — see who else serves a category+location before entering a market.
⚙️ How to use it
- Click Try for free at the top of the page.
- Fill in the input form — most fields have sensible defaults.
- Click Start. Output streams into the run's dataset.
- Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
searchTerm | string | yes | 'plumbers' | Category or free-text keyword, e.g. "plumbers" or "marketing agencies". |
location | string | yes | 'Austin, TX' | US city+state ("City, ST") or a bare 2-letter state code. |
maxResults | integer | no | 300 | Cap on total rows emitted for the run. |
proxyConfiguration | object | no | {'useApifyProxy': True, 'apifyProxyGroups': ['RESIDENTIAL']} | Mandatory-by-default RESIDENTIAL proxy — manta.com is a confirmed Cloudflare Managed Challenge target (live-verified 202 |
Example input
{"searchTerm": "plumbers","location": "Austin, TX","maxResults": 10,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
📤 Output
Every row is one dataset item.
| Field | Type | Notes |
|---|---|---|
business_name | string | Business name from the result card. |
phone | ['string', 'null'] | Phone number, verbatim. |
street_address | ['string', 'null'] | Street address, best-effort parsed. |
city | ['string', 'null'] | City, best-effort parsed. |
state | ['string', 'null'] | State, best-effort parsed. |
zip_code | ['string', 'null'] | ZIP code, best-effort parsed. |
category | ['string', 'null'] | Primary category/industry label. |
sic_code | ['string', 'null'] | SIC code, when exposed on the listing. |
employee_count_estimate | ['string', 'null'] | Employee-count bucket as displayed, e.g. '1-4'. |
revenue_estimate | ['string', 'null'] | Revenue bucket as displayed, e.g. 'Less than $500,000'. |
website | ['string', 'null'] | Outbound website link, verbatim. |
year_established | ['integer', 'null'] | 4-digit founding year, when shown. |
listing_url | string | Absolute URL to the business's Manta profile page. |
search_term | string | Echo of the run's searchTerm input. |
location_query | string | Echo of the run's location input. |
scraped_at | string | ISO-8601 UTC timestamp when this row was recorded. |
Example output
{"business_name": "Austin Plumbing Pros LLC","phone": "(512) 555-0134","street_address": "4210 S Lamar Blvd","city": "Austin","state": "TX","zip_code": "78704","category": "Plumbing Contractors","sic_code": "1731","employee_count_estimate": "1-4","revenue_estimate": "Less than $500,000","website": "https://austinplumbingpros.example.com","year_established": 2011,"listing_url": "https://www.manta.com/c/mabc1234/austin-plumbing-pros-llc","search_term": "plumbers","location_query": "Austin, TX","scraped_at": "2026-08-01T12:00:00Z"}
💰 Pricing
Pay-Per-Event — you pay only when these events fire:
| Event | USD | What it is |
|---|---|---|
actor-start | $0.05 | One-off warm-up charge per run |
result | $0.0012 | Per dataset item |
Example: 1 000 results at the rates above ≈ $1.25. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.
🚧 Limitations
v1 scrapes search-results (list) pages only — individual company profile pages (full description, additional contacts, social links) are out of scope for this build. Employee-count and revenue fields ship as displayed bucket text, never coerced to numeric ranges. website may be Manta's own tracked redirect rather than the business's final domain. Each run is a full fresh scrape — no cross-run deduplication or incremental crawling.
❓ FAQ
Are employee count and revenue exact figures?
No — Manta displays these as ranges (e.g. "1-4 employees", "Less than $500,000"). We capture the bucket text verbatim rather than fabricating a precise number.
Does website always point to the business's own domain?
Not always — it may be Manta's own tracked redirect rather than the business's final domain. We capture the link verbatim; resolving redirects is a documented v2 candidate.
Why does this default to a residential proxy?
manta.com is a confirmed site-wide Cloudflare Managed Challenge (live-verified 403 + Cf-Mitigated: challenge across homepage, search-results, and profile pages). We default proxyConfiguration to Apify's RESIDENTIAL group so runs clear the challenge without you tuning anything.
What happens if a search hits a bot wall?
We relaunch the browser on a fresh residential exit and try again. If Manta is still walling us after the retry budget is spent, we fail the run loud with a message naming the actual cause — never a silent empty dataset wearing a green status.
💬 Your feedback
Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.