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

# Shop Search

> Paginated keyword search over TikTok Shop products, 30 per page, with the TikTok video each listing is bound to, matching shops and related searches.

<Note>
  **US** paginates with `offset`: pages hold 30 products, pass back `pagination.next_offset` until `has_more` is false, and the first page also carries `shops`, `related_searches`, `related_categories`, and each product's `video` (`play_count`, `like_count`, `author_name`) and `brand`.
</Note>

<Note>
  **Markets** — `region=US` (default), `GB` and `ID` (Tokopedia) are served in their local currency. The Southeast Asian markets `SG`, `MY`, `PH`, `TH`, `VN` and `JP` are now supported via native in-region signing and paginate with `pagination.next_page_token` (pass it back as `page_token`) rather than `offset`. `region=TW` returns HTTP 200 with `availability: "not_operated"` (TikTok runs no Shop marketplace in Taiwan). For a market-wide trending list, see [Shop Bestsellers](/api-reference/endpoint/tiktok/shop-bestsellers).
</Note>

<Note>
  Each request costs **5 credits**. Failed requests are not charged.
</Note>


## OpenAPI

````yaml GET /v1/tiktok/shop/search
openapi: 3.1.0
info:
  title: ScrapeBadger TikTok API
  version: 1.0.0
  description: >-
    TikTok scraping API for user profiles, videos, comments, transcripts,
    hashtags, music/sounds, search, trending, and the EU Commercial Content (ad
    transparency) library. Returns clean structured JSON; handles signing,
    anti-bot bypass, and regional proxy routing automatically.
servers:
  - url: https://scrapebadger.com
    description: Production
security:
  - apiKeyAuth: []
paths:
  /v1/tiktok/shop/search:
    get:
      tags:
        - TikTok Shop
      summary: Shop Search
      description: >-
        Keyword search over TikTok Shop products, 30 per page. Pass back
        `pagination.next_offset` as `offset` for the next page. The first page
        also carries matching shops, related searches, related categories and
        each product's bound TikTok video. US only.
      operationId: searchTikTokShop
      parameters:
        - name: q
          in: query
          required: true
          schema:
            type: string
          description: Keyword, e.g. wireless earbuds.
        - name: region
          in: query
          schema:
            type: string
            default: US
          description: Market — US only for this endpoint.
        - name: offset
          in: query
          schema:
            type: integer
            default: 0
            minimum: 0
          description: Pass back the previous page's pagination.next_offset.
      responses:
        '200':
          description: Shop Search
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShopSearchResponse'
              example:
                products:
                  - product_id: '1732156048655421577'
                    title: >-
                      True Wireless OWS Bluetooth In-Ear Portable Earbuds -
                      Electronic Waterproof True Wireless Headphones with HiFi
                      Audio, Call Noise-Canceling Mic, Vibration Motor, for
                      Music, Phone Calls, Ideal Valentine's Gift
                    url: >-
                      https://shop.tiktok.com/us/pdp/tws-wireless-earbuds-deep-bass-noise-reduction-sports/1732156048655421577
                    image: >-
                      https://p16-oec-general-useast5.ttcdn-us.com/tos-useast5-i-omjb5zjo8w-...
                    price:
                      amount: 15.99
                      original: null
                      discount: null
                      currency: USD
                      symbol: $
                    rating: 5
                    review_count: 1
                    sold_count: 1
                    seller:
                      id: '7494304794736231561'
                      name: AirMelody local
                      logo: https://p16-oec-general.ttcdn-us.com/tos-alisg-i-a...
                    brand: null
                    labels:
                      - Free shipping
                    video: null
                    rank: null
                shops: []
                related_searches: []
                related_categories: []
                pagination:
                  offset: 30
                  count: 10
                  has_more: false
                  next_offset: 0
                query: wireless earbuds
                region: US
        '400':
          description: Unsupported market or feature for the market
components:
  schemas:
    ShopSearchResponse:
      properties:
        products:
          items:
            $ref: '#/components/schemas/ShopProduct'
          title: Products
          type: array
        shops:
          items:
            $ref: '#/components/schemas/ShopSeller'
          title: Shops
          type: array
        related_searches:
          items:
            type: string
          title: Related Searches
          type: array
        related_categories:
          items:
            $ref: '#/components/schemas/ShopCategory'
          title: Related Categories
          type: array
        pagination:
          $ref: '#/components/schemas/ShopOffsetPage'
        query:
          title: Query
          type: string
        region:
          title: Region
          type: string
      required:
        - query
        - region
      title: ShopSearchResponse
      type: object
    ShopProduct:
      properties:
        product_id:
          title: Product Id
          type: string
        title:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Title
        url:
          title: Url
          type: string
        image:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Image
        price:
          $ref: '#/components/schemas/ShopPrice'
        rating:
          anyOf:
            - type: number
            - type: 'null'
          default: null
          title: Rating
        review_count:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Review Count
        sold_count:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Sold Count
        seller:
          anyOf:
            - $ref: '#/components/schemas/ShopSeller'
            - type: 'null'
          default: null
        brand:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Brand
        labels:
          items:
            type: string
          title: Labels
          type: array
        video:
          anyOf:
            - $ref: '#/components/schemas/ShopVideo'
            - type: 'null'
          default: null
        rank:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Rank
      required:
        - product_id
        - url
      title: ShopProduct
      type: object
    ShopSeller:
      properties:
        id:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Id
        name:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Name
        logo:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Logo
      title: ShopSeller
      type: object
    ShopCategory:
      properties:
        id:
          title: Id
          type: string
        name:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Name
        slug:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Slug
        level:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Level
        is_leaf:
          anyOf:
            - type: boolean
            - type: 'null'
          default: null
          title: Is Leaf
        parent_id:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Parent Id
        image:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Image
        url:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Url
      required:
        - id
      title: ShopCategory
      type: object
    ShopOffsetPage:
      properties:
        offset:
          default: 0
          title: Offset
          type: integer
        count:
          default: 0
          title: Count
          type: integer
        has_more:
          default: false
          title: Has More
          type: boolean
        next_offset:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Next Offset
      title: ShopOffsetPage
      type: object
    ShopPrice:
      properties:
        amount:
          anyOf:
            - type: number
            - type: 'null'
          default: null
          title: Amount
        original:
          anyOf:
            - type: number
            - type: 'null'
          default: null
          title: Original
        discount:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Discount
        currency:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Currency
        symbol:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Symbol
      title: ShopPrice
      type: object
    ShopVideo:
      description: The TikTok video a product card is bound to (search results only).
      properties:
        id:
          title: Id
          type: string
        title:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Title
        author_name:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Author Name
        play_count:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Play Count
        like_count:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Like Count
        cover_url:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Cover Url
        video_url:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Video Url
      required:
        - id
      title: ShopVideo
      type: object
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````

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