Yelp Scraper
Pricing
Pay per usage
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
Actor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
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
| Parameter | Type | Description |
|---|---|---|
searchTerms | string[] | Keywords to search (e.g., "pizza", "plumber") |
locations | string[] | Where to search (e.g., "New York, NY", "90210") |
directUrls | string[] | Direct Yelp URLs to scrape |
maxBusinesses | integer | Max businesses per search query (default: 100) |
maxReviewsPerBusiness | integer | Max reviews per business (default: 20, 0 to skip) |
scrapeReviews | boolean | Whether to scrape reviews (default: true) |
categoryFilter | string | Yelp category alias (e.g., "italian", "plumbing") |
priceFilter | string[] | Price levels: "1" ($), "2" ($$), "3" ($$$), "4" ($$$$) |
ratingFilter | number | Minimum business rating (1.0–5.0) |
openNow | boolean | Only currently open businesses |
distanceFilter | string | Max distance (driving_5, driving_10, driving_25, biking, walking) |
reviewStarFilter | integer | Only reviews with this star rating (1–5) |
reviewDateFrom | string | Reviews after this date (YYYY-MM-DD) |
reviewDateTo | string | Reviews before this date (YYYY-MM-DD) |
reviewSortOrder | string | Sort reviews: date_desc, date_asc, rating_desc, rating_asc |
proxyConfiguration | object | Proxy settings (residential recommended) |
maxConcurrency | integer | Parallel 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
- CheerioCrawler (primary) — fast HTTP-based scraping, extracts data from JSON-LD and embedded JSON in page HTML
- PlaywrightCrawler (fallback) — headless browser for pages blocked by anti-bot measures
- Three extraction strategies per page: embedded JSON data → JSON-LD → DOM scraping
- 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
maxConcurrencyat 5 or lower to avoid rate limiting - For large scrapes, set
maxReviewsPerBusinessto 0 first to get business data, then run a second pass for reviews - Use
directUrlsto scrape specific business pages without searching
Legal notice
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.