Yellow Pages Business Directory Scraper
Pricing
from $1.20 / 1,000 results
Yellow Pages Business Directory Scraper
Search Yellow Pages business listings by keyword and US city — name, phone, address, categories, rating, review count, and website for every result. We rotate fingerprints and proxies so blocks don't stop your dataset.
Pricing
from $1.20 / 1,000 results
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
yellowpages.com carries US business listings spanning name, phone, address, categories, ratings, and websites for local-service and retail businesses across every US city. This Actor searches its public results pages by keyword and city, writing one structured row per listing — no login, no scraping the individual business detail pages, just the search-results feed, paginated to your maxResults cap.
Give it a searchTerm (category or free-text keyword) and a location ("City, ST") and it pages through results until it hits your maxResults cap, the site's own listing total, or the last page — whichever comes first.
🔥 What we handle for you
- 🛡️ We rotate browser fingerprints (curl-cffi impersonation — Chrome / Firefox / Safari) so the target sees real-browser traffic, not Python.
- 🔁 We retry with exponential backoff on
408 / 429 / 5xxand honourRetry-After— up to 5 attempts per page. - 🌐 We rotate proxy sessions on every block — fresh session, fresh exit IP, before the next attempt.
- 🧱 We back off when the target rate-limits. Partial successes surface clearly; we never silently return an empty dataset.
- 🧊 We keep the dataset clean — Pydantic-validated rows, ISO-8601 timestamps, stable field shapes.
- 💰 You pay only for results that land. No data → no charge (only the small
actor-startwarm-up fee).
💡 Use cases
- Lead-gen list building — pull every plumber, roofer, or dentist in a target city into a call/email list ready for outreach.
- Local-market research — compare business density and category mix across cities before opening a new location or launching an ad campaign.
- Sales prospecting tools — ingest directory data as a feed for a broader prospecting or CRM-enrichment pipeline.
- Competitive scans — see how many competitors of a given category operate in a city, and how they compare on ratings and review counts.
⚙️ How to use it
- Click Try for free at the top of the page.
- Enter a
searchTerm(e.g."plumbers") and alocation(e.g."Austin, TX"). - Optionally raise or lower
maxResults(default300, cap3000). - Click Start. Matched listings stream into the run's dataset as they're found.
- Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
searchTerm | string | yes | — | Category or free-text keyword, e.g. "plumbers". |
location | string | yes | — | US city + state, "City, ST" shape, e.g. "Austin, TX". |
maxResults | integer | no | 300 | Cap on total rows emitted, 1-3000. |
proxyConfiguration | object | no | {"useApifyProxy": true} | Apify Proxy config. |
Example input
{"searchTerm": "plumbers","location": "Austin, TX","maxResults": 300,"proxyConfiguration": {"useApifyProxy": true}}
📤 Output
Every row is one business listing from a search-results page.
| Field | Type | Notes |
|---|---|---|
business_name | string | Business name. |
phone | string | null | Primary phone number, verbatim. |
street_address | string | null | Street address; null when absent. |
city | string | null | City, parsed from the locality text. |
state | string | null | US state abbreviation. |
zip_code | string | null | ZIP code. |
categories | array | Business categories, DOM order — empty array (never null) when absent. |
website | string | null | Website link as listed by Yellow Pages, verbatim — may be a tracked redirect, not necessarily the business's own domain. |
rating | number | null | Star rating, 1.0-5.0 in 0.5 steps; null when unrated. |
review_count | integer | null | Number of reviews; null when unrated. |
listing_url | string | Absolute URL to the business's Yellow Pages listing 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": "ARS / Rescue Rooter","phone": "(512) 837-9500","street_address": "1500 W Anderson Ln","city": "Austin","state": "TX","zip_code": "78757","categories": ["Plumbers", "Air Conditioning Contractors & Systems", "Heating Contractors & Specialties"],"website": "https://www.ars.com/austin","rating": 4.5,"review_count": 128,"listing_url": "https://www.yellowpages.com/austin-tx/mip/ars-rescue-rooter-473194899","search_term": "plumbers","location_query": "Austin, TX","scraped_at": "2026-07-30T12:00:00Z"}
💰 Pricing
Pay-Per-Event — you pay only when these events fire:
| Event | USD | What it is |
|---|---|---|
actor-start | $0.01 | One-off warm-up charge per run |
result | $0.0012 | Per business listing row written to the dataset |
Example: 1 000 rows ≈ $1.21 (1 000 × $0.0012 + one $0.01 start charge). No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.
🚧 Limitations
v1 covers yellowpages.com US search-results pages only — not individual business detail/profile pages, not Canada's yellowpages.ca or any other country's directory, and not geocoding/validation of the location input against a real city/state gazetteer (format-shape validation only). The website field is captured verbatim with no redirect-following. Each run is a full fresh scrape; there is no cross-run deduplication or incremental/resume crawling.
❓ FAQ
Does this scrape individual business detail pages?
Not in v1. This Actor scrapes yellowpages.com's search-results pages only (name, phone, address, categories, rating, review count, and website per listing); detail-page enrichment (hours, full photo set, additional phones) is a v2 candidate.
Is the website field the business's own domain?
Not always. It's captured verbatim as listed by Yellow Pages — sometimes a tracked redirect or a micro-site rather than the business's own domain. We don't silently "correct" it.
Do I need a Yellow Pages account?
No. This Actor reads yellowpages.com's public search-results pages directly — no login required.
What happens if a run gets blocked mid-way?
We rotate browser fingerprints and proxy sessions on every block and retry with backoff. If the target still stops us, the run reports exactly how many rows it collected before stopping — never a silent empty dataset with 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.