Yelp Business Scraper (Mobile API)
Pricing
from $1.00 / 1,000 business results
Yelp Business Scraper (Mobile API)
Search Yelp local businesses by location + term and extract the full field set (rating, reviews, price, address, geo, phone, hours, categories, photos) plus optional business detail and reviews β via Yelp's own mobile API, no login.
Pricing
from $1.00 / 1,000 business results
Rating
0.0
(0)
Developer
R.L.
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Yelp Scraper π½οΈ β Scrape Yelp.com Businesses, Ratings, Reviews, Hours, Photos & Contact Details
Yelp Scraper β Search Yelp local businesses by location + term and extract the full field set (rating, reviews, price, address, geo, phone, hours, categories, photos) plus optional business detail and reviews β via Yelp's own mobile API, no login. It reads Yelp's own API directly, so it's fast, reliable and complete β no flaky HTML parsing, no headless browser. Export to JSON, CSV, Excel, or an API.
Search any US city, ZIP or neighborhood by keyword β get full business listings with ratings, reviews, price, hours, photos, phone and geo, straight from Yelp's own mobile API.
β¨ Why use this Yelp Scraper?
- Human-friendly inputs β just a search term and a location string; no raw IDs or coordinates.
- Full field coverage per business: rating, review count, price, categories, address, geo, phone, hours, photos and more.
- Optional per-business enrichment: complete detail (attributes, hours, health score, owner) and reviews with summary.
- Talks to Yelp's own mobile API (not the bot-walled website), so results match the app.
π― What can you do with Yelp data?
- Build a local-business directory or lead list for a city or category.
- Monitor ratings, review counts and price levels of competitors.
- Enrich a CRM with verified phone numbers, addresses and opening hours.
- Analyze a market β categories, geo distribution and popularity by neighborhood.
π₯ What data does the Yelp Scraper extract?
Each row includes: id, alias, name, url, rating, unrounded_rating, review_count, price_level, price, categories, phone, localized_phone, address, city β¦and more. See the full Data table below.
π How to scrape Yelp.com (3 steps)
- Set your input β provide
termorlocation(see the table below; defaults work out of the box). - Pick options β filters, a
proxyConfiguration, and amaxItemscap. - Run & export β click Start, then download the dataset as JSON/CSV/Excel or fetch it via the API.
βοΈ Input
| Field | Type | Default | Description |
|---|---|---|---|
term | string | coffee | What to search for, e.g. 'coffee', 'plumbers', 'sushi'. |
location | string | San Francisco, CA | City, neighborhood, address or ZIP β e.g. 'San Francisco, CA'. Yelp resolves it server-side. |
includeDetails | boolean | false | Fetch the full business page (all attributes, hours, health score, owner info) for each result. |
includeReviews | boolean | false | Fetch reviews and the per-language review-count summary for each result. |
maxItems | integer | 40 | Maximum number of businesses to return (0 = as many as the API paginates). |
proxyConfiguration | object | Apify Proxy | Route requests through a proxy (Apify Proxy by default). |
Example input
{"term": "coffee","location": "San Francisco, CA","includeDetails": false,"includeReviews": false,"maxItems": 40,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
π€ Output
Each result is a JSON object like this:
{"id": "24ym9XJUS2i9JlSFEJeZ2w","alias": "the-coffee-movement-san-francisco","name": "The Coffee Movement","url": "https://www.yelp.com/biz/the-coffee-movement-san-francisco","rating": 4.5,"unrounded_rating": 4.6,"review_count": 750,"price_level": "$$","price": 2,"categories": [{"name": "Coffee & Tea","alias": "coffee","is_restaurant": false}],"phone": "4152373375","localized_phone": "(415) 237-3375","address": "1030 Washington St","city": "San Francisco","state": "CA","zip": "94108","country": "US","neighborhoods": ["Nob Hill"],"latitude": 37.794825,"longitude": -122.4103212,"timezone": "America/Los_Angeles","is_closed": false,"photo_count": 1885,"photos": [{"id": "7xnjaGpC1Gn8eXC7lvPU3w","url": "https://s3-media0.fl.yelpcdn.com/bphoto/7xnjaGpC1Gn8eXC7lvPU3w/l.jpg","url_original": "https://s3-media0.fl.yelpcdn.com/bphoto/7xnjaGpC1Gn8eXC7lvPU3w/o.jpg","caption": "Cortado (~$4)","width": 2800,"height": 3733,"type": "business"},{"id": "phipK7re5PrtBOZXi5jEHw","url": "https://s3-media0.fl.yelpcdn.com/bphoto/phipK7re5PrtBOZXi5jEHw/l.jpg","url_original": "https://s3-media0.fl.yelpcdn.com/bphoto/phipK7re5PrtBOZXi5jEHw/o.jpg","caption": "Iced Vanilla Rosemary Latte (~$6)","width": 4284,"height": 5712,"type": "business"},"β¦+1 more"],"primary_photo": "https://s3-media0.fl.yelpcdn.com/bphoto/7xnjaGpC1Gn8eXC7lvPU3w/o.jpg","hours": ["Mon-Fri 7:00 am - 2:00 pm","Sat-Sun 7:00 am - 4:00 pm"],"attributes": [{"id": "RestaurantsDelivery","label": "Offers Delivery","value": "No"},{"id": "RestaurantsTakeOut","label": "Offers Takeout","value": "Yes"},"β¦+14 more"],"health_score": "Pass","menu_url": "https://www.thecoffeemovement.com/menu","website_url": "http://thecoffeemovement.com","reviews": [{"id": "DioPsvaDWXqGt4Xac01O_Q","rating": 5,"text": "Coffee Movement is a spot for folks who truly appreciate the simplicity of a great espresso.\n\nI've been to Coffee Movement a couple of times and have thorougβ¦","language": "en","time_created": null,"time_modified": 1781837480,"feedback": {"β¦": "3 fields"},"user": null},{"id": "wMbh9da-2wW40vqejvkRsw","rating": 4,"text": "The Coffee Movement is a small specialty coffee shop that focuses on doing a few things extremely well. We walked into a minimalist, compact space with limitβ¦","language": "en","time_created": null,"time_modified": 1781993163,"feedback": {"β¦": "3 fields"},"user": null},"β¦+8 more"],"review_summary": {"language_review_counts": {"en": 747,"zh": 2,"de": 1},"not_recommended_review_count": 46}}
Fields marked (detail) β
attributes,health_score,health_score_detail,from_this_business,reviews,review_summary,menu_url,website_urlβ are only populated when the per-item detail option is enabled.
π§Ύ Data table
| Field | Type | Description |
|---|---|---|
id | text | Business ID |
alias | text | Alias |
name | text | Name |
url | link | Yelp URL |
rating | number | Rating |
unrounded_rating | number | Unrounded rating |
review_count | number | Review count |
price_level | text | Price level |
price | number | Price (1-4) |
categories | array | Categories |
phone | text | Phone |
localized_phone | text | Localized phone |
address | text | Address |
city | text | City |
state | text | State |
zip | text | ZIP |
country | text | Country |
neighborhoods | array | Neighborhoods |
latitude | number | Latitude |
longitude | number | Longitude |
timezone | text | Timezone |
is_closed | text | Is closed |
photo_count | number | Photo count |
photos | array | Photos |
primary_photo | link | Primary photo |
hours | array | Hours (localized) |
attributes | array | Attributes (detail) |
health_score | text | Health score (detail) |
menu_url | text | Menu URL (detail) |
website_url | link | Website URL (detail) |
reviews | array | Reviews (detail) |
review_summary | object | Review summary (detail) |
π° Pricing β pay per result
This actor uses pay-per-event pricing: you pay only for the rows it actually delivers, layered by what you enable.
| Event | When it's charged | Price |
|---|---|---|
| Business result | Per business returned from search (basic data β name, rating, address, categories, photos, etc.) | $1.00 per 1,000 rows |
| Business details | Per business, only when includeDetails is on and full detail was fetched | +$1.00 per 1,000 rows |
| Business reviews | Per business, only when includeReviews is on and its reviews were fetched β billed per company, not per review | +$1.00 per 1,000 rows |
Enabling includeDetails and includeReviews together costs $3.00 per 1,000 businesses. Leave both off and you pay only the base $1.00 per 1,000. You're never charged for an enrichment call that failed to return data.
π Use the Yelp Scraper via API
Run it programmatically with the Apify API:
curl -X POST "https://api.apify.com/v2/acts/yelp-api-scraper/runs?token=YOUR_TOKEN" \-H 'Content-Type: application/json' \-d '{"term": "coffee","location": "San Francisco, CA","includeDetails": false,"includeReviews": false,"maxItems": 40,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}'
Or with the Apify CLI: apify call yelp-api-scraper -i input.json -o.
β FAQ
Do I need a Yelp account or API key?
No. The scraper uses guest access to Yelp's mobile API β no login, no Fusion API key, no quota.
What do I type for the location?
Anything a person would: a city ('San Francisco, CA'), a ZIP code, a neighborhood or an address. Yelp resolves it server-side.
Why is a proxy recommended?
Yelp's edge blocks datacenter IPs. Use Apify Proxy (default) or supply your own residential/ISP proxy so requests come from a clean IP.
Can I get full reviews and hours?
Yes β enable 'Include full business detail' and 'Include reviews' to fetch complete hours, attributes, health score, owner info and reviews per business.
π οΈ How it works
The actor impersonates Yelp's official app/site and calls its private API the same way the app does, then normalises each response into the flat record above. No browser, no HTML scraping β just clean, structured data.
π Good to know
- Scrape only public local business listing data and respect Yelp.com's Terms of Service and robots policy.
- For personal data, comply with GDPR/CCPA and applicable law β you are the data controller.
- Fields can be
nullwhen Yelp doesn't expose them for a given record.
β Found this useful?
Give the Yelp Scraper a star on Apify and check out my other apify-*-api-scraper actors.