Yellow Pages Scraper & API - Business Leads, Phones, Emails
Pricing
from $1.50 / 1,000 results
Yellow Pages Scraper & API - Business Leads, Phones, Emails
Yellow Pages scraper for US business leads from YellowPages.com. Input: keywords (e.g. plumber) and cities or ZIPs, or search URLs. One result = one business: name, phone, address, website, categories, rating, hours, years in business; optional email and social links. $1.50 per 1,000 results.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Giovanni Rich
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
18 hours ago
Last modified
Categories
Share
This Yellow Pages scraper turns any YellowPages.com search into a clean US business leads list: business name, phone number, full street address (split into street / city / state / ZIP), website, categories, ratings, opening hours and years in business. Turn on includeDetails to also get business emails (when listed), description, payment methods, services, social links and GPS coordinates - a simple YellowPages API for lead generation and local business data.
Search any keyword in any number of US cities in one run: ["plumber", "roofer"] x ["Charlotte, NC", "Austin, TX", "10001"]. It runs over plain HTTP with no headless browser, rotates proxy sessions automatically when YellowPages' Cloudflare edge pushes back, and fetches result pages in parallel - fast and cheap.
What you get
- Contact: phone, website, full address, and with
includeDetailsthe email address, extra phone/fax numbers and social links (Facebook, Instagram, ...). - CRM and dialer ready:
phoneE164(+17042519995 format) for dialers, SMS tools and CRM imports, andwebsiteDomain(bare domain) for enrichment and dedupe. - Address split for CRMs:
street,city,state,zipas separate fields. Service-area businesses ("Serving the Charlotte area") are flagged withisServiceAreaOnly. - Reputation: YellowPages star rating and review count, TripAdvisor rating and review count (restaurants, hotels, attractions), price range.
- Business profile: categories, opening hours (
Mo-Fr 08:00-17:00format), open-now status, years in business, years on YellowPages, claimed/unclaimed listing, review snippet, thumbnail. - IDs and links: YellowPages URL and
ypidso you can dedupe and track the same business over time. - Pagination: 30 listings per page, pages fetched in parallel until
maxResults. Duplicates are removed.
Sample output
From a real cloud run: "roofing contractors" in Charlotte, NC.
| name | phone | city | website | categories | yearsInBusiness |
|---|---|---|---|---|---|
| Murr And Laney Inc | (980) 501-6075 | Pineville, NC | https://www.murrlaney.com | Roofing Contractors | 61 |
| JW Services Inc of NC | (980) 334-6603 | Concord, NC | http://jwservicesofnc.com | Roofing Contractors | 22 |
| D&W, Inc. | (704) 598-9316 | Charlotte, NC | http://dwincnc.localsearch.com | Roofing Contractors | 43 |
Use cases
- Cold outreach and lead generation for agencies, SaaS and B2B sales (local service businesses: contractors, dentists, lawyers, restaurants, salons, ...)
- Market sizing: how many plumbers / dentists / gyms are in a city, and how established they are
- Enriching a CRM with phone, address, website and category
- Finding businesses without a website or with an unclaimed listing (great prospects for web and marketing agencies)
- Building local directories or territory lists by ZIP code for field sales teams
Pricing
$1.50 per 1,000 results (pay per result; failed requests are never charged). Most US Yellow Pages scrapers on the Store charge $3.00-$20.00 per 1,000.
FAQ
Is it legal to scrape YellowPages? This actor only collects publicly listed business information. Some listings include names or emails of sole proprietors; you're responsible for using the data in line with YellowPages' terms and privacy and anti-spam laws (e.g. CAN-SPAM, GDPR, CCPA). This is not legal advice - if you're unsure, check with a lawyer.
Does it need a login or a browser? No login, no API key, no browser. It makes plain HTTPS requests and reads the listing HTML and the schema.org data YellowPages embeds. That's why it's fast and cheap.
How fast is it and how many results can I get?
A 20-result test takes well under a minute. Each search returns up to ~3,000 businesses (about 100 pages of 30); for a whole metro area, split by suburb or ZIP code. includeDetails adds one extra request per business, so it is slower.
Which proxy should I use?
Start with the default Apify Proxy. When a page stays blocked after a few datacenter attempts, the retry moves to the RESIDENTIAL (US) proxy group on its own (when your account has it). For big or includeDetails runs you can start on RESIDENTIAL (US) directly. Unknown locations, bad URLs or a search that stays blocked never fail the run: it finishes with what it got, and the status message and RUN_SUMMARY explain each search.
Can I schedule it or call it via API? Yes. Use Apify Schedules for daily/weekly runs, or start it from the Apify API, the JavaScript/Python clients, Make, Zapier, n8n or the Apify MCP server for AI agents.
Why did a search return fewer results than maxResults?
YellowPages had fewer listings for that term and location, or a page gave up after all retries. The RUN_SUMMARY record in the key-value store shows, per search, how many results YellowPages reports, how many were collected and why it stopped.
Can I use my own filters or sorting?
Yes: set them on yellowpages.com, copy the search URL and paste it into startUrls.
How to use
- Enter one or more search terms (e.g.
plumber,dentist) and locations (e.g.Charlotte, NCor a ZIP code), or paste YellowPages search URLs. SetmaxResultsand tickincludeDetailsif you want emails. - Click Start and wait for the run to finish (a 20-result test takes well under a minute).
- Download your leads as JSON, CSV, Excel or HTML from the Output tab, or fetch them via the Apify API.
Input
| Field | Default | Description |
|---|---|---|
searchTerms | - | What you'd type into the YellowPages "Find" box: "plumber", "dentist", "pizza" |
locations | - | US city + state or ZIP: "Charlotte, NC", "Austin, TX", "10001". Every term is searched in every location. |
startUrls | - | Optional: paste YellowPages search URLs directly (keeps any sorting/filters you set on the site) |
maxResults | 100 | Businesses per term x location (0 = everything YellowPages has, up to ~3,000) |
includeDetails | false | Adds email, description, hours, payment methods, services, social links, founded year, coordinates. One extra request per business. |
includeSponsored | false | Include the paid ad cards YellowPages shows above the results (often from other areas) |
proxyConfiguration | Apify Proxy | Switch to RESIDENTIAL (US) if you see many blocks |
Input example
{"searchTerms": ["plumber", "hvac contractor"],"locations": ["Charlotte, NC", "Austin, TX"],"maxResults": 200,"includeDetails": true}
Output example
One dataset item per business. This one is from a real cloud run: "roofing contractors" in Charlotte, NC with includeDetails: true (long text shortened).
{"searchTerm": "roofing contractors","location": "Charlotte, NC","position": 5,"name": "Roofing Contractors of America","ypid": "520015737","categories": ["Roofing Contractors", "General Contractors", "Fire & Water Damage Restoration"],"rating": 5,"reviewCount": 4,"tripAdvisorRating": null,"tripAdvisorReviewCount": null,"priceRange": null,"phone": "(844) 251-9995","address": "10130 Perimeter Pkwy, Charlotte, NC 28216","street": "10130 Perimeter Pkwy","city": "Charlotte","state": "NC","zip": "28216","website": "http://roofingcontractorsofamerica.localsearch.com","yellowPagesUrl": "https://www.yellowpages.com/charlotte-nc/mip/roofing-contractors-of-america-520015737?lid=1001643842969","openingHours": ["Mo-Su"],"openStatus": "open 24 hours","yearsInBusiness": null,"yearsWithYellowPages": null,"snippet": "I just want to see that I had my hesitations about getting my roof done... RCA was amazing.","thumbnail": "https://i4.ypcdn.com/blob/fbe8d98e053d2241e122b33a51931e5458eef6e6_130x130_crop.jpg","isServiceAreaOnly": false,"isSponsored": false,"isClaimed": true,"searchPage": 1,"scrapedAt": "2026-09-24T05:30:26.958Z","email": "admin@rcacarolina.com","description": "What we Promise? One thing is for sure that when we will finish the restoration, you will be surprised to see your home or office...","paymentMethods": ["check", "financing available", "insurance", "amex", "visa", "discover", "mastercard", "debit"],"foundedYear": null,"latitude": 35.347534,"longitude": -80.85175,"services": ["Storm Damage, Fire Damage, Water Damage, Mold Remediation, Roof Repair, ..."],"socialLinks": ["https://www.facebook.com/RCACarolina/", "https://twitter.com/RCACarolinas", "https://www.instagram.com/rcacarolina/"],"extraPhones": ["Phone: (704) 251-9995"],"aka": null,"image": "https://i4.ypcdn.com/blob/fbe8d98e053d2241e122b33a51931e5458eef6e6","phoneE164": "+18442519995","websiteDomain": "roofingcontractorsofamerica.localsearch.com"}
Restaurants also get tripAdvisorRating / tripAdvisorReviewCount (e.g. a Chicago pizza place: 4.5 from 2,387 TripAdvisor reviews).
The dataset has two ready-made views: Overview (photo, name, phone, address, website, email, categories, rating) and Contacts (CRM export) (flat name / phone / email / website / street / city / state / ZIP).
Field fill rates (real cloud run: 235 businesses, dentists and plumbers in Denver and Austin)
| Field | Fill rate |
|---|---|
| name, phone, address, categories, YellowPages URL | 100% |
| city / state / ZIP | 98% (the rest are service-area businesses) |
| website | 94% |
| opening hours | 86% |
| review snippet | 83% |
| years in business | 57% |
| YellowPages rating + review count | 46% (only businesses that have YP reviews) |
| TripAdvisor rating | 0% for trades; ~60% for restaurants |
With includeDetails (21 detail pages): email 57%, payment methods 86%, hours 95%, description / coordinates 81%, founded year 76%, social links 38%.
Integrations
- Apify API: run the actor and read results over REST, or with the official JavaScript and Python API clients.
- Make, Zapier, n8n: trigger runs and push new leads into your CRM, email tool or spreadsheet.
- Google Sheets: export the dataset straight into a sheet.
- Webhooks: get notified (or kick off your own pipeline) when a run finishes.
- MCP for AI agents: through the Apify MCP server (https://mcp.apify.com), Claude, ChatGPT, Cursor and other agents can call this scraper and use the leads directly.
Limits (read before large runs)
- United States only. YellowPages.com covers US businesses. (Canada, Australia and other countries have separate Yellow Pages sites that this actor does not cover.)
- Up to ~3,000 results per search (YellowPages serves at most ~100 pages of 30). For a whole metro area, split by suburb or ZIP code.
- Email needs
includeDetailsand only exists when the business published one on YellowPages. Detail mode opens one extra page per business, so it's slower and uses more proxy traffic. - Cloudflare: YellowPages sits behind Cloudflare and challenges a large share of automated requests. The scraper uses the client profile that passes most often and retries challenged pages on a fresh proxy session automatically (in testing: every search page got through, typically after 1-4 retries). For
includeDetailsruns or big jobs, use the RESIDENTIAL proxy group: in testing it loaded 100% of pages, versus ~75% of detail pages on datacenter proxies. A detail page that still fails is saved without the extra fields (marked withdetailsError), so you never lose the listing. - Review texts are not included in this version (only the snippet shown on the results page).
How it works (for developers)
Each search page is fetched over HTTP with a desktop browser fingerprint and parsed with Cheerio: the result cards give name, phone, address, categories, ratings and badges, and the page's schema.org LocalBusiness JSON-LD adds structured address parts and opening hours. The total result count on page 1 is used to fan out the remaining page URLs in parallel. Detail pages are read from their schema.org JSON-LD (email, geo, payment, services, hours) with HTML fallbacks, including decoding Cloudflare-obfuscated email links. Blocked responses (403/429/challenge pages) retire the session and retry on a new proxy IP.
Run it locally:
npm installnpm test # parser tests on saved fixturesnode src/main.js # input in storage/key_value_stores/default/INPUT.json