{
  "openapi": "3.0.1",
  "info": {
    "title": "RedNote (Xiaohongshu) Scraper - Trending Notes & Creators",
    "description": "Scrape RedNote / Xiaohongshu with no login or cookies: trending notes across 12 category feeds, full note detail (body, all images, video stream URLs, likes/collects/comments/shares as real numbers) and creator profiles with RedID, IP location, followers, engagement rate. Monitor-only-new mode.",
    "version": "0.1",
    "x-build-id": "JZS0yWbFSve9Lynbr"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapesage~rednote-xiaohongshu-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapesage-rednote-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/scrapesage~rednote-xiaohongshu-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapesage-rednote-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/scrapesage~rednote-xiaohongshu-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapesage-rednote-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": {
          "mode": {
            "title": "What to scrape",
            "enum": [
              "trending",
              "notes",
              "creators",
              "creatorLeads"
            ],
            "type": "string",
            "description": "trending = sweep the RedNote category feeds for what is performing right now. notes = full detail for note URLs you paste. creators = full profile for creator URLs you paste. creatorLeads = discover trending notes, then return one enriched creator record per unique author (KOL lead list).",
            "default": "trending"
          },
          "channels": {
            "title": "Category feeds",
            "type": "array",
            "description": "Which RedNote feeds to sweep in 'trending' and 'creatorLeads' modes. 'Recommended' is the main homepage feed and is the most reliable. Ignored for the URL-based modes.",
            "items": {
              "type": "string",
              "enum": [
                "recommend",
                "homefeed.fashion_v3",
                "homefeed.cosmetics_v3",
                "homefeed.food_v3",
                "homefeed.travel_v3",
                "homefeed.fitness_v3",
                "homefeed.household_product_v3",
                "homefeed.career_v3",
                "homefeed.love_v3",
                "homefeed.movie_and_tv_v3",
                "homefeed.gaming_v3",
                "homefeed.video_v3"
              ],
              "enumTitles": [
                "Recommended (homepage feed)",
                "Fashion / outfits",
                "Beauty / makeup",
                "Food",
                "Travel",
                "Fitness",
                "Home & living",
                "Career",
                "Relationships",
                "Film & TV",
                "Gaming",
                "Video"
              ]
            },
            "default": [
              "recommend"
            ]
          },
          "noteUrls": {
            "title": "Note URLs or IDs",
            "type": "array",
            "description": "Used when mode = 'Note details'. Paste RedNote note links (share links or /explore/... links). Keep the xsec_token query parameter that RedNote puts in the link - Xiaohongshu requires it to open a note. A bare 24-character note ID also works if you have a matching token.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "creatorUrls": {
            "title": "Creator profile URLs or IDs",
            "type": "array",
            "description": "Used when mode = 'Creator profiles'. Paste RedNote profile links such as https://www.xiaohongshu.com/user/profile/<id>?xsec_token=... Keep the xsec_token if the link has one.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum records to return. Set 0 for unlimited (the run still stops safely before its timeout).",
            "default": 50
          },
          "enrichNoteDetails": {
            "title": "Fetch full note detail",
            "type": "boolean",
            "description": "ON (recommended): open every note for the full body text, every image, video stream URLs, topics and the complete engagement breakdown. OFF: return only the lightweight feed card (title, cover, likes) - faster, but a much thinner dataset.",
            "default": true
          },
          "includeAuthorProfile": {
            "title": "Enrich notes with author profile",
            "type": "boolean",
            "description": "Adds the author's RedID handle, IP location and follower count to every note. One extra request per unique author, cached across the run.",
            "default": true
          },
          "maxNotesPerCreator": {
            "title": "Max notes listed per creator",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "How many of a creator's own notes to include in their record (RedNote profile pages list about 30).",
            "default": 30
          },
          "concurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Parallel requests. Lower this if you see empty results - Xiaohongshu throttles bursts from one IP.",
            "default": 8
          },
          "monitorMode": {
            "title": "Monitor mode (only new)",
            "type": "boolean",
            "description": "Remember what previous runs returned and emit only records that have not been seen before. Ideal on a schedule for tracking new trending content or newly surfaced creators.",
            "default": false
          },
          "monitorStoreName": {
            "title": "Monitor store name",
            "type": "string",
            "description": "Named key-value store that holds the seen-IDs state for monitor mode. Use a different name per tracked topic to keep their histories separate.",
            "default": "rednote-monitor"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Xiaohongshu rate-limits repeated requests from a single IP, so a proxy is strongly recommended. The default shared Apify proxy pool is tested and sufficient for these surfaces. If you run very large jobs and start seeing empty results, switch to RESIDENTIAL.",
            "default": {
              "useApifyProxy": true
            }
          },
          "urlsFromFile": {
            "title": "Import URLs from a file",
            "type": "string",
            "description": "Paste a list of URLs (one per line), OR one link to a .txt/.csv file, Google Sheet or Google Drive file containing them. Lets you import many Start URLs at once instead of typing each. Google Sheet/Drive share links are handled automatically."
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}