{
  "openapi": "3.0.1",
  "info": {
    "title": "Xiaohongshu (RedNote) Scraper - Notes, Profiles & Feeds",
    "description": "Scrape Xiaohongshu (RedNote, Little Red Book, 小红书) without login: full notes by link, public profiles with their latest notes, and the home feed and topic channels. Title, text, tags, likes, saves, comments, shares, images, video link, author. Errors free.",
    "version": "0.1",
    "x-build-id": "hY3wR1k1LdgA4fLrp"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapewise~xiaohongshu-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapewise-xiaohongshu-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/scrapewise~xiaohongshu-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapewise-xiaohongshu-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/scrapewise~xiaohongshu-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapewise-xiaohongshu-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "noteUrls": {
            "title": "Note links",
            "type": "array",
            "description": "Note links copied from the browser, one per line, like https://www.xiaohongshu.com/explore/<id>?xsec_token=... A link without its xsec_token (or a bare note id) is tried too: notes indexed by search engines open without it; one that does not open returns a free XSEC_TOKEN_REQUIRED row. Short xhslink.com share links are tried; one that does not resolve to a note comes back as a free NOTE_UNAVAILABLE row. Each note returns its text, tags, likes, saves, comments, shares, date, all images and the video link, charged as a full note. Also accepts 'urls' or 'startUrls'.",
            "items": {
              "type": "string"
            }
          },
          "searchKeywords": {
            "title": "Search keywords",
            "type": "array",
            "description": "Keywords, one per line, best in Chinese (露营, 护肤, 上海美食). Xiaohongshu search needs an account, so the Actor finds notes for each keyword through public search engines and opens each one in full (text, tags, likes, saves, comments, shares, date, images, video link), charged as a full note. Results are notes indexed by search engines, usually a few months old, not the newest posts; English terms return few notes. Each row carries searchKeyword and discoveredVia. Also accepts 'keywords', 'searchQueries' or 'query'.",
            "items": {
              "type": "string"
            }
          },
          "maxNotesPerKeyword": {
            "title": "Max notes per keyword",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum full notes for each keyword (default 30). A Chinese keyword usually yields 30 to 50 indexed notes, and 80 to 150 with the variations below. Notes that do not open are skipped and not charged. Also accepts 'maxResults'.",
            "default": 30
          },
          "expandKeywords": {
            "title": "Add keyword variations",
            "type": "boolean",
            "description": "On (default): when a keyword runs out of notes, the Actor also searches a few variations (the keyword + 推荐, 攻略, 分享, 教程) to reach your limit. Off: only the exact keyword.",
            "default": true
          },
          "profileUrls": {
            "title": "Profiles",
            "type": "array",
            "description": "Profiles, one per line, as a link like https://www.xiaohongshu.com/user/profile/<id> or the 24-character user id. Returns one profile row (nickname, red id, bio, IP location, tags, followers, following, notes posted, total likes and saves) and, with the option below, the notes on its first page. Also accepts 'profiles' or 'userIds'.",
            "items": {
              "type": "string"
            }
          },
          "includeProfileNotes": {
            "title": "Include the profile's notes",
            "type": "boolean",
            "description": "On (default): adds one row per note on the profile's first page (up to about 30) with title, type, likes, date, cover and pinned flag, charged as note cards. Xiaohongshu hides the note ids there from logged-out visitors, so these rows have no link. Turn off to get only the profile row.",
            "default": true
          },
          "feedChannels": {
            "title": "Feed channels",
            "type": "array",
            "description": "Feed channels, one per line: recommend (the home feed, fresh notes and new ones on every page) or a topic channel: fashion, food, cosmetics, movies, career, love, home, gaming, travel, fitness. Chinese names (推荐, 穿搭, 美食...) also work. To logged-out visitors Xiaohongshu serves the topic channels from an older selection (notes from 2023, measured on 2026-09-30); the home feed is current. Also accepts 'channels'.",
            "items": {
              "type": "string"
            }
          },
          "maxItemsPerChannel": {
            "title": "Max notes per channel",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum notes for each feed channel (default 30). Each page brings about 30 recommended notes and more pages bring new ones, so 90 reads about 3 pages. Each note card is charged, or each full note with 'Open each feed note' on. Also accepts 'maxItems'.",
            "default": 30
          },
          "openFeedNotes": {
            "title": "Open each feed note (full details)",
            "type": "boolean",
            "description": "Off (default): feed notes come as cards (title, type, likes, cover, author, link), charged as note cards. On: each feed note is opened for its text, tags, saves, comments, shares, date, all images and the video link, and is charged as a full note instead. Slower run.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new notes since the last run",
            "type": "boolean",
            "description": "For scheduled runs. Remembers which notes of each profile and channel were already delivered (in a named key-value store in your account, 'xiaohongshu-scraper-only-new') and skips them on the next runs: skipped notes are not charged and do not count against the limit. The profile row comes only on the first run or together with a new note. On the first run, every feed note read is marked as seen, even past the limit. Note links are always returned. Also accepts 'onlyNewNotes'.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify Proxy, on by default, is strongly recommended: Xiaohongshu blocks one IP after about 20 pages, and the Actor rotates IPs to keep going. Keep the default.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}