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

# User posts

> Returns a Kwai account's public posts, newest first (~18 on the first page, then 20 a page): each with its id and link, caption and hashtags, post time, views, likes, comments and shares, length, size, the MP4, cover and thumbnail, Kwai's category, pinned flag, original-sound flag, the sound (`music`: name, artist, audio file, duration, owner — when Kwai sends it), the album it belongs to, download and AI-generated flags, and the author. The first page also lists the profile's albums (id, post count, views, cover, first caption) and how many it has. Pass the returned `cursor` back (with the same profile) for the next page. Only publicly available data is returned.

> [!NOTE]
>
> **Cost: 1 credit** per successful request. Errors and cache hits (`cache_max_age`) are free.

> [accordion] Copy for AI assistant
>
> Paste this into ChatGPT, Claude or your coding assistant to generate working code for this endpoint (use the copy button).
>
> ```text Prompt
> I want to make an API call to /v1/kwai/user/posts. Here are the details:
>
> Endpoint: GET https://api.scraperize.com/v1/kwai/user/posts
> Description: Returns a Kwai account's public posts, newest first (~18 on the first page, then 20 a page): each with its id and link, caption and hashtags, post time, views, likes, comments and shares, length, size, the MP4, cover and thumbnail, Kwai's category, pinned flag, original-sound flag, the sound (`music`: name, artist, audio file, duration, owner — when Kwai sends it), the album it belongs to, download and AI-generated flags, and the author. The first page also lists the profile's albums (id, post count, views, cover, first caption) and how many it has. Pass the returned `cursor` back (with the same profile) for the next page. Only publicly available data is returned.
>
> Required Headers:
> - x-api-key: Your API key
>
> Parameters:
> - handle (string): The Kwai ID (with or without `@`), e.g. `LaisXiblei78552`. Required unless `url` is given.
> - url (string): The profile link, e.g. `https://www.kwai.com/@LaisXiblei78552`. Required unless `handle` is given.
> - cursor (string): The `cursor` from the previous page, to get the next one. Omit for the first page.
> - cache_max_age (select): Optional. Return a cached result if one this age or newer exists — served for **0 credits** with `meta.cached=true` and `meta.cachedAt`. Otherwise a fresh scrape runs (**1 credit**) and refreshes the cache. Omit to always scrape fresh.
>
> Example Response:
> {
>   "data": {
>     "kwaiId": "LaisXiblei78552",
>     "posts": [
>       {
>         "id": "5204340957733854371",
>         "url": "https://www.kwai.com/@LaisXiblei78552/video/5204340957733854371",
>         "caption": "Não existe mais perfeito!#receitas#recipes#AnimaisNo",
>         "hashtags": [
>           "receitas"
>         ],
>         "createdAt": "2026-11-08T06:01:12.002Z",
>         "views": 46,
>         "likes": 3,
>         "comments": 0,
>         "shares": 0,
>         "durationMs": 30395,
>         "width": 576,
>         "height": 1024,
>         "videoUrl": "https://ak-sgp-cdn.kwai.net/upic/2026/11/08/14/BMjAyNjExMDgxNDAxMTFfMTUwMDAxNDQzODY1MjE2XzE1MDExMTY0MDUxMDk1N18wXzM=_b_Bcdb9acc620ebc068a6ed81517605d3d7.mp4?tag…",
>         "coverUrl": "https://aws-sgp-pic.kwai.net/upic/2026/11/08/14/BMjAyNjExMDgxNDAxMTFfMTUwMDAxNDQzODY1MjE2XzE1MDExMTY0MDUxMDk1N18wXzM=_offn_B5bda52716be088e3e662e7a7c4d3e57f.web…",
>         "thumbnailUrl": "https://p16-kimg.kwai.net/kimg/EKzM1y8qmgEKAnMzEg1waG90by1vdmVyc2VhGoQBdXBpYy8yMDI2LzExLzA4LzE0L0JNakF5TmpFeE1EZ3hOREF4TVRGZk1UVXdNREF4TkRRek9EWTFNakUyWHpFMU1ER…",
>         "category": "Cooking",
>         "isPinned": false,
>         "hasOriginalSound": true,
>         "soundAuthor": "Lais Xible",
>         "music": null,
>         "album": null,
>         "allowsDownload": true,
>         "isAiGenerated": null,
>         "author": {
>           "userId": "150001443865216",
>           "eid": null,
>           "kwaiId": "LaisXiblei78552",
>           "name": "Lais Xible",
>           "avatarUrl": "https://aws-sgp-pic.kwai.net/bs2/overseaHead/growth_shadow_45e9c2c9fed34773bcf9f5889bbc4ba1_t.jpg?bp=50010",
>           "isVerified": false
>         }
>       }
>     ],
>     "count": 20,
>     "cursor": "eyJrIjoibGFpc3hpYmxlaTc4NTUyIiwiYyI6IjE3Nzc3NDg2NTAyNDgifQ",
>     "hasMore": true,
>     "albums": [
>       {
>         "id": "139352104854619393",
>         "postCount": 2,
>         "views": 53,
>         "firstPostCaption": "Verdades secretas # #emagrecimento #natal #f",
>         "coverUrl": "http://ak-sgp-pic.kwai.net/upic/2025/12/23/14/BMjAyNTEyMjMxNDI0NDdfMTUwMDAxNDQzODY1MjE2XzE1MDExMDExMTg0MTUyOF8wXzM=_oscn2_B8ee191acb48ee173d5bf7014ae064873.webp…",
>         "subscribers": 0,
>         "type": 0,
>         "updatedAt": null,
>         "author": {
>           "userId": "150001443865216",
>           "name": "Lais Xible"
>         }
>       }
>     ],
>     "albumCount": 1,
>     "fetchedAt": "2026-11-11T09:06:18.565Z"
>   },
>   "meta": {
>     "requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f",
>     "creditsCharged": 1,
>     "creditsRemaining": 4999,
>     "cached": false
>   }
> }
>
> Please help me write code in my preferred programming language to make this API call and handle the response appropriately. Include error handling and best practices.
> ```


## OpenAPI

````yaml /api-reference/openapi.json get /v1/kwai/user/posts
openapi: 3.0.3
info:
  title: Scraperize API
  version: 1.0.0
  description: >-
    Extract public data from social media platforms as clean JSON. Endpoints are
    split by platform and by what they return, e.g. `GET /v1/twitter/tweet`.


    ## Authentication

    Send your API key in the `x-api-key` header (or `Authorization: Bearer
    <key>`). Create keys in your dashboard.


    ## Credits

    Each successful live scrape costs **1 credit**. Credits are prepaid and
    never expire.


    ## Caching

    Every endpoint accepts an optional `cache_max_age`
    (`1d`|`3d`|`7d`|`14d`|`30d`). A cache hit within that window is returned for
    **0 credits**.


    ## Responses

    Success returns `{ "data": …, "meta": { "requestId", … } }`. Errors return
    `{ "error": { "code", "message", "requestId" } }` with a matching HTTP
    status. `meta` on a scrape carries `creditsCharged`, `creditsRemaining`,
    `cached`, and (on a hit) `cachedAt`.


    ## Rate limits

    Requests are limited per team per minute; over the limit returns `429` with
    a `Retry-After` header.
servers:
  - url: https://api.scraperize.com
    description: Production
security:
  - ApiKeyAuth: []
tags:
  - name: Twitter
    description: Twitter / X scraping endpoints
  - name: Facebook
    description: Facebook scraping endpoints
  - name: Linkme
    description: Linkme (link.me) scraping endpoints
  - name: Amazon
    description: Amazon (creator shop / storefront) scraping endpoints
  - name: Linkbio
    description: Linkbio (lnk.bio) scraping endpoints
  - name: Pillar
    description: Pillar (pillar.io) scraping endpoints
  - name: Komi
    description: Komi (komi.io) scraping endpoints
  - name: Linktree
    description: Linktree (linktr.ee) scraping endpoints
  - name: Kick
    description: Kick (kick.com) scraping endpoints
  - name: Snapchat
    description: Snapchat (snapchat.com) scraping endpoints
  - name: Telegram
    description: Telegram (t.me) scraping endpoints
  - name: LinkedIn
    description: LinkedIn scraping endpoints
  - name: Twitch
    description: Twitch scraping endpoints
  - name: TikTok
    description: TikTok (tiktok.com) scraping endpoints
  - name: Instagram
    description: Instagram scraping endpoints
  - name: Lagos Life
    description: Lagos Life scraping endpoints
  - name: Bluesky
    description: Bluesky (bsky.app) scraping endpoints
  - name: Threads
    description: Threads (threads.com) scraping endpoints
  - name: Reddit
    description: Reddit (reddit.com) scraping endpoints
  - name: Rumble
    description: Rumble (rumble.com) scraping endpoints
  - name: SoundCloud
    description: SoundCloud (soundcloud.com) scraping endpoints
  - name: Kwai
    description: Kwai (kwai.com) scraping endpoints
  - name: Apple Music
    description: Apple Music (music.apple.com) scraping endpoints
  - name: Truth Social
    description: Truth Social (truthsocial.com) scraping endpoints
  - name: YouTube
    description: YouTube (youtube.com) scraping endpoints
paths:
  /v1/kwai/user/posts:
    get:
      tags:
        - Kwai
      summary: User posts
      description: >-
        Returns a Kwai account's public posts, newest first (~18 on the first
        page, then 20 a page): each with its id and link, caption and hashtags,
        post time, views, likes, comments and shares, length, size, the MP4,
        cover and thumbnail, Kwai's category, pinned flag, original-sound flag,
        the sound (`music`: name, artist, audio file, duration, owner — when
        Kwai sends it), the album it belongs to, download and AI-generated
        flags, and the author. The first page also lists the profile's albums
        (id, post count, views, cover, first caption) and how many it has. Pass
        the returned `cursor` back (with the same profile) for the next page.
        Only publicly available data is returned.
      parameters:
        - name: handle
          in: query
          required: false
          description: >-
            The Kwai ID (with or without `@`), e.g. `LaisXiblei78552`. Required
            unless `url` is given.
          schema:
            type: string
          example: LaisXiblei78552
        - name: url
          in: query
          required: false
          description: >-
            The profile link, e.g. `https://www.kwai.com/@LaisXiblei78552`.
            Required unless `handle` is given.
          schema:
            type: string
        - name: cursor
          in: query
          required: false
          description: >-
            The `cursor` from the previous page, to get the next one. Omit for
            the first page.
          schema:
            type: string
        - name: cache_max_age
          in: query
          required: false
          description: >-
            Optional. Return a cached result if one this age or newer exists —
            served for **0 credits** with `meta.cached=true` and
            `meta.cachedAt`. Otherwise a fresh scrape runs (**1 credit**) and
            refreshes the cache. Omit to always scrape fresh.
          schema:
            type: string
            enum:
              - 1d
              - 3d
              - 7d
              - 14d
              - 30d
          example: 7d
      responses:
        '200':
          description: One page of posts.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                  meta:
                    type: object
                    description: >-
                      requestId + credit/caching metadata (creditsCharged,
                      creditsRemaining, cached, cachedAt).
                required:
                  - data
                  - meta
              example:
                data:
                  kwaiId: LaisXiblei78552
                  posts:
                    - id: '5204340957733854371'
                      url: >-
                        https://www.kwai.com/@LaisXiblei78552/video/5204340957733854371
                      caption: Não existe mais perfeito!#receitas#recipes#AnimaisNo
                      hashtags:
                        - receitas
                        - recipes
                        - AnimaisNo
                      createdAt: '2026-11-08T06:01:12.002Z'
                      views: 46
                      likes: 3
                      comments: 0
                      shares: 0
                      durationMs: 30395
                      width: 576
                      height: 1024
                      videoUrl: >-
                        https://ak-sgp-cdn.kwai.net/upic/2026/11/08/14/BMjAyNjExMDgxNDAxMTFfMTUwMDAxNDQzODY1MjE2XzE1MDExMTY0MDUxMDk1N18wXzM=_b_Bcdb9acc620ebc068a6ed81517605d3d7.mp4?tag=1-1794387978-s-0-ujy7tlgpay-c134a22db5994605
                      coverUrl: >-
                        https://aws-sgp-pic.kwai.net/upic/2026/11/08/14/BMjAyNjExMDgxNDAxMTFfMTUwMDAxNDQzODY1MjE2XzE1MDExMTY0MDUxMDk1N18wXzM=_offn_B5bda52716be088e3e662e7a7c4d3e57f.webp?tag=1-1794387978-s-0-33ubqiwalw-65a0d406bbb27517
                      thumbnailUrl: >-
                        https://p16-kimg.kwai.net/kimg/EKzM1y8qmgEKAnMzEg1waG90by1vdmVyc2VhGoQBdXBpYy8yMDI2LzExLzA4LzE0L0JNakF5TmpFeE1EZ3hOREF4TVRGZk1UVXdNREF4TkRRek9EWTFNakUyWHpFMU1ERXhNVFkwTURVeE1EazFOMTh3WHpNPV9vZmZuX0I1YmRhNTI3MTZiZTA4OGUzZTY2MmU3YTdjNGQzZTU3Zi53ZWJw.webp
                      category: Cooking
                      isPinned: false
                      hasOriginalSound: true
                      soundAuthor: Lais Xible
                      music: null
                      album: null
                      allowsDownload: true
                      isAiGenerated: null
                      author:
                        userId: '150001443865216'
                        eid: null
                        kwaiId: LaisXiblei78552
                        name: Lais Xible
                        avatarUrl: >-
                          https://aws-sgp-pic.kwai.net/bs2/overseaHead/growth_shadow_45e9c2c9fed34773bcf9f5889bbc4ba1_t.jpg?bp=50010
                        isVerified: false
                    - id: '5227421904590778344'
                      url: >-
                        https://www.kwai.com/@LaisXiblei78552/video/5227421904590778344
                      caption: >-
                        Ingredientes: - 1 ovo; 1 rodela de 🍍 picado; 1 CS de
                        farinha de arroz; 1 CS de 🥥 ralado; 5 gotinhas de
                        adoçante; 1 colher de café de fermento em pó. . Calda: 2
                        colheres de sopa de leite ninho desnatado; 50ml de leite
                        desnatado; 2 gotinhas de adoçante. 👉🏼 Modo de fazer no
                        vídeo!#DesafioBBCash#receitasimples
                      hashtags:
                        - DesafioBBCash
                        - receitasimples
                      createdAt: '2026-11-03T06:05:02.839Z'
                      views: 28
                      likes: 0
                      comments: 0
                      shares: 0
                      durationMs: 46046
                      width: 720
                      height: 1280
                      videoUrl: >-
                        https://ak-sgp-cdn.kwai.net/upic/2026/11/03/14/BMjAyNjExMDMxNDA1MDJfMTUwMDAxNDQzODY1MjE2XzE1MDExMTYxNzc3Njg2NF8wXzM=_b_B15e7d833b3a9005639efbd4e963efdde.mp4?tag=1-1794387978-s-0-lbbxswr64h-304b0cd3433cb103
                      coverUrl: >-
                        https://aws-sgp-pic.kwai.net/upic/2026/11/03/14/BMjAyNjExMDMxNDA1MDJfMTUwMDAxNDQzODY1MjE2XzE1MDExMTYxNzc3Njg2NF8wXzM=_offn_Be87647b7e23057d0e66030bb009136ce.webp?tag=1-1794387978-s-0-ejnirhun53-1280dd9d149bd120
                      thumbnailUrl: >-
                        https://ak-sgp-pic.kwai.net/upic/2026/11/03/14/BMjAyNjExMDMxNDA1MDJfMTUwMDAxNDQzODY1MjE2XzE1MDExMTYxNzc3Njg2NF8wXzM=_oscn2_B03d63044d5d213ade76d2a182e1fe482.webp?bp=50010
                      category: Cooking
                      isPinned: false
                      hasOriginalSound: true
                      soundAuthor: Lais Xible
                      music: null
                      album: null
                      allowsDownload: true
                      isAiGenerated: null
                      author:
                        userId: '150001443865216'
                        eid: null
                        kwaiId: LaisXiblei78552
                        name: Lais Xible
                        avatarUrl: >-
                          https://aws-sgp-pic.kwai.net/bs2/overseaHead/growth_shadow_45e9c2c9fed34773bcf9f5889bbc4ba1_t.jpg?bp=50010
                        isVerified: false
                    - id: '5233614351605947518'
                      url: >-
                        https://www.kwai.com/@LaisXiblei78552/video/5233614351605947518
                      caption: ...
                      hashtags: []
                      createdAt: '2026-11-03T05:44:52.159Z'
                      views: 5
                      likes: 0
                      comments: 0
                      shares: 0
                      durationMs: 31464
                      width: 576
                      height: 1024
                      videoUrl: >-
                        https://ak-sgp-cdn.kwai.net/upic/2026/11/03/13/BMjAyNjExMDMxMzQ0NTJfMTUwMDAxNDQzODY1MjE2XzE1MDExMTYxNzczMjE0MV8wXzM=_b_B71babec1a2c124a7b6e862c1facd44cd.mp4?tag=1-1794387978-s-0-sd7mb3v1e8-1529e3c864eab6e5
                      coverUrl: >-
                        https://aws-sgp-pic.kwai.net/upic/2026/11/03/13/BMjAyNjExMDMxMzQ0NTJfMTUwMDAxNDQzODY1MjE2XzE1MDExMTYxNzczMjE0MV8wXzM=_offn_Be6e6ff447eee7eedc596f49bedc91b26.webp?tag=1-1794387978-s-0-1jiipae7v3-b222bcb61e211c1f
                      thumbnailUrl: >-
                        https://aws-sgp-pic.kwai.net/upic/2026/11/03/13/BMjAyNjExMDMxMzQ0NTJfMTUwMDAxNDQzODY1MjE2XzE1MDExMTYxNzczMjE0MV8wXzM=_oscn2_Bae3f91fb04ae418b93609ede3c999ae6.webp?bp=50010
                      category: Food Display
                      isPinned: false
                      hasOriginalSound: true
                      soundAuthor: Lais Xible
                      music: null
                      album: null
                      allowsDownload: true
                      isAiGenerated: null
                      author:
                        userId: '150001443865216'
                        eid: null
                        kwaiId: LaisXiblei78552
                        name: Lais Xible
                        avatarUrl: >-
                          https://aws-sgp-pic.kwai.net/bs2/overseaHead/growth_shadow_45e9c2c9fed34773bcf9f5889bbc4ba1_t.jpg?bp=50010
                        isVerified: false
                  count: 20
                  cursor: eyJrIjoibGFpc3hpYmxlaTc4NTUyIiwiYyI6IjE3Nzc3NDg2NTAyNDgifQ
                  hasMore: true
                  albums:
                    - id: '139352104854619393'
                      postCount: 2
                      views: 53
                      firstPostCaption: 'Verdades secretas # #emagrecimento #natal #f'
                      coverUrl: >-
                        http://ak-sgp-pic.kwai.net/upic/2025/12/23/14/BMjAyNTEyMjMxNDI0NDdfMTUwMDAxNDQzODY1MjE2XzE1MDExMDExMTg0MTUyOF8wXzM=_oscn2_B8ee191acb48ee173d5bf7014ae064873.webp?bp=50010
                      subscribers: 0
                      type: 0
                      updatedAt: null
                      author:
                        userId: '150001443865216'
                        name: Lais Xible
                  albumCount: 1
                  fetchedAt: '2026-11-11T09:06:18.565Z'
                meta:
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
                  creditsCharged: 1
                  creditsRemaining: 4999
                  cached: false
        '400':
          description: Invalid or expired cursor (or one for another profile).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: BAD_REQUEST
                  message: The request was invalid.
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
        '401':
          description: Missing, invalid, or revoked API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: UNAUTHORIZED
                  message: API key required — pass it in the `x-api-key` header.
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
        '402':
          description: Not enough credits for this request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: INSUFFICIENT_CREDITS
                  message: >-
                    This request costs 1 credit, but your balance is 0. Top up
                    to continue.
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
        '404':
          description: No Kwai account with that Kwai ID, or the account is private.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: NOT_FOUND
                  message: >-
                    The requested content was not found (it may not exist, be
                    deleted, or be private).
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
        '422':
          description: Invalid query parameters (`handle` or `url` is required).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: VALIDATION_ERROR
                  message: Request validation failed
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
                  details:
                    - path: url
                      message: url is required
        '429':
          description: Over the per-minute rate limit — honour `Retry-After`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: RATE_LIMITED
                  message: >-
                    Rate limit exceeded — max 100 requests per 60s. Retry in
                    ~30s.
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
        '503':
          description: >-
            Temporarily unavailable — retry after `Retry-After`. `error.code`
            tells you why: `UPSTREAM_BLOCKED` (the source blocked this request),
            `EXTRACTION_FAILED` (the source returned unexpected data),
            `PLATFORM_UNAVAILABLE` (the source is down), or
            `SERVICE_UNAVAILABLE` (we are at capacity).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: UPSTREAM_BLOCKED
                  message: >-
                    The source is temporarily unavailable. Please try again
                    shortly.
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              example: NOT_FOUND
            message:
              type: string
              example: The requested content was not found.
            requestId:
              type: string
              example: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
            details:
              type: array
              items:
                type: object
              description: Present on validation errors.
          required:
            - code
            - message
            - requestId
      required:
        - error
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Your API key. Send it in the `x-api-key` header (or `Authorization:
        Bearer <key>`). Create and manage keys from your dashboard.

````

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