Yelp Scraper avatar

Yelp Scraper

Pricing

Pay per usage

Go to Apify Store
Yelp Scraper

Yelp Scraper

Scrape Yelp business listings and reviews. Search by keyword, location, category, price range, rating, and more. Extract complete business profiles and detailed reviews.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

abdulrahman alrashid

abdulrahman alrashid

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Share

Scrape Yelp business listings and reviews at scale. Search by keyword and location, filter by category, price, rating, and distance, then extract complete business profiles with detailed reviews.

Features

  • Search: Find businesses by keyword + location (city, ZIP, state)
  • Filters: Category, price range ($-$$$$), minimum rating, open now, distance radius
  • Business profiles: Name, rating, review count, price range, categories, full address, phone, website, hours of operation, photo count, amenities, health inspection score, GPS coordinates
  • Reviews: Reviewer name, star rating, full text, date, useful/funny/cool votes, review photos, business owner responses
  • Review filters: Star rating, date range, sort order (newest, oldest, highest, lowest rated)
  • Pagination: Automatically follows search result pages and review pages
  • Anti-bot: Session rotation, random delays, User-Agent rotation, Playwright fallback for blocked pages

Input

ParameterTypeDescription
searchTermsstring[]Keywords to search (e.g., "pizza", "plumber")
locationsstring[]Where to search (e.g., "New York, NY", "90210")
directUrlsstring[]Direct Yelp URLs to scrape
maxBusinessesintegerMax businesses per search query (default: 100)
maxReviewsPerBusinessintegerMax reviews per business (default: 20, 0 to skip)
scrapeReviewsbooleanWhether to scrape reviews (default: true)
categoryFilterstringYelp category alias (e.g., "italian", "plumbing")
priceFilterstring[]Price levels: "1" ($), "2" ($$), "3" ($$$), "4" ($$$$)
ratingFilternumberMinimum business rating (1.0–5.0)
openNowbooleanOnly currently open businesses
distanceFilterstringMax distance (driving_5, driving_10, driving_25, biking, walking)
reviewStarFilterintegerOnly reviews with this star rating (1–5)
reviewDateFromstringReviews after this date (YYYY-MM-DD)
reviewDateTostringReviews before this date (YYYY-MM-DD)
reviewSortOrderstringSort reviews: date_desc, date_asc, rating_desc, rating_asc
proxyConfigurationobjectProxy settings (residential recommended)
maxConcurrencyintegerParallel requests (default: 5)

Example input

{
"searchTerms": ["pizza"],
"locations": ["New York, NY"],
"maxBusinesses": 50,
"maxReviewsPerBusiness": 10,
"priceFilter": ["1", "2"],
"ratingFilter": 4.0,
"reviewSortOrder": "date_desc",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Output

Each business is stored as a JSON object in the default dataset:

{
"name": "Joe's Pizza",
"alias": "joes-pizza-new-york",
"url": "https://www.yelp.com/biz/joes-pizza-new-york",
"rating": 4.5,
"reviewCount": 1234,
"priceRange": "$$",
"categories": ["Pizza", "Italian"],
"address": "7 Carmine St, New York, NY 10014",
"streetAddress": "7 Carmine St",
"city": "New York",
"state": "NY",
"zipCode": "10014",
"phone": "(212) 366-1182",
"website": "https://www.joespizzanyc.com",
"latitude": 40.7305,
"longitude": -74.0023,
"hours": {
"Mon": "10:00 AM - 2:00 AM",
"Tue": "10:00 AM - 2:00 AM"
},
"photosCount": 456,
"amenities": [
{ "name": "Outdoor Seating", "value": true },
{ "name": "Delivery", "value": true }
],
"healthScore": "A",
"reviews": [
{
"reviewerName": "John D.",
"rating": 5,
"text": "Best pizza in NYC, hands down...",
"date": "2024-01-15",
"useful": 12,
"funny": 3,
"cool": 5,
"photos": ["https://..."],
"ownerResponse": {
"text": "Thank you for the kind words!",
"date": "2024-01-16",
"ownerName": "Joe"
}
}
],
"scrapedAt": "2024-01-20T10:30:00.000Z"
}

How it works

  1. CheerioCrawler (primary) — fast HTTP-based scraping, extracts data from JSON-LD and embedded JSON in page HTML
  2. PlaywrightCrawler (fallback) — headless browser for pages blocked by anti-bot measures
  3. Three extraction strategies per page: embedded JSON data → JSON-LD → DOM scraping
  4. Session rotation and fingerprint randomization to avoid blocks

Pricing

Pay-Per-Event: $0.50 per 1,000 results ($0.0005 per result, businesses + reviews combined).

Tips

  • Use residential proxies for best results — Yelp actively blocks datacenter IPs
  • Keep maxConcurrency at 5 or lower to avoid rate limiting
  • For large scrapes, set maxReviewsPerBusiness to 0 first to get business data, then run a second pass for reviews
  • Use directUrls to scrape specific business pages without searching

This actor is provided for educational and research purposes. Ensure your use complies with Yelp's Terms of Service and applicable laws. The author is not responsible for misuse.