Yellow Pages US Scraper — Business Leads & Reviews
Pricing
from $1.00 / 1,000 business listing extracteds
Yellow Pages US Scraper — Business Leads & Reviews
Scrape US business listings from yellowpages.com — name, phone, address, website, email, hours, services, ratings, reviews, social links, BBB accreditation, and trust signals. Search by keyword + location, paste category URLs, or pull individual business profiles.
Pricing
from $1.00 / 1,000 business listing extracteds
Rating
0.0
(0)
Developer
Muhammad Afzal
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Extract US business listings from yellowpages.com at scale. Get business name, phone, address, website, email, hours, services, categories, ratings, review counts, social links, BBB accreditation, claimed status, years in business, and optional customer reviews — all in clean, CRM-ready structured JSON.
Search by keyword + location, paste category URLs, or pull individual business profiles. Mix all three input modes in a single run. Optimized for B2B lead generation, local-SEO analysis, market research, and AI-agent pipelines.
What it does
- Search mode: provide
searchTerms+locations(cross-joined) — e.g.["plumber", "electrician"]×["Boston, MA", "Austin, TX"]= 4 searches - URL mode: paste yellowpages.com search URLs, city-category pages (
/boston-ma/plumbers), or individual business profiles (/mip/<slug>-<id>) - Multi-input: combine search terms and direct URLs in one run
- Pagination: crawls up to
maxPagesPerSearchresult pages per search - Detail enrichment: visits each business profile page for the full field set (email, hours, services, socials, trust signals)
- Reviews: optional per-business customer reviews (newest-first, capped via
maxReviewsPerBusiness) - Sort: by relevance (default), distance, name, or rating
Use cases
- Build targeted B2B prospect lists by category and ZIP/city for outbound sales
- Pull every business in a category or metro for market coverage and competitor mapping
- Filter for unverified/owner-unclaimed listings to identify outreach opportunities
- Enrich existing CRM data with verified phone, website, structured address, hours, socials
- Extract customer reviews for sentiment analysis, quality benchmarking, reputation research
- Map local business density and compare market-level metrics (ratings, review volume, years in business)
- Seed RAG/LLM corpora with structured local-business records
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchTerms | string[] | no | ["plumber"] | Keywords/categories — cross-joined with locations |
locations | string[] | no | ["Boston, MA"] | US locations in "City, ST" or ZIP format |
startUrls | array | no | [] | Direct yellowpages.com URLs (search, category, or profile) |
sortBy | enum | no | default | default/distance/name/rating |
includeReviews | boolean | no | false | Embed customer reviews per business |
maxReviewsPerBusiness | integer | no | 30 | Cap on reviews per business (0 = all, hard cap ~2000) |
maxResults | integer | no | 100 | Hard cap on total business rows (0 = unlimited, internal cap 100k) |
maxPagesPerSearch | integer | no | 5 | Max result pages per search/URL |
proxyConfiguration | object | no | US residential | Required: US residential proxies (Cloudflare blocks datacenter) |
Output
One record per business in the dataset:
| Field | Type | Example |
|---|---|---|
name | string | "Acme Plumbing" |
phone | string|null | "(617) 555-1234" |
email | string|null | "info@acme.com" |
website | string|null | "https://acme.com" |
address | object | {street, city, state, postalCode, country} |
addressFormatted | string | "123 Main St, Boston, MA 02108" |
coordinates | object|null | {lat, lng} |
categories | string[] | ["Plumbing","Contractor"] |
primaryCategory | string|null | "Plumbing" |
services | string[] | ["Drain cleaning","Water heater repair"] |
paymentMethods | string[] | ["Visa","Mastercard"] |
hours | object|null | {mon:"8:00-17:00",...} |
rating | number|null | 4.5 |
reviewCount | number|null | 128 |
reviews | array|null | [{author,rating,date,text}] (when includeReviews=true) |
socialLinks | object | {facebook,instagram,linkedin,twitter,youtube} |
logo | string|null | url |
photos | string[] | [url,...] |
claimed | boolean | true |
bbbAccredited | boolean | false |
yearsInBusiness | number|null | 12 |
description | string|null | "Family-owned plumbing services since..." |
tagline | string|null | "Your trusted local plumber" |
isAd | boolean | false |
yellowPagesId | string | "123456789" |
profileUrl | string | https://www.yellowpages.com/.../mip/acme-12345 |
sourceUrl | string | URL crawled |
searchTerm | string | "plumber" |
searchLocation | string | "Boston, MA" |
scrapedAt | string | ISO 8601 timestamp |
Pricing
This actor uses pay-per-event pricing — you only pay for results delivered.
| Event | Price | When charged |
|---|---|---|
| Actor Start | $0.00005 | Once per run (per 1 GB memory) |
| Business Listing | $0.001 | Per business record extracted |
Cost examples:
- 100 businesses = ~$0.10
- 1,000 businesses = ~$1.00
- 10,000 businesses = ~$10.00
Usage-based billing (compute + proxy passthrough) is also enabled for heavy users — see the Pricing tab for tier details.
Proxy requirements
US residential proxies are required. Yellow Pages is fronted by Cloudflare and blocks datacenter IPs and non-US residential ranges. The default proxy configuration uses Apify's RESIDENTIAL group with countryCode: US.
For aggressive anti-bot environments, you can supply a custom premium residential proxy (Decodo, Bright Data, IPRoyal) via the proxy configuration input.
Quick start
# Install Apify CLInpm install -g apify-cli# Clone and deploycd yellow-pages-us-scrapernpm installapify loginapify push -f -w 120
API usage
# Run via APIcurl -X POST "https://api.apify.com/v2/acts/USERNAME~yellow-pages-us-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"searchTerms":["dentist"],"locations":["Austin, TX"],"maxResults":50}'
// Node.js / Apify SDKimport { Actor } from 'apify';const run = await Actor.call('USERNAME/yellow-pages-us-scraper', {searchTerms: ['dentist'],locations: ['Austin, TX'],maxResults: 50,includeReviews: true,maxReviewsPerBusiness: 10,});const { items } = await Actor.dataset(run.defaultDatasetId).listItems();console.log(items);
Tips
- Start small: set
maxResults: 10to verify data quality before scaling - Reviews are slow: enabling
includeReviewsroughly doubles runtime and cost — use only when needed - Large coverage: split a big request across multiple cities/ZIPs — a single search caps at ~6,000 results
- Sort by rating: set
sortBy: "rating"to surface top-rated businesses first - Cross-join math: 2 terms × 3 locations = 6 searches; results are merged and deduplicated by profile URL
Limitations
- Yellow Pages itself caps results at roughly 30 pages (~6,000 listings) per search term + location pair
- Reviews are capped at ~2,000 per business by Yellow Pages
- Email is only available when present on the business profile page (many YP listings do not show email)
Export & integrations
Export scraped data to JSON, CSV, or Excel from the Apify Console. Use webhooks or the Apify API to push results to HubSpot, Salesforce, Google Sheets, Airtable, or any HTTP endpoint. Schedule runs via the Apify Scheduler for ongoing monitoring.
Export scraped data, run the scraper via API, schedule and monitor runs, or integrate with other tools.