Wish Ratings API

The Ratings API from Wish — 2 operation(s) for ratings.

Operations 2

GET /api/v3/ratings/products Fetch product ratings #
GET /api/v3/ratings/products/{id} Fetch the overall rating of the product #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/wish-ratings-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

wish-ratings-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    email: partner-api@wish.com
  x-wish-dev-contact:
    assignee: kwei
    email: marketplace-external-api@contextlogic.com
  description: 'Wish Marketplace V3 API


    # General Information


    The Wish Marketplace API will be using oAuth to authenticate in order to offer better security for its users


    * Learn about oAuth here.'
  version: 3.0.65
  title: Wish Marketplace V3 Ratings API
servers:
- url: https://merchant.wish.com
  description: V3 API endpoint
security:
- OAuth2: []
tags:
- name: Ratings
paths:
  /api/v3/ratings/products:
    get:
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ProductRating'
                type: array
          description: successful operation
        '400':
          content:
            application/json:
              examples:
                ExtAPIInvalidParam:
                  value:
                    message: Incorrect sort_by parameter is provided, please review the documentation for correct use!
                    code: '1003'
                ExtAPIUnauthorizedAccess:
                  value:
                    message: Unauthorized Request
                    code: '1006'
              schema:
                $ref: '#/components/schemas/APIError'
          description: failed request
      parameters:
      - required: false
        in: query
        description: Id of a product associated with the ratings. If the id is provided, it will only return the ratings of the specific product. If the id is not given, it will return ratings of all products starting from September 9th, 2019 unless a later created_at_min time is specified
        name: product_id
        schema:
          type: string
          format: object-id
      - required: false
        in: query
        description: The starting point of the ratings retrieved
        name: offset
        schema:
          default: 0
          type: integer
      - required: false
        in: query
        description: It is a limit on the number of ratings that can be returned. Limit can range from <b>1</b> to <b>500</b> items.
        name: limit
        schema:
          default: 100
          minimum: 1
          type: integer
          maximum: 500
      - required: false
        in: query
        description: A date/time string which indicates the earliest creation time of product ratings to fetch. If created_at_min is not provided, the default is to set it to the creation time of the earliest created rating.
        name: created_at_min
        schema:
          type: string
          format: date-time
      - required: false
        in: query
        description: A date/time string which indicates the latest creation time of product ratings to fetch. If created_at_max is not provided, created_at_max will be set to the current time.
        name: created_at_max
        schema:
          type: string
          format: date-time
      - description: Filter ratings by value. ratings range from <b>1</b> to <b>5</b>. If ratings is not provided, the default is to select ratings in all values.
        required: false
        name: ratings
        examples:
          MultipleRatings:
            value:
            - 1
            - 2
            - 4
        in: query
        schema:
          items:
            minimum: 0
            type: integer
            maximum: 5
            format: int32
          type: array
      - required: false
        in: query
        description: Sort results by the given attribute. Enabled attributes are `created_at` and `rating` Default order is `desc`, use `asc` to sort in reverse.
        name: sort_by
        schema:
          default: created_at.desc
          pattern: ^(created_at|rating)(\.(asc|desc))?$
          type: string
      tags:
      - Ratings
      summary: Fetch product ratings
      security:
      - OAuth2:
        - ratings:read
      operationId: FetchProductRatings
      x-code-samples:
      - lang: java_unirest
        source: "HttpResponse<String> response = Unirest.get(\"https://merchant.wish.com/api/v3/ratings/products?product_id=SOME_STRING_VALUE&offset=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE&created_at_min=SOME_STRING_VALUE&created_at_max=SOME_STRING_VALUE&ratings=SOME_ARRAY_VALUE&sort_by=SOME_STRING_VALUE\")\n  .header(\"authorization\", \"Bearer REPLACE_BEARER_TOKEN\")\n  .asString();"
      - lang: php_curl
        source: "<?php\n\n$curl = curl_init();\n\ncurl_setopt_array($curl, array(\n  CURLOPT_URL => \"https://merchant.wish.com/api/v3/ratings/products?product_id=SOME_STRING_VALUE&offset=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE&created_at_min=SOME_STRING_VALUE&created_at_max=SOME_STRING_VALUE&ratings=SOME_ARRAY_VALUE&sort_by=SOME_STRING_VALUE\",\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_ENCODING => \"\",\n  CURLOPT_MAXREDIRS => 10,\n  CURLOPT_TIMEOUT => 30,\n  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n  CURLOPT_CUSTOMREQUEST => \"GET\",\n  CURLOPT_HTTPHEADER => array(\n    \"authorization: Bearer REPLACE_BEARER_TOKEN\"\n  ),\n));\n\n$response = curl_exec($curl);\n$err = curl_error($curl);\n\ncurl_close($curl);\n\nif ($err) {\n  echo \"cURL Error #:\" . $err;\n} else {\n  echo $response;\n}"
      - lang: javascript_jquery
        source: "var settings = {\n  \"async\": true,\n  \"crossDomain\": true,\n  \"url\": \"https://merchant.wish.com/api/v3/ratings/products?product_id=SOME_STRING_VALUE&offset=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE&created_at_min=SOME_STRING_VALUE&created_at_max=SOME_STRING_VALUE&ratings=SOME_ARRAY_VALUE&sort_by=SOME_STRING_VALUE\",\n  \"method\": \"GET\",\n  \"headers\": {\n    \"authorization\": \"Bearer REPLACE_BEARER_TOKEN\"\n  }\n}\n\n$.ajax(settings).done(function (response) {\n  console.log(response);\n});"
      - lang: shell_curl
        source: "curl --request GET \\\n  --url 'https://merchant.wish.com/api/v3/ratings/products?product_id=SOME_STRING_VALUE&offset=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE&created_at_min=SOME_STRING_VALUE&created_at_max=SOME_STRING_VALUE&ratings=SOME_ARRAY_VALUE&sort_by=SOME_STRING_VALUE' \\\n  --header 'authorization: Bearer REPLACE_BEARER_TOKEN'"
      - lang: python_requests
        source: 'import requests


          url = "https://merchant.wish.com/api/v3/ratings/products"


          querystring = {"product_id":"SOME_STRING_VALUE","offset":"SOME_INTEGER_VALUE","limit":"SOME_INTEGER_VALUE","created_at_min":"SOME_STRING_VALUE","created_at_max":"SOME_STRING_VALUE","ratings":"SOME_ARRAY_VALUE","sort_by":"SOME_STRING_VALUE"}


          headers = {''authorization'': ''Bearer REPLACE_BEARER_TOKEN''}


          response = requests.request("GET", url, headers=headers, params=querystring)


          print(response.text)'
      description: The goal of the rating API is to allow merchants to locate and track their product ratings more easily. If the total rating of a specific product changed, merchants should easily be able to determine which orders caused the changes.
  /api/v3/ratings/products/{id}:
    get:
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductOverallRating'
          description: successful operation
        '400':
          content:
            application/json:
              examples:
                ExtAPIUnauthorizedAccess:
                  value:
                    message: Unauthorized Request
                    code: '1006'
              schema:
                $ref: '#/components/schemas/APIError'
          description: failed request
      parameters:
      - required: true
        in: path
        description: ID of the product to query
        name: id
        schema:
          type: string
          format: object-id
      tags:
      - Ratings
      summary: Fetch the overall rating of the product
      security:
      - OAuth2:
        - ratings:read
      operationId: FetchOverallProductRatings
      x-code-samples:
      - lang: java_unirest
        source: "HttpResponse<String> response = Unirest.get(\"https://merchant.wish.com/api/v3/ratings/products/{id}\")\n  .header(\"authorization\", \"Bearer REPLACE_BEARER_TOKEN\")\n  .asString();"
      - lang: php_curl
        source: "<?php\n\n$curl = curl_init();\n\ncurl_setopt_array($curl, array(\n  CURLOPT_URL => \"https://merchant.wish.com/api/v3/ratings/products/{id}\",\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_ENCODING => \"\",\n  CURLOPT_MAXREDIRS => 10,\n  CURLOPT_TIMEOUT => 30,\n  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n  CURLOPT_CUSTOMREQUEST => \"GET\",\n  CURLOPT_HTTPHEADER => array(\n    \"authorization: Bearer REPLACE_BEARER_TOKEN\"\n  ),\n));\n\n$response = curl_exec($curl);\n$err = curl_error($curl);\n\ncurl_close($curl);\n\nif ($err) {\n  echo \"cURL Error #:\" . $err;\n} else {\n  echo $response;\n}"
      - lang: javascript_jquery
        source: "var settings = {\n  \"async\": true,\n  \"crossDomain\": true,\n  \"url\": \"https://merchant.wish.com/api/v3/ratings/products/{id}\",\n  \"method\": \"GET\",\n  \"headers\": {\n    \"authorization\": \"Bearer REPLACE_BEARER_TOKEN\"\n  }\n}\n\n$.ajax(settings).done(function (response) {\n  console.log(response);\n});"
      - lang: shell_curl
        source: "curl --request GET \\\n  --url 'https://merchant.wish.com/api/v3/ratings/products/{id}' \\\n  --header 'authorization: Bearer REPLACE_BEARER_TOKEN'"
      - lang: python_requests
        source: 'import requests


          url = "https://merchant.wish.com/api/v3/ratings/products/{id}"


          headers = {''authorization'': ''Bearer REPLACE_BEARER_TOKEN''}


          response = requests.request("GET", url, headers=headers)


          print(response.text)'
      description: Enable merchants to retrieve the overall rating metrics for the product
components:
  schemas:
    RatingImage:
      type: object
      properties:
        url:
          type: string
          description: The URL of the image of the rating
        id:
          type: string
          description: The ID of the image
    RatingVideo:
      type: object
      properties:
        url:
          type: string
          description: The URL of the video of the rating
        thumbnail_url:
          type: string
          description: The thumbnail image URL for the video
        id:
          type: string
          description: The ID of the video
    ProductRating:
      type: object
      properties:
        comment:
          type: string
          description: Customer comment along with the rating
        rating:
          minimum: 0
          type: integer
          description: Value of the rating
          maximum: 5
          format: int32
        product_id:
          type: string
          description: Id of the product
          format: object-id
        videos:
          items:
            $ref: '#/components/schemas/RatingVideo'
          type: array
          description: The associated videos of the rating
        order_id:
          type: string
          description: Id of order following which the rating was created
          format: object-id
        created_at:
          type: string
          description: Creation time of the rating
          format: date-time
        variation_id:
          type: string
          description: Id of the variation
          format: object-id
        user_locale:
          type: string
          allOf:
          - $ref: '#/components/schemas/Locale'
        images:
          items:
            $ref: '#/components/schemas/RatingImage'
          type: array
          description: The associated images of the rating
        id:
          type: string
          description: ID of the rating
          format: object-id
    ProductOverallRating:
      type: object
      properties:
        average_rating:
          minimum: 0
          type: number
          description: This value represents the average rating of the product
          format: float
        ratings_count:
          type: integer
          description: The cumulative quantity of consumer ratings associated with the queried product
    APIError:
      required:
      - code
      - message
      type: object
      properties:
        message:
          type: string
        code:
          type: integer
          format: int32
    Locale:
      type: string
      description: A language tag (which is sometimes referred to as a 'locale identifier'). This consists of a 2-3 letter base language tag representing the language, optionally followed by additional subtags separated by '-'. The most common extra information is the country or region variant (like 'en-US' or 'fr-CA'). For more information, see specification [BCP 47](https://datatracker.ietf.org/doc/html/bcp47#section-2).
      format: BCP 47
  securitySchemes:
    OpenID:
      type: openIdConnect
      openIdConnectUrl: https://merchant.wish.com/oidc/.well-known/openid-configuration
    OAuth2:
      type: oauth2
      flows:
        authorizationCode:
          scopes:
            payments:write: Update payments
            tickets:write: Write customer tickets
            epc:read: read EPC info
            returns:write: Write returns
            returns:read: Read returns
            fbw:read: Read FBW
            products:read: Read products
            payments:read: Read payments
            fbw:write: Write FBW
            merchant:write: Write merchant
            products:write: Write products
            ratings:read: Read ratings
            videos:read: Read videos
            compliance:write: Write Compliance
            product_boost:read: Read ProductBoost
            listing_quality:read: Read listing quality
            webhook:write: Write webhook
            orders:read: Read orders
            compliance:read: Read Compliance
            fbs:read: Read FBS
            penalties:read: Read penalties
            penalties:write: Update penalties
            infractions:read: Read infractions
            orders:write: Update orders
            merchant:read: Read merchant
            notifications:write: Write notifications
            announcements:read: Read announcements
            product_boost:write: Write ProductBoost
            notifications:read: Read notifications
            webhook:read: Read webhook
            qoo10:read: Read Qoo10
            wps_parcel:write: Write WishParcel
            wps_parcel:read: Read WishParcel
            tickets:read: Read customer tickets
            infractions:write: Write infractions
            videos:write: Write videos
            epc:write: write EPC info
          tokenUrl: https://merchant.wish.com/api/v3/oauth/access_token
          refreshUrl: https://merchant.wish.com/api/v3/oauth/refresh_token
          authorizationUrl: https://merchant.wish.com/v3/oauth/authorize
externalDocs:
  url: https://merchant.wish.com/documentation/api/v3/explorer
  description: API explorer
x-wish-hidden: false