# Yelp Scraper: Businesses, Reviews and Menus

> Yelp scraper: get business profiles, phones, websites, hours, photos, menus and reviews from a search or link. Export CSV, Excel or JSON. No login.

URL: https://cliqtomedia.com/actors/yelp-scraper/

Category: Reviews & app stores · Status: live on Apify Store · Apify page: https://apify.com/cliqtomedia/yelp-scraper?fpr=cliqto

Get public Yelp data without login or API key. Search by keyword and city, or paste business links. Choose profiles or reviews. Export rows to CSV, Excel or JSON.

## How to use it: 3 steps

1. **Make a free Apify account.** Apify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `search` in What to collect. Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does

Search [Yelp](https://www.yelp.com) by keyword and city, or paste business links, and get profiles with phones, websites, hours, photos, menus and reviews. Rows land in a table you can export to CSV, Excel or JSON, or read by API. You need no login and no API key, and 10 businesses take about a minute and cost about $0.044.

- Find businesses: run a Yelp search by keyword and location, or from a Yelp search link, and save one full profile per business.
- Business profiles: read the profiles for business links, aliases or IDs you already have.
- Reviews: save one row per review for the businesses you list, with text, rating, date, language and owner reply.

### Good for

- You build a local lead list with phones and websites for a category and city.
- You compare ratings, price levels and amenities across competing venues.
- You read new reviews of your own or rival businesses on a schedule.
- You collect menu items and prices for restaurant research.

## Price

Pay per event. Apify bills you, not us.

| What you pay for | Price | When |
|---|---|---|
| Start fee | $0.00027 | Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more. |
| Business profile | $0.0027 (from $0.00189 on paid Apify plans) | One saved business profile. |
| Review | $0.000255 (from $0.000179 on paid Apify plans) | One saved review. |
| Search page | $0.0165 (from $0.01155 on paid Apify plans) | One successfully parsed Yelp search page, including an empty page. |
| Detail page | $0.0014 (from $0.00098 on paid Apify plans) | One successfully parsed review or extra gallery/Q&A page, including filtered or unchanged pages; or a confirmed missing business lookup. No charge for transport or source errors. |

- One result: about $0.003.
- 1,000 results: about $2.70.
- Every day 100 results, for 30 days: about $8.11 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Prices checked on 8 November 2026. Current price: https://apify.com/cliqtomedia/yelp-scraper?fpr=cliqto

## Questions

### Do I need a Yelp account or API key?

No. You need only an Apify account.

### Can I get owner emails?

No. The run saves the phone and website the business publishes on Yelp.

### Why do two identical searches differ?

Yelp reorders results between runs and repeats some businesses. A larger Maximum results gives a steadier list.

### Can I get more than 240 businesses?

Yes, with several locations or queries. Each pair stops at 240 positions, and repeats inside a pair are removed, so expect about 200 different businesses.

### How do I get only new reviews?

Turn on Only new results, set a State name, and start the same input on a schedule.

### Can I set a cost limit?

Yes. Set Maximum cost per run in Run options. Rows saved before the limit stay yours.

## Data fields

- `recordType` (string): Whether this row is a business profile or a review.
- `status` (string): Completeness of this result.
- `source` (string): Source of the data: Yelp.
- `businessId` (string): Encoded Yelp business ID.
- `name` (string): Business display name.
- `alias` (string): Business alias used in Yelp URLs.
- `businessName` (string): Name of the business reviewed.
- `businessAlias` (string): URL alias of the reviewed business.
- `reviewId` (string): Unique Yelp review ID.
- `url` (string): Canonical Yelp page or review link.
- `rating` (number): Business average rating or review stars.
- `reviewsCount` (integer): Number of recommended reviews reported by Yelp.
- `categories` (array): Business categories with aliases and titles.
- `address` (object): Street, city, region, postal code, country, and formatted business address.
- `neighborhoods` (array): Public business neighborhoods.
- `coordinates` (object): Latitude and longitude from Yelp business map.
- `phone` (string): Public business phone number.
- `website` (string): Business website URL.
- `menuUrl` (string): Link to the menu published on the business profile.
- `priceRange` (string): Yelp price range, from $ to $$$$.
- `isClosed` (boolean): Whether the business is permanently closed.
- `isOpenNow` (boolean): Whether Yelp reports the business open at fetch time.
- `hours` (array): Weekly opening hours, grouped by weekday.
- `description` (string): Business specialties or description.
- `summary` (string): Short profile summary published by Yelp.
- `yearEstablished` (integer): Establishment year when published.
- `history` (string): Business history text when published.
- `amenities` (array): Features and amenities with their names, labels, and values.
- `photos` (array): Business gallery or review media with IDs, URLs, and captions. Business gallery mediaType distinguishes photo and video; a video URL is its public thumbnail, not a playable video.
- `photosCount` (integer): Total business media items reported by Yelp.
- `questions` (array): Public community questions and answers.
- `popularDishes` (array): Popular dishes shown by Yelp; this is not the complete restaurant menu.
- `ranking` (integer): Position in the current search results.
- `isAd` (boolean): Whether the search result is sponsored.
- `searchQuery` (string): Search query that found this business.
- `searchLocation` (string): Search location that found this business.
- `snippet` (string): Review excerpt from the search result.
- `text` (string): Full review text.
- `language` (string): Language code of the review text.
- `date` (string): Review publication time in ISO 8601 UTC.

## Input settings

- `mode` (string): Search for businesses, look up business profiles, or collect full reviews.
- `query` (string): A business category, keyword, or name, such as coffee or Tartine Bakery. Find businesses needs this or More search queries, plus a location.
- `location` (string): City, address, neighborhood, or ZIP code, such as San Francisco or 94103. Find businesses needs this or More search locations.
- `businessUrls` (array): Yelp business page URLs or business aliases. Regional Yelp URLs are accepted.
- `businessIds` (array): Encoded Yelp IDs, such as WavvLdfdP6g8aZTtbBQHTw. Useful for reviews without a profile lookup.
- `searchTerms` (array): Run each query in each location. Overrides Search query when supplied.
- `locations` (array): Run searches in each location. Overrides Search location when supplied.
- `maxItems` (integer): Total business and review rows to save across the whole run.
- `maxBusinessesPerSearch` (integer): Maximum unique businesses to process for each query and location.
- `searchSort` (string): Order chosen by Yelp for search results.
- `category` (string): Optional Yelp category alias, such as coffee or restaurants.
- `priceLevels` (array): Match one or more price levels: 1 is $, 4 is $$$$.
- `features` (array): Optional Yelp feature aliases, such as DogsAllowed or WiFi.free.
- `openNow` (boolean): Keep only businesses open now. A business whose Yelp profile says closed is dropped and costs one detail page.
- `includeAds` (boolean): Include sponsored businesses as well as organic search results.
- `includeReviews` (boolean): Save separate review rows after each business profile. Both row types count toward Maximum results.
- `maxReviewsPerBusiness` (integer): Maximum matching reviews to save for each business.
- `reviewsSort` (string): Order of the review feed.
- `ratings` (array): Keep selected star ratings. Leave empty for all ratings.
- `language` (string): Review language code, such as en or fr. Leave empty for all available languages.
- `keywords` (array): Save reviews containing at least one of these words or phrases.
- `dateFrom` (string): Inclusive date YYYY-MM-DD or relative period such as 30 days or 2 months.
- `dateTo` (string): Inclusive final date YYYY-MM-DD.
- `translateTo` (string): Optional language code. Adds Yelp-translated text in translatedText; text keeps the original review.
- `includeReviewerDetails` (boolean): Include public reviewer display name, profile link, review count, and Elite year. No private contacts are collected.

## Step by step on Apify

1. Open the Input tab and keep What to collect on Find businesses (box 1).
2. Keep coffee in Search query, or type your own keyword (box 2).
3. Keep San Francisco in Search location, or type your own city (box 3).
4. Keep Maximum results at 10 (box 4).
5. Click Start.
6. When the run ends, open the Output tab (box 6).
7. Check `name`, `rating`, `reviewsCount`, `address.formatted`, `phone` and `website` (box 7). Some businesses publish no phone or website, so those cells can show `null`.

## Use cases

| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Build a local lead list | Find businesses, keyword and city, Businesses with a website on | Business | `name`, `phone`, `website`, `address`, `categories` | CSV for a CRM or outreach sheet |
| Compare rival venues | Business profiles, list of links | Business | `rating`, `reviewsCount`, `priceRange`, `amenities`, `hours` | Google Sheets or BI table |
| Watch new reviews | Reviews, business IDs, Only new results on | Review | `rating`, `text`, `date`, `ownerReply`, `url` | Apify schedule plus Slack or Notion summary |
| Study restaurant menus | Business profiles, Menu and popular dishes on | Business | `menu`, `popularDishes`, `menuUrl` | JSON for pricing analysis |
| Analyse customer opinions | Reviews, date range and keywords | Review | `text`, `language`, `translatedText`, `reactions` | Text analysis or LLM pipeline |

## Tips

- Yelp shows 240 positions per query and location. Use several locations for a big area.
- Turn on Only new results and set a State name to get only new reviews.
- Set Maximum cost per run in Run options to cap your spend.

## Limits



- Public data only. The run uses no login and no customer cookies. Yelp's terms of service apply to how you use the data, so check them for your case.
- The source can change. The run depends on Yelp's public data feeds, which are not a documented API. If Yelp changes one, reads fail with a `*_FORMAT_CHANGED` code rather than saving wrong data.
- Countries. Tested on US businesses through Yelp's public frontend. Other countries can work but are not all tested.
- Search depth. Yelp shows 240 positions per query and location. It repeats some businesses on later pages, and the run saves each one once, so two deep searches gave 185 and 204 different businesses from 24 pages. Repeats cost no row, so a page brings about 8 rows, not 10. There is no automatic map splitting, so use several locations for bigger areas.
- Search order. Yelp's order differs between runs, so a monitor with a low Maximum results can return different businesses each time.
- Photos and questions. A profile includes up to 25 gallery items and 2 question previews. Larger values load paid pages. For business videos, `url` is the thumbnail only.
- Non-recommended and removed reviews. These lists have a fixed order, and language and translation are `null`.
- Monitor memory. Only new results keeps the latest 100,000 hashed IDs, so a very old row can come back. If the memory cannot be opened, you get all results and a `stateWarning` in `RUN_SUMMARY`.

## Sample result

```json
{
  "recordType": "review",
  "status": "complete",
  "source": "Yelp",
  "businessId": "WavvLdfdP6g8aZTtbBQHTw",
  "businessName": "Gary Danko",
  "businessAlias": "gary-danko-san-francisco",
  "reviewId": "xtEERBKGS2OT72htwE2oDA",
  "url": "https://www.yelp.com/biz/gary-danko-san-francisco?hrid=xtEERBKGS2OT72htwE2oDA",
  "rating": 5,
  "text": "Review text as published on Yelp.",
  "translatedText": null,
  "language": "en",
  "date": "2026-11-02T04:16:53Z",
  "reactions": { "helpful": 0, "thanks": 0, "love_this": 0, "oh_no": 0 },
  "photos": [],
  "videos": [],
  "ownerReply": null,
  "previousReviews": [],
  "fetchedAt": "2026-11-03T00:06:42.987Z"
}
```

## Use it from code

Actor ID: `cliqtomedia/yelp-scraper`

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/yelp-scraper").call(run_input={
    "mode": "search",
    "query": "coffee"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

```bash
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~yelp-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode": "search", "query": "coffee"}'
```

```python
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/yelp-scraper")
result = tool.invoke({"run_input": {"mode": "search", "query": "coffee"}})
print(result)
```

run-sync waits up to 300 seconds; for longer runs start a run and use a webhook. LlamaIndex and MCP: https://cliqtomedia.com/actors/ai-agents/

## Similar tools

- [OpenTable Reviews & Restaurants Scraper, No Login](https://cliqtomedia.com/actors/opentable-reviews-scraper/)
- [OpenStreetMap POI Extractor: Cafes, Shops, Hotels by City](https://cliqtomedia.com/actors/openstreetmap-poi-extractor/)
- [Apple App Store Reviews Scraper: Ratings & Review Text](https://cliqtomedia.com/actors/apple-app-store-reviews-scraper/)
- [Google Play Reviews Scraper: Ratings, Replies & Versions](https://cliqtomedia.com/actors/google-play-reviews-scraper/)
- [TrustRadius Reviews Scraper: Pros, Cons & Ratings](https://cliqtomedia.com/actors/trustradius-reviews-scraper/)
- [App Store Search, Rank & App Details — No Login](https://cliqtomedia.com/actors/app-store-apps-search/)
