> ## Documentation Index
> Fetch the complete documentation index at: https://docs.scrapeunblocker.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Scrape Yelp business reviews

> Given a Yelp `business` (page URL, alias or business id), returns the `business` summary (`businessId`, `alias`, `name`, `url`, `rating`, `reviewCount`, `ratingHistogram`, `reviewsCountByLanguage`, `categories`, `city`, `region`) and its `reviews`: `id`, `url`, `rating`, `text`, `language`, `publishedDate`, `date`, `user` (`name`, `location`, `reviewCount`, `friendCount`, `photoCount`, `isElite`, `eliteYear`), `photos`, `videos`, `reactions` (`helpful`, `thanks`, `loveThis`, `ohNo`), `ownerResponse`, `checkIns` and the author's `previousReviews`. Sort like yelp.com (`relevance`, `newest`, `oldest`, `highest`, `lowest`, `elites`), filter by `language`, star `rating`, a search `query` or `since` a date, and page with `page` / `start` up to `max_reviews` per call. To continue, call again with `start` = `nextStart` while `hasMore` is true: `nextStart` is the exact offset where this call stopped. `nextPage` is only set when that offset falls on a page boundary (a multiple of 10) and is null otherwise, because a page number would repeat reviews already returned. Counts: `business.reviewCount` is the review count Yelp shows for the business; `business.ratingHistogram` and `business.reviewsCountByLanguage` count the reviews in every language, and Yelp updates them separately from `reviewCount`, so their sums can differ from it by a few; `totalResults` is how many reviews match this call's `language`, `rating` and `query` (the total that `start` pages through). A business with no reviews returns an empty list; an unknown alias or URL is a 404. Billed one unit per 10 reviews returned (`pagesFetched`).



## OpenAPI

````yaml /api-reference/openapi.json post /local/yelp-reviews
openapi: 3.1.0
info:
  title: ScrapeUnblocker API
  description: >-
    Public API for the ScrapeUnblocker proxy/anti-bot service. Authenticate
    every request with the `x-scrapeunblocker-key` header. Documented here:
    page-source extraction, Google SERP scraping, image fetch, and the dedicated
    plugin endpoints (search engines, marketplaces, reviews, travel, social and
    more). All other paths exist for internal operations and are intentionally
    hidden from this spec.
  version: 3.0.0
servers:
  - url: https://api.scrapeunblocker.com
    description: Production
security: []
paths:
  /local/yelp-reviews:
    post:
      tags:
        - Plugins
      summary: Scrape Yelp business reviews
      description: >-
        Given a Yelp `business` (page URL, alias or business id), returns the
        `business` summary (`businessId`, `alias`, `name`, `url`, `rating`,
        `reviewCount`, `ratingHistogram`, `reviewsCountByLanguage`,
        `categories`, `city`, `region`) and its `reviews`: `id`, `url`,
        `rating`, `text`, `language`, `publishedDate`, `date`, `user` (`name`,
        `location`, `reviewCount`, `friendCount`, `photoCount`, `isElite`,
        `eliteYear`), `photos`, `videos`, `reactions` (`helpful`, `thanks`,
        `loveThis`, `ohNo`), `ownerResponse`, `checkIns` and the author's
        `previousReviews`. Sort like yelp.com (`relevance`, `newest`, `oldest`,
        `highest`, `lowest`, `elites`), filter by `language`, star `rating`, a
        search `query` or `since` a date, and page with `page` / `start` up to
        `max_reviews` per call. To continue, call again with `start` =
        `nextStart` while `hasMore` is true: `nextStart` is the exact offset
        where this call stopped. `nextPage` is only set when that offset falls
        on a page boundary (a multiple of 10) and is null otherwise, because a
        page number would repeat reviews already returned. Counts:
        `business.reviewCount` is the review count Yelp shows for the business;
        `business.ratingHistogram` and `business.reviewsCountByLanguage` count
        the reviews in every language, and Yelp updates them separately from
        `reviewCount`, so their sums can differ from it by a few; `totalResults`
        is how many reviews match this call's `language`, `rating` and `query`
        (the total that `start` pages through). A business with no reviews
        returns an empty list; an unknown alias or URL is a 404. Billed one unit
        per 10 reviews returned (`pagesFetched`).
      operationId: yelp_reviews_local_yelp_reviews_post
      parameters:
        - name: business
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              The business: its Yelp page URL
              (https://www.yelp.com/biz/gary-danko-san-francisco), its alias
              (gary-danko-san-francisco) or its business id
              (WavvLdfdP6g8aZTtbBQHTw, the `businessId` of /local/yelp results).
              An id is answered fastest; a URL or alias costs one business-page
              fetch first.
            title: Business
          description: >-
            The business: its Yelp page URL
            (https://www.yelp.com/biz/gary-danko-san-francisco), its alias
            (gary-danko-san-francisco) or its business id
            (WavvLdfdP6g8aZTtbBQHTw, the `businessId` of /local/yelp results).
            An id is answered fastest; a URL or alias costs one business-page
            fetch first.
        - name: max_reviews
          in: query
          required: false
          schema:
            type: integer
            description: How many reviews to return (1-500).
            default: 20
            title: Max Reviews
          description: How many reviews to return (1-500).
        - name: page
          in: query
          required: false
          schema:
            type: integer
            description: >-
              1-based Yelp review page to start from (10 reviews per page, like
              yelp.com's own pages; 1-1000). To continue a previous response,
              pass its `nextStart` as `start`.
            default: 1
            title: Page
          description: >-
            1-based Yelp review page to start from (10 reviews per page, like
            yelp.com's own pages; 1-1000). To continue a previous response, pass
            its `nextStart` as `start`.
        - name: start
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            description: >-
              0-based review offset to start from instead of `page`. Pass
              `nextStart` from a previous response to continue exactly where it
              stopped.
            title: Start
          description: >-
            0-based review offset to start from instead of `page`. Pass
            `nextStart` from a previous response to continue exactly where it
            stopped.
        - name: sort
          in: query
          required: false
          schema:
            type: string
            description: >-
              Review order, as yelp.com's "Sort by" menu: relevance, newest,
              oldest, highest, lowest, elites. `relevance` is Yelp's default
              order.
            default: relevance
            title: Sort
          description: >-
            Review order, as yelp.com's "Sort by" menu: relevance, newest,
            oldest, highest, lowest, elites. `relevance` is Yelp's default
            order.
        - name: language
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Reviews written in this language (two-letter code: en, fr, de, es,
              ...). Yelp lists one language at a time. Default: the language
              most of the business's reviews are in;
              `business.reviewsCountByLanguage` lists the others.
            title: Language
          description: >-
            Reviews written in this language (two-letter code: en, fr, de, es,
            ...). Yelp lists one language at a time. Default: the language most
            of the business's reviews are in; `business.reviewsCountByLanguage`
            lists the others.
        - name: rating
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Only reviews with these star ratings, comma-separated (e.g.
              `1,2`).
            title: Rating
          description: Only reviews with these star ratings, comma-separated (e.g. `1,2`).
        - name: query
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Only reviews that mention this phrase (yelp.com's review search).
            title: Query
          description: Only reviews that mention this phrase (yelp.com's review search).
        - name: since
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Only reviews written on or after this date (YYYY-MM-DD). With
              `sort=newest` paging stops at the first older review.
            title: Since
          description: >-
            Only reviews written on or after this date (YYYY-MM-DD). With
            `sort=newest` paging stops at the first older review.
        - name: proxy_country
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Exit-IP country (ISO-2). Leave blank: Yelp serves reviews the same
              to every country.
            title: Proxy Country
          description: >-
            Exit-IP country (ISO-2). Leave blank: Yelp serves reviews the same
            to every country.
      responses:
        '200':
          description: JSON with `business`, a `reviews` array, totals and paging.
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid parameters / not a Yelp business.
        '404':
          description: Yelp has no business with that id, URL or alias.
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '502':
          description: Blocked by Yelp or no review feed returned.
        '504':
          description: Fetch timed out.
      security:
        - ScrapeUnblockerKey: []
components:
  schemas:
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    ScrapeUnblockerKey:
      type: apiKey
      in: header
      name: x-scrapeunblocker-key
      description: Your ScrapeUnblocker API key. Apply on every request.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.