Yelp Business Scraper
Pricing
Pay per usage
Yelp Business Scraper
Extract business listings, ratings, reviews, contact info, and hours from Yelp. Export to JSON, CSV, Excel.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Glass Ventures
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Extract business listings, ratings, reviews, contact info, hours, and location data from Yelp search results and business pages.
What does Yelp Business Scraper do?
Yelp Business Scraper is a powerful data extraction tool that collects structured business information from Yelp.com. It can scrape search results for any business type in any location, or extract detailed data from individual business pages.
The actor navigates Yelp search results and business detail pages, extracting comprehensive data including business name, rating, review count, price range, categories, full address, phone number, website, GPS coordinates, business hours, photos, and optionally the top reviews. All data is exported in a clean, structured format.
Whether you need restaurant data for market analysis, local business contact info for lead generation, or competitor research data, this scraper handles pagination automatically and delivers results in JSON, CSV, or Excel format.
Use Cases
- Market researchers -- Analyze business density, ratings, and pricing across locations to identify market opportunities
- Data analysts -- Build datasets of local businesses for geographic analysis, sentiment analysis, or trend research
- Business owners -- Monitor competitors' ratings, review counts, and pricing in your area
- Lead generation -- Extract business contact info (phone, website, address) for outreach campaigns
- Developers -- Feed Yelp business data into applications, dashboards, or CRM systems via API
Features
- Search by business type and location (e.g., "pizza" in "Chicago, IL")
- Scrape individual business pages via direct URLs
- Extract JSON-LD structured data for maximum accuracy
- Optional review extraction from business pages
- Automatic pagination through search results
- Proxy support with automatic session rotation
- Handles anti-bot detection with session management
- Exports to JSON, CSV, Excel, or connect via API
- Resume support for interrupted runs
How much will it cost?
| Results | Estimated Cost |
|---|---|
| 100 | ~$0.50 |
| 1,000 | ~$4.00 |
| 10,000 | ~$35.00 |
| Cost Component | Per 1,000 Results |
|---|---|
| Platform compute | ~$1.50 |
| Proxy (residential) | ~$2.50 |
| Total | ~$4.00 |
How to use
- Go to the Yelp Business Scraper page on Apify Store
- Click "Start" or "Try for free"
- Enter search terms (e.g., "restaurants") and locations (e.g., "San Francisco, CA"), or paste Yelp URLs directly
- Set the maximum number of items to scrape
- Click "Start" and wait for the results
Input parameters
| Parameter | Type | Description | Default |
|---|---|---|---|
| startUrls | array | Yelp URLs to scrape (search or business pages) | - |
| searchTerms | array | Business types or keywords to search for | - |
| locations | array | Locations to search in (e.g., "New York, NY") | San Francisco, CA |
| includeReviews | boolean | Extract top reviews from each business page | false |
| maxItems | number | Maximum number of businesses to scrape | 100 |
| maxConcurrency | number | Parallel page processing limit | 8 |
| proxyConfig | object | Proxy settings (residential recommended) | Apify Proxy |
Output
The actor produces a dataset with the following fields:
{"businessName": "House of Prime Rib","url": "https://www.yelp.com/biz/house-of-prime-rib-san-francisco","rating": 4.5,"reviewCount": 8234,"priceRange": "$$$","categories": ["Steakhouses", "American (Traditional)"],"address": "1906 Van Ness Ave","city": "San Francisco","state": "CA","zipCode": "94109","phone": "(415) 885-4605","website": "https://houseofprimerib.net","latitude": 37.7935,"longitude": -122.4225,"hours": {"Monday": "4:00 PM - 10:00 PM","Tuesday": "4:00 PM - 10:00 PM"},"photos": ["https://s3-media0.fl.yelpcdn.com/bphoto/..."],"isOpen": true,"claimedStatus": true,"scrapedAt": "2026-04-23T10:30:00.000Z"}
| Field | Type | Description |
|---|---|---|
| businessName | string | Name of the business |
| url | string | Yelp business page URL |
| rating | number | Average star rating (1-5) |
| reviewCount | number | Total number of reviews |
| priceRange | string | Price level ($, $$, $$$, $$$$) |
| categories | array | Business categories |
| address | string | Street address |
| city | string | City name |
| state | string | State/region |
| zipCode | string | Postal code |
| phone | string | Phone number |
| website | string | Business website URL |
| latitude | number | Geographic latitude |
| longitude | number | Geographic longitude |
| hours | object | Business hours by day |
| photos | array | Photo URLs |
| isOpen | boolean | Whether the business is currently open |
| claimedStatus | boolean | Whether the business is claimed on Yelp |
| scrapedAt | string | ISO 8601 scrape timestamp |
Integrations
Connect Yelp Business Scraper with other tools:
- Apify API -- REST API for programmatic access
- Webhooks -- get notified when a run finishes
- Zapier / Make -- connect to 5,000+ apps
- Google Sheets -- export directly to spreadsheets
API Example (Node.js)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('YOUR_USERNAME/yelp-business-scraper').call({searchTerms: ['restaurants'],locations: ['San Francisco, CA'],maxItems: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();
API Example (Python)
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('YOUR_USERNAME/yelp-business-scraper').call(run_input={'searchTerms': ['restaurants'],'locations': ['San Francisco, CA'],'maxItems': 100,})items = client.dataset(run['defaultDatasetId']).list_items().items
API Example (cURL)
curl "https://api.apify.com/v2/acts/YOUR_USERNAME~yelp-business-scraper/runs" \-X POST \-H "Content-Type: application/json" \-H "Authorization: Bearer YOUR_TOKEN" \-d '{"searchTerms": ["restaurants"], "locations": ["San Francisco, CA"], "maxItems": 100}'
Tips and tricks
- Start with a small
maxItems(10-20) to test before running large scrapes - Use residential proxies for best results -- Yelp has moderate anti-bot protection
- Combine multiple search terms with multiple locations to cover wide areas efficiently
- Set
includeReviewsto true only when needed, as it increases processing time - Business pages have the richest data via JSON-LD; search pages are used for discovery
FAQ
Q: Does this actor require login credentials? A: No. All data is extracted from publicly available Yelp pages.
Q: How fast is the scraping? A: Approximately 50-100 businesses per minute with residential proxies and default concurrency.
Q: What should I do if I get blocked? A: Switch to residential proxies in the Proxy Configuration settings and reduce maxConcurrency to 3-5.
Q: Can I scrape reviews? A: Yes, enable the "Include Reviews" option to extract the top reviews shown on each business page.
Q: Does it handle pagination? A: Yes, the actor automatically paginates through search results until maxItems is reached or no more results are available.
Is it legal to scrape Yelp?
Web scraping of publicly available data is generally legal based on precedents like the LinkedIn v. HiQ Labs case. This actor only accesses publicly available data. Always review and respect the target site's Terms of Service and robots.txt. For more information, see Apify's blog on web scraping legality.
Related Actors
Limitations
- Review extraction is limited to the reviews displayed on the first page of each business
- Business hours may not be available for all listings
- Some fields (website, coordinates) depend on the business having complete Yelp profiles
- Rate limiting may slow down large scrapes; use residential proxies for best performance
Changelog
- v0.1 (2026-04-23) -- Initial release