Reputation & Reviews

How do you scrape Yelp businesses via API without getting blocked?

To scrape Yelp businesses without fighting anti-bot defenses, call ReefAPI's Yelp search endpoint with a term and location and read the returned businesses as structured JSON.

Yelp engineLive JSON4 steps1,000 free credits

This guide demonstrates the real Yelp API engine with a captured response from . The example is only published because the engine passed the SEO snapshot gate.

Use case

Local-business intelligence, reputation monitoring, lead generation and market research.

Step by step

Call the live endpoint

  1. 1

    Pick a term and location

    Start with a business type and city (for example "coffee" in "San Francisco, CA") so the response stays relevant.

  2. 2

    Call yelp/v1/search

    Send the JSON params from the captured example with your ReefAPI key in the x-api-key header.

  3. 3

    Normalize businesses from data

    Store business id, name, rating, review count, category, address and the canonical Yelp URL.

  4. 4

    Check meta before charging jobs

    Use meta.record_count, latency_ms and error to confirm a clean response before downstream enrichment.

Code

Copy the request

These snippets use the captured request params for yelp/v1/search.

curl -X POST https://api.reefapi.com/yelp/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"term":"Pizza","location":"San Francisco, CA","limit":10}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.yelp.search with {"term":"Pizza","location":"San Francisco, CA","limit":10}.
Real response

Captured output from ReefAPI

Captured on UTC. The response below is the committed snapshot, including the API envelope and metadata.

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/yelp/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "term": "Pizza",
    "location": "San Francisco, CA",
    "limit": 10
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "yelp",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 6300.8,
    "record_count": 10,
    "bytes": 1253258,
    "cache_hit": false,
    "parse_source": "relay",
    "offset": 0,
    "limit": 10,
    "filters": null,
    "attempts": 1
  },
  "data": {
    "results": [
      {
        "enc_biz_id": "loZXJPwZujUlDE6_wVY7dQ",
        "name": "[redacted-name]",
        "slug": "seniores-pizza-san-francisco-5",
        "url": "https://www.yelp.com/biz/seniores-pizza-san-francisco-5",
        "rating": 3.4,
        "review_count": 1421,
        "price": "$",
        "price_level": 1,
        "categories": [
          "Pizza",
          "Burgers",
          "American"
        ],
        "address": "2415 19th Ave",
        "city": "San Francisco",
        "state": null,
        "neighborhoods": [
          "Parkside"
        ],
        "image": null
      },
      {
        "enc_biz_id": "jBlIzf09AkOLex0HvHWZhA",
        "name": "[redacted-name]",
        "slug": "marina-pizza-and-pasta-san-francisco-2",
        "url": "https://www.yelp.com/biz/marina-pizza-and-pasta-san-francisco-2",
        "rating": 4.4,
        "review_count": 49,
        "price": null,
        "price_level": null,
        "categories": [
          "Pizza"
        ],
        "address": "2139 Lombard St",
        "city": "San Francisco",
        "state": null,
        "neighborhoods": [
          "Marina/Cow Hollow"
        ],
        "image": null
      },
      {
        "enc_biz_id": "42gxakyqDMfiX9MW9T3tZQ",
        "name": "[redacted-name]",
        "slug": "mountain-mikes-pizza-daly-city-2",
        "url": "https://www.yelp.com/biz/mountain-mikes-pizza-daly-city-2",
        "rating": 4.2,
        "review_count": 188,
        "price": "$$",
        "price_level": 2,
        "categories": [
          "Pizza",
          "Chicken Wings"
        ],
        "address": "35 Skyline Plz",
        "city": "Daly City",
        "state": null,
        "neighborhoods": [],
        "image": null
      }
    ],
    "term": "Pizza",
    "location": "San Francisco, CA"
  }
}
Manual way

Why this is hard manually

Yelp runs strong anti-bot protection and serves different markup by region and login state, so a scraper that works once often gets challenged or blocked on the next run. Pagination and category filters add more breakage.

Even after fetching, normalizing business name, rating, review count, category, address and the canonical URL into a stable shape is where most DIY Yelp scrapers fail.

ReefAPI way

Why ReefAPI solves it

ReefAPI wraps the working Yelp engine behind one POST request and returns the standard envelope: ok, data, meta and error. The live snapshot on the Yelp API page shows a real search call returning businesses with name, rating, review count and location.

Use it when you need dependable local data for reputation tools, lead-gen dashboards, market research or AI agents — without solving captchas or rotating proxies yourself.

FAQ

Questions developers ask

Do I need a Yelp account or API key?

No. You call ReefAPI with your x-api-key; no Yelp account or Fusion key is required for public business data.

Why does my Yelp scraper keep getting blocked?

Yelp uses anti-bot defenses that need clean residential IPs and the right headers to clear. ReefAPI handles that for you and returns live JSON; blocked or failed calls are free.

What business fields come back?

The captured response includes business ids, names, ratings, review counts, categories, locations and canonical URLs.

Can I scrape many cities?

Yes. Run one request per term and location, store seen business ids, and dedupe in your own database.