Yellow Pages US Scraper avatar

Yellow Pages US Scraper

Pricing

from $2.50 / 1,000 listings

Go to Apify Store
Yellow Pages US Scraper

Yellow Pages US Scraper

Scrape Yellow Pages US listings: business name, phone, address, website, hours, categories, rating, and emails when the listing or its site has one. Keyword + city or yellowpages.com URLs in. Pure HTTP, no browser. JSON or CSV out. $2.50/1k listings; contact emails billed only when found.

Pricing

from $2.50 / 1,000 listings

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Categories

Share

Yellow Pages US Scraper logo

Turn a US Yellow Pages search into structured business leads: name, phone, address, website, hours, categories, rating, and email when the listing (or its own site) has one.

Keyword + city, or a yellowpages.com URL. JSON or CSV out.

Why Use This Scraper?

  • Phone and address on almost every US listing
  • Native emails from the Yellow Pages profile when Thryv has one
  • Optional website scrape for inboxes that are not on the listing
  • Hours, categories, rating, optional full review text, year established, claimed flag
  • Keyword + city, term × city lists, or paste a search / MIP URL
  • HTTP only — no browser, no Cloudflare grind

Overview

Built for lead-gen teams, agencies, and researchers who need US local-business rows from yellowpages.com.

Every start type becomes one dataset row per business. A city search, a category URL, and a /mip/ profile all emit the same listing shape. Email is sparse on Yellow Pages itself; phone is not.

Supported Inputs

Search terms and locations

FieldExample
searchTerms["pizza"], ["plumber", "dentist"]
locations["Los Angeles, CA"], ["34.05,-118.24"] (ZIP alone does not geocode)

Every term is searched in every location. ["pizza","plumber"] × ["Los Angeles, CA","Houston, TX"] is four searches. API callers can also send what + where or queries: [{ what, where }]; all three forms are merged and de-duplicated.

URL types

URL typePatternExample
Category search/{city-st}/{term}https://www.yellowpages.com/los-angeles-ca/pizza
Listing (MIP)/{city-st}/mip/{slug}-{id}https://www.yellowpages.com/los-angeles-ca/mip/pitfire-artisan-pizza-22248710

Copy-pasteable startUrls

{
"startUrls": [
{ "url": "https://www.yellowpages.com/los-angeles-ca/pizza" },
{ "url": "https://www.yellowpages.com/los-angeles-ca/mip/pitfire-artisan-pizza-22248710" }
]
}

Unsupported: yell.com, yellowpages.ca, pagesjaunes.fr, and other country directories. This actor is US yellowpages.com only.

Use Cases

AudienceWhat they take from a run
Lead genPhone, address, website, email when present
AgenciesLocal category lists by city
Sales opsDeduped listing ids + claimed / years-in-business
ResearchersHours, ratings, category mix

How It Works

  1. Geocode where (or read lat/lon).
  2. Call the mobile search JSON at that pin, then walk neighboring pins (each pin returns a short page).
  3. Deduplicate by listing id.
  4. Load the listing detail for extra phones and native emails.
  5. If includeReviews is on, keep review text from the profile ratings list.
  6. If enrichEmails is on and the profile has no inbox, scrape the business website.

How the Yellow Pages US scraper turns a query into listing rows

Input Configuration

FieldTypeRequiredNotes
searchTermsarrayone of the start typesKeywords, searched in every location
locationsarraywith searchTermsUS city + state, or lat,lon
startUrlsarrayone of the start typesyellowpages.com search or MIP URLs
what + wherestringAPI onlySingle pair, merged with the lists above
queriesarrayAPI only[{ what, where }] pairs, merged with the lists above
sortBystringnodefault, rating, name, or distance. Sorts each map-pin page only — the API has no global sort.
includeReviewsbooleannoDefault false. Adds reviews[] (author, rating, title, text, date).
maxReviewsintegernoDefault 25. Cap per listing when reviews are on.
maxItemsintegernoDefault 50. Free users capped at 50.
scrapeDetailsbooleannoDefault true. Needed for native emails and extra phones. Forced on when reviews are on.
enrichEmailsbooleannoDefault false. Billed only when an address is found.
maxConcurrencyintegernoDefault 8.
proxyobjectnoOptional. Default is no Apify proxy.

Example input

{
"searchTerms": ["pizza"],
"locations": ["Los Angeles, CA"],
"maxItems": 50,
"scrapeDetails": true,
"enrichEmails": false
}

Output Overview

One flat row per business. Contact fields sit at the top level (phone, email, website). Nested pieces are hours and, when requested, reviews.

Output Samples

Search: pizza in Los Angeles, CA.

{
"listingId": "22248710",
"name": "Pitfire Artisan Pizza",
"phone": "2138081200",
"phones": ["2138081200", "2138081201"],
"email": null,
"emails": [],
"website": "http://www.pitfirepizza.com",
"yellowPagesUrl": "http://www.yellowpages.com/los-angeles-ca/mip/pitfire-artisan-pizza-22248710",
"address": "108 W 2nd St Apt 208",
"city": "Los Angeles",
"state": "CA",
"zip": "90012",
"latitude": 34.05107,
"longitude": -118.24486,
"categories": ["Caterers", "Pizza", "Restaurants"],
"rating": 5,
"reviewCount": 4,
"yearEstablished": null,
"isClaimed": null,
"paymentText": null,
"reviews": [],
"contactEmail": ""
}

A listing that publishes an inbox on the profile (same run):

{
"listingId": "495657088",
"name": "Olio Pizzeria",
"phone": "2136800010",
"email": "info@oliogcm.com",
"website": "http://www.pizzeriaolio.com/downtown.php"
}

With includeReviews: true the same listing also carries review bodies from the profile:

{
"listingId": "22248710",
"reviewCount": 4,
"reviews": [
{
"id": "a1",
"author": "Sam",
"rating": 5,
"title": "Downtown",
"text": "Great crust",
"date": "2020-01-01"
}
]
}

Key Output Fields

Identity: listingId, name, yellowPagesUrl, isClaimed, yearEstablished

Contact: phone, phones, email, emails, contactEmail, website

Place: address, city, state, zip, latitude, longitude

Listing: categories, rating, reviewCount, reviews, hours, paymentText

email is the native Yellow Pages address. contactEmail is that same address, or the website-scrape result when enrichEmails is on.

Pricing

EventWhenRate
Actor startOnce per run, per GB of memory$0.005
ListingEach unique business in the dataset$0.0025 ($2.50 / 1k)
Contact phoneRow has a phone$0.002
Contact email foundOnly when an address is returned$0.05

Missed emails are free. Phone is billed only when the listing has a number.

What makes this richer than the competition

CapabilityTypical Store actorsThis actor
TransportHTML / PlaywrightMobile JSON over HTTP
EmailWebsite crawl, or noneNative profile emails + optional site scrape
ReviewsCount only, or a huge HTML dumpProfile review text when includeReviews is on
City coverageFirst SERP page, or a hard 6k capGeo-tiles around the city pin
Hours / claimed / year / paymentsOften missingOn the detail row

FAQ

Will every row have an email? No. Yellow Pages often lists a phone and no inbox. A mixed sample was about 30% native emails on the detail call. Turn on enrichEmails to look on the company site.

Why so few results for a huge city? Each map pin returns a short page. The actor walks neighboring pins and de-duplicates. Raise maxItems to keep walking.

Do I need a proxy? Usually not.

Does this scrape yell.com or Yellow Pages Canada? No.

Are reviews included? Rating and count always. Full text only when includeReviews is true. The profile usually carries a handful of reviews (Pitfire had 3 of 4), not a separate infinite review feed.

Support

Additional Services

Custom fields, bulk city lists, or a private API wrapper: muhamed.didovic@gmail.com

Explore More Scrapers

French directory cousin: PagesJaunes Scraper. More actors on memo23 and didovic.

🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/yellow-pages-us-scraper).

Purpose: Extract US yellowpages.com business listings (phone, address, website, hours, native or scraped email).

Minimal input:

{
"searchTerms": ["pizza"],
"locations": ["Los Angeles, CA"],
"maxItems": 10,
"scrapeDetails": true,
"enrichEmails": false
}

Output: one dataset row per business — listingId, name, phone, phones, email, emails, contactEmail, website, yellowPagesUrl, address, city, state, zip, latitude, longitude, categories, rating, reviewCount, reviews, hours, yearEstablished, isClaimed, paymentText.

Behaviors an agent should know:

  • Always set maxItems. Free users are capped at 50.
  • Provide searchTerms + locations and/or startUrls. what + where and queries are also accepted. Empty input fails.
  • scrapeDetails (default true) is required for native emails.
  • includeReviews adds reviews[] from the listing profile and forces a detail fetch.
  • sortBy reorders each map-pin page (rating / name / distance). It is not a site-wide SERP sort.
  • enrichEmails costs $0.05 only when an address is returned.
  • Each listing is $0.0025. A phone on the row is $0.002. An email is $0.05. Start is $0.005 per GB.
  • US yellowpages.com only. Email is often null.

⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Thryv, Inc. or Yellow Pages. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available Yellow Pages listing data — no authenticated endpoints, paid Yellow Pages features, or content behind a login wall. Users are responsible for ensuring their use complies with yellowpages.com Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), CAN-SPAM / TCPA if they send outreach, and any contractual obligations of their own organization.

SEO Keywords

yellow pages scraper, yellow pages US scraper, yellowpages.com scraper, scrape yellow pages, Yellow Pages API, Apify yellow pages, US business listings scraper, local leads scraper, phone number scraper, email enrichment scraper, lead generation data, hours of operation scraper, US directory scraper, local business intelligence