Yellow Pages Business Scraper avatar

Yellow Pages Business Scraper

Pricing

Pay per usage

Go to Apify Store
Yellow Pages Business Scraper

Yellow Pages Business Scraper

Fast Yellow Pages business scraper. Search by category and city or ZIP, returns name, phone, address, lat/lng, website, hours, social links, payment methods, years in business, rating, and review count. JSON-LD-first parser, no headless browser.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Crikit

Crikit

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

10 days ago

Last modified

Share

Fast Yellow Pages business scraper. Search by category and city or ZIP, get back clean structured records with name, phone in E.164 form, structured address, latitude and longitude, website, hours, social links, payment methods, years in business, rating, and review count. No headless browser, no Yellow Pages API key, no login required.

What does Yellow Pages Business Scraper do?

Yellow Pages Business Scraper is an Apify actor that extracts business directory data from yellowpages.com programmatically. It reads the same JSON-LD blocks that Yellow Pages ships in every server-rendered page, then fills in the few remaining fields with CSS-selector parsing. You get the same data Yellow Pages shows on its pages, returned as clean JSON.

Use it to:

  • Build local business lead lists for sales, marketing, and outreach.
  • Pull restaurant, contractor, or service-provider datasets for analytics, AI training, or ML feature stores.
  • Enrich a CRM with phone numbers, websites, hours, and social profiles.
  • Power "find a plumber near me" style applications.
  • Run competitive intelligence: which businesses operate in which ZIP code, with which categories and ratings.

How to use Yellow Pages Business Scraper

The actor accepts one search at a time: a category or keyword plus a location. It paginates through Yellow Pages results until the cap is hit or the search runs out of pages.

Required inputs

  • searchTerms (text): category or keyword like plumber, dentist, pizza, auto repair. Yellow Pages does fuzzy matching against its canonical category taxonomy.
  • geoLocation (text): city + state ("Austin, TX"), ZIP code, or neighborhood. Yellow Pages resolves it to a geographic center and returns nearby businesses.

Optional inputs

  • maxResults (integer, default 100, max 5000): hard cap on the number of business records returned. Yellow Pages serves roughly 30 organic results per page.
  • pages (integer): alternative cap by page count. Useful if you want exactly N pages, however many results that produces.
  • scrapeDetails (boolean, default true): when true, the scraper hits each business's detail page (MIP) to fill in latitude/longitude, hours, social links, payment methods, years in business, and the host's external website. Without detail enrichment you still get name, phone, categories, address, rating, and review count, but the heavier fields are null.
  • proxyConfiguration (proxy): defaults to Apify RESIDENTIAL US, which is the right setting. Yellow Pages is behind Cloudflare and blocks datacenter IPs at scale.

Output

One record per business. All output is camelCase and flat-as-possible. Example:

{
"yellowPagesId": "10674347",
"name": "Clarke Kent Plumbing",
"phone": "+15127660970",
"website": "http://www.clarkekentplumbing.com",
"address": "1408 W Ben White Blvd, Austin, TX 78704",
"streetAddress": "1408 W Ben White Blvd",
"city": "Austin",
"state": "TX",
"postalCode": "78704",
"country": "US",
"latitude": 30.228342,
"longitude": -97.78136,
"categories": ["Plumbers", "Plumbing-Drain & Sewer Cleaning"],
"yearsInBusiness": 40,
"rating": 3.0,
"reviewCount": 15,
"hours": {
"mon": "09:00-17:00",
"tue": "09:00-17:00",
"wed": "09:00-17:00",
"thu": "09:00-17:00",
"fri": "09:00-17:00"
},
"paymentAccepted": ["check", "amex", "discover", "visa", "cash", "master card"],
"socialLinks": {
"facebook": "https://www.facebook.com/Clarke-Kent-Plumbing-Inc-140942559358301/",
"instagram": "https://www.instagram.com/clarkekentplumbing/",
"twitter": "https://twitter.com/CKPlumingInc",
"linkedin": "https://www.linkedin.com/company/clarke-kent-plumbing",
"youtube": null
},
"mipUrl": "https://www.yellowpages.com/austin-tx/mip/clarke-kent-plumbing-10674347",
"searchQuery": {
"searchTerms": "plumber",
"geoLocation": "Austin, TX",
"page": 1
},
"scrapedAt": "2026-05-25T01:33:08+00:00"
}

Records can be downloaded from the run's dataset as JSON, JSONL, CSV, XLSX, or HTML directly from the Apify Console.

Empty-result handling

If a search legitimately produces zero results (nonsense category, dead market, or Cloudflare blocked the run), the actor pushes one synthetic warning row instead of returning an empty dataset. The row has warning: "no_results" (or "blocked") plus a human-readable warningMessage. Real business records leave warning null. Filter the dataset on warning IS NULL if you do not want warning markers in your downstream pipeline.

How does Yellow Pages Business Scraper compare to other Yellow Pages scrapers?

This scraper returns roughly twice as many useful fields as the cheapest Yellow Pages scraper on Apify Store. The header fields (name, phone, address, categories, URL) are identical because everyone is parsing the same Yellow Pages HTML. The difference is what we do on the detail page:

  • Latitude and longitude on roughly 90% of detail-enriched businesses (nationwide chain listings ship a slimmer JSON-LD without geo and stay null; documented behavior)
  • Structured address split into street, city, state, postal code, country
  • Phone normalized to E.164 form (+15127660970), not display form ((512) 766-0970)
  • Hours mapped to a weekday-keyed object (mon..sun)
  • Payment methods as a typed array
  • Social media links keyed by platform (Facebook, Instagram, Twitter, LinkedIn, YouTube)
  • Years in business
  • Review count alongside rating

How much does Yellow Pages Business Scraper cost?

Flat fee of $0.004 per business record ($4 per 1,000). No actor-start fee. You pay only for the records that land in your dataset.

That undercuts every other full-coverage Yellow Pages scraper on Apify Store while shipping deeper field extraction by default.

Tips for scraping Yellow Pages

  • Split big markets into smaller geoLocation values. Yellow Pages caps any single search around 30 pages of results; three smaller searches return more total businesses than one big one.
  • Use the precise category language Yellow Pages uses internally (plumbers, restaurants, auto repair) for cleaner matches.
  • Run with scrapeDetails: false to scout a market quickly, then re-run on the resulting Yellow Pages IDs with scrapeDetails: true only on the ones worth enriching.
  • The actor uses Apify residential proxies by default; that is the right setting for sustained scraping. Datacenter IPs are blocked by Cloudflare on yellowpages.com.

Yellow Pages publishes a public directory of commercial businesses, not personal data. Yellow Pages' robots.txt disallows /search* and /listings/ as an advisory signal but does not technically enforce that block. Yellow Pages' Terms of Service should be reviewed by anyone running large-scale scrapes; operators are responsible for their own compliance posture. See Apify's blog on whether web scraping is legal for general guidance.

Technical notes

  • Python actor. Uses curl_cffi with chrome131 TLS impersonation to defeat Cloudflare's TLS fingerprint check. Standard Python requests, httpx, and stock curl all 403 immediately on yellowpages.com.
  • Parser is JSON-LD-first. Every Yellow Pages page ships a <script type="application/ld+json"> block with structured LocalBusiness data. CSS selectors only fill in fields that JSON-LD omits (years in business, social links, categories on detail pages).
  • Rate-limited to stay below Cloudflare's soft-block threshold (about 10 requests per IP per 15 seconds). Backoff is built in; on 403 the actor rotates proxy session and impersonation profile before retrying.
  • Residential proxies are mandatory for any meaningful scale. Apify's RESIDENTIAL group with countryCode=US is the default configuration.

Feedback

Found a bug or missing field? Open an issue from the actor's Issues tab in the Apify Console.