{
  "openapi": "3.0.1",
  "info": {
    "title": "JD.com Products Scraper 京东 — Prices, Variants, Barcodes & Stock",
    "description": "JD.com (京东 / Jingdong) products scraper with no login: search by keyword or paste SKU ids and product links. Get every variant with its real CNY price (not ¥1??9), stock, delivery, barcode, brand, shop, reviews and rating, or a fast, cheaper search-results-only sweep.",
    "version": "0.1",
    "x-build-id": "qdU0ScYyulHOMQb1W"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~jd-com-price-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-jd-com-price-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/memo23~jd-com-price-scraper/runs": {
      "post": {
        "operationId": "runs-sync-memo23-jd-com-price-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/memo23~jd-com-price-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-jd-com-price-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": {
          "products": {
            "title": "SKU ids or product links",
            "type": "array",
            "description": "One per line: a numeric SKU id (`100012043978`), a product link (`https://item.jd.com/100012043978.html`, `https://item.m.jd.com/product/100012043978.html`, `wqitem.jd.com` links) or share text that contains one. Short links (`3.cn`, `u.jd.com`) only open in a browser: open them and paste the item.jd.com link.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Search keywords",
            "type": "array",
            "description": "Chinese works best (`华为手机`, `茅台`). Each keyword brings up to **Products per keyword** products, and each of those is fetched with its variants like the ids above. Up to 5, they are JD's own top 5; above 5 they come from JD's keyword listing pages (JD 热卖, promoted listings in JD's order), with the top 5 as a fallback when those pages return nothing.",
            "items": {
              "type": "string"
            }
          },
          "searchKeywords": {
            "title": "Search keywords for products",
            "type": "boolean",
            "description": "ON (default): each keyword returns JD's top 5 products with all their variants. OFF: keywords are only used for suggestions (below), and nothing is searched or charged for them.",
            "default": true
          },
          "maxProductsPerKeyword": {
            "title": "Products per keyword",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many products each keyword brings into the run, 1-500. Default 5 (JD's top 5). Above 5, products come from JD's keyword listing pages, about 30 new products per page, each with its review count, positive-review rate and review tags; every product is then looked up with its variants and billed per SKU row. Maximum SKU rows in total still caps the run.",
            "default": 5
          },
          "searchResultsOnly": {
            "title": "Search results only (fast, cheaper)",
            "type": "boolean",
            "description": "ON: each keyword result is saved as one row straight from JD's listing card: title, real price, sales, review count, positive rate, review tags, shop and image. No variant lookup, so runs are faster and each row is billed at the lower search-result price. Good for price sweeps and market sizing across many keywords. Rows have no stock, barcode or per-variant data, and they follow JD's listing order. SKU ids and product links still return full variant rows. OFF (default): every result is looked up with all its variants. Available from 22 November 2026; until then the run looks up each result's variants as usual.",
            "default": false
          },
          "sortBy": {
            "title": "Sort keyword products by",
            "enum": [
              "relevance",
              "priceAsc",
              "priceDesc",
              "mostReviews",
              "bestRated",
              "newest"
            ],
            "type": "string",
            "description": "Order of each keyword's products before their variants are looked up, so Maximum SKU rows in total keeps the ones you want. Sorts the products the keyword brought (see Products per keyword), by the price, review count, positive-review rate or listing date on JD's search card. Products without that value go last. searchRank keeps JD's own position. Default: JD's order.",
            "default": "relevance"
          },
          "minPrice": {
            "title": "Min price (CNY)",
            "minimum": 0,
            "type": "number",
            "description": "Keep only products and SKU rows priced at or above this, in yuan. Keyword results outside the band are dropped before their variants are fetched, so they cost nothing. Leave empty for no floor."
          },
          "maxPrice": {
            "title": "Max price (CNY)",
            "minimum": 0,
            "type": "number",
            "description": "Keep only products and SKU rows priced at or below this, in yuan. Leave empty for no ceiling."
          },
          "includeSuggestions": {
            "title": "Add JD search suggestions",
            "type": "boolean",
            "description": "For each keyword, also save the related searches JD suggests (相关搜索, e.g. `手机` → `苹果17pro max`, `红米k90`). Saved to the `SUGGESTIONS` record of the run's key-value store, not as dataset rows. Free: no charge per suggestion. Up to 100 keywords per run.",
            "default": false
          },
          "allVariants": {
            "title": "Return every variant of each product",
            "type": "boolean",
            "description": "ON (default): one row per variant (color, storage, size, bundle) with its own price and stock. OFF: only the SKU you entered, one row per product.",
            "default": true
          },
          "maxVariantsPerProduct": {
            "title": "Maximum variants per product",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Cap on variant rows per product when every variant is on. The SKU you entered always comes first. Default and maximum 100.",
            "default": 100
          },
          "includeProductDetails": {
            "title": "Add product details",
            "type": "boolean",
            "description": "Adds the product page fields to each row: full image gallery, model, category id, weight, warranty, place of origin, JD Logistics flag, and the barcode when the variant data has none. Billed once per product. Prices and stock always come from the variant data, which is unmasked.",
            "default": false
          },
          "onlyInStock": {
            "title": "Only in-stock SKUs",
            "type": "boolean",
            "description": "Drop variants that cannot be ordered right now (out of stock, presale, reservation). Default: false.",
            "default": false
          },
          "maxItems": {
            "title": "Maximum SKU rows in total",
            "minimum": 1,
            "type": "integer",
            "description": "Cap on rows for the whole run. Default 1000. Free-plan runs are capped at 100.",
            "default": 1000
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}