Yelp Business Scraper (Mobile API) avatar

Yelp Business Scraper (Mobile API)

Pricing

from $1.00 / 1,000 business results

Go to Apify Store
Yelp Business Scraper (Mobile API)

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.

R.L.

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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)

  1. Set your input β€” provide term or location (see the table below; defaults work out of the box).
  2. Pick options β€” filters, a proxyConfiguration, and a maxItems cap.
  3. Run & export β€” click Start, then download the dataset as JSON/CSV/Excel or fetch it via the API.

βš™οΈ Input

FieldTypeDefaultDescription
termstringcoffeeWhat to search for, e.g. 'coffee', 'plumbers', 'sushi'.
locationstringSan Francisco, CACity, neighborhood, address or ZIP β€” e.g. 'San Francisco, CA'. Yelp resolves it server-side.
includeDetailsbooleanfalseFetch the full business page (all attributes, hours, health score, owner info) for each result.
includeReviewsbooleanfalseFetch reviews and the per-language review-count summary for each result.
maxItemsinteger40Maximum number of businesses to return (0 = as many as the API paginates).
proxyConfigurationobjectApify ProxyRoute 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

FieldTypeDescription
idtextBusiness ID
aliastextAlias
nametextName
urllinkYelp URL
ratingnumberRating
unrounded_ratingnumberUnrounded rating
review_countnumberReview count
price_leveltextPrice level
pricenumberPrice (1-4)
categoriesarrayCategories
phonetextPhone
localized_phonetextLocalized phone
addresstextAddress
citytextCity
statetextState
ziptextZIP
countrytextCountry
neighborhoodsarrayNeighborhoods
latitudenumberLatitude
longitudenumberLongitude
timezonetextTimezone
is_closedtextIs closed
photo_countnumberPhoto count
photosarrayPhotos
primary_photolinkPrimary photo
hoursarrayHours (localized)
attributesarrayAttributes (detail)
health_scoretextHealth score (detail)
menu_urltextMenu URL (detail)
website_urllinkWebsite URL (detail)
reviewsarrayReviews (detail)
review_summaryobjectReview 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.

EventWhen it's chargedPrice
Business resultPer business returned from search (basic data β€” name, rating, address, categories, photos, etc.)$1.00 per 1,000 rows
Business detailsPer business, only when includeDetails is on and full detail was fetched+$1.00 per 1,000 rows
Business reviewsPer 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 null when 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.