{
  "openapi": "3.0.1",
  "info": {
    "title": "BikeDekho Scraper: Used Bikes, New Bikes & Dealers",
    "description": "Scrape bikedekho.com, India's motorcycle and scooter marketplace: used bike listings with price, km driven, owners, city and photos, new bike specs and ex-showroom prices, on-road prices by city and dealer showrooms. No login, no proxy. Export JSON, CSV or Excel.",
    "version": "0.1",
    "x-build-id": "GcZnCAiAfU07oKuqp"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/recordsdata~bikedekho-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-recordsdata-bikedekho-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/recordsdata~bikedekho-scraper/runs": {
      "post": {
        "operationId": "runs-sync-recordsdata-bikedekho-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/recordsdata~bikedekho-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-recordsdata-bikedekho-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 collect",
            "enum": [
              "used-bikes",
              "new-bikes",
              "on-road-prices",
              "dealers",
              "urls"
            ],
            "type": "string",
            "description": "used-bikes = second-hand motorcycle and scooter ads for the filters below. new-bikes = one row per new model with specs, ex-showroom price and ratings. on-road-prices = one row per variant and city with RTO, insurance and on-road price. dealers = authorised showrooms by brand and city. urls = addresses and ad numbers you list.",
            "default": "used-bikes"
          },
          "maxItems": {
            "title": "Maximum items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stops after this many rows (all record types together). Free plans are limited to 10 items per run.",
            "default": 50
          },
          "cities": {
            "title": "Cities",
            "type": "array",
            "description": "City names as written on the site, for example Delhi, Mumbai, Bangalore, Pune or Navi Mumbai. used-bikes: each city is a separate search, empty means all of India. on-road-prices: the cities to price (empty means Delhi). dealers: the cities to list (empty means every city that has showrooms). An unknown city is reported, it never silently returns another place.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "brands": {
            "title": "Brands",
            "type": "array",
            "description": "Brand names as written on the site, for example Royal Enfield, Honda, TVS, Bajaj, Yamaha or Hero. Case does not matter. The brand list is read from the site at run time and an unknown brand is reported with the available ones. Empty means every brand.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "models": {
            "title": "Models",
            "type": "array",
            "description": "Model names or parts of them, for example Activa, Classic 350, Pulsar or SP125. A name picks every model that contains all its words. Used bikes, new bikes and on-road prices read it; with brands it narrows inside them.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "bodyTypes": {
            "title": "Body types (used bikes)",
            "type": "array",
            "description": "Only used bikes of these types (any of them). Empty means all types.",
            "items": {
              "type": "string",
              "enum": [
                "street",
                "cruiser",
                "sports-naked",
                "scooters",
                "sports",
                "tourer",
                "moped",
                "commuter",
                "adventure-tourer",
                "sports-tourer",
                "cafe-racer",
                "super",
                "electric",
                "off-road",
                "roadster",
                "dirt",
                "scrambler"
              ],
              "enumTitles": [
                "Street",
                "Cruiser",
                "Sports naked",
                "Scooters",
                "Sports",
                "Tourer",
                "Moped",
                "Commuter",
                "Adventure tourer",
                "Sports tourer",
                "Cafe racer",
                "Super bike",
                "Electric",
                "Off road",
                "Roadster",
                "Dirt",
                "Scrambler"
              ]
            },
            "default": []
          },
          "fuelType": {
            "title": "Fuel (used bikes)",
            "enum": [
              "any",
              "petrol",
              "electric"
            ],
            "type": "string",
            "description": "Only used bikes with this fuel. The site lists petrol and electric bikes.",
            "default": "any"
          },
          "engineSizes": {
            "title": "Engine size (used bikes)",
            "type": "array",
            "description": "Only used bikes in these engine size ranges. The site accepts one range per search, so each range you pick is searched separately. Empty means all sizes.",
            "items": {
              "type": "string",
              "enum": [
                "upto-100cc",
                "100cc-125cc",
                "125cc-150cc",
                "150cc-200cc",
                "200cc-250cc",
                "250cc-500cc",
                "500cc-1000cc",
                "above-1000cc"
              ],
              "enumTitles": [
                "Up to 100 cc",
                "100 to 125 cc",
                "125 to 150 cc",
                "150 to 200 cc",
                "200 to 250 cc",
                "250 to 500 cc",
                "500 to 1000 cc",
                "Above 1000 cc"
              ]
            },
            "default": []
          },
          "priceFrom": {
            "title": "Minimum price (INR)",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Only used bikes priced at or above this amount in rupees. 0 or empty means no limit."
          },
          "priceTo": {
            "title": "Maximum price (INR)",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Only used bikes priced at or below this amount in rupees. 0 or empty means no limit."
          },
          "yearFrom": {
            "title": "Year from",
            "minimum": 0,
            "maximum": 2100,
            "type": "integer",
            "description": "Only bikes of this registration year or newer. 0 or empty means no limit."
          },
          "yearTo": {
            "title": "Year to",
            "minimum": 0,
            "maximum": 2100,
            "type": "integer",
            "description": "Only bikes of this registration year or older. 0 or empty means no limit."
          },
          "mileageFrom": {
            "title": "Minimum km driven",
            "minimum": 0,
            "maximum": 1500000,
            "type": "integer",
            "description": "Only bikes with at least this odometer reading in km. 0 or empty means no limit."
          },
          "mileageTo": {
            "title": "Maximum km driven",
            "minimum": 0,
            "maximum": 1500000,
            "type": "integer",
            "description": "Only bikes with at most this odometer reading in km. 0 or empty means no limit."
          },
          "listedWithinDays": {
            "title": "Listed within the last days",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Only ads posted in the last N days (the posting time is read from the ad number). 0 or empty means no limit. The site has no sort order, so the search still reads its result pages in order and keeps the recent ones."
          },
          "startUrls": {
            "title": "Addresses",
            "type": "array",
            "description": "urls mode. bikedekho.com addresses: a used-bike search (https://www.bikedekho.com/used-bikes+in+pune), one ad page, a model page (/honda/sp125), a price page (/honda/sp125/price-in-delhi), a brand page (/honda-bikes) or a showroom page (/showrooms/honda/delhi). Ad numbers can go in the next field.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "listingIds": {
            "title": "Ad numbers",
            "type": "array",
            "description": "urls mode. The 24 letters and digits at the end of an ad address, for example 68983ad96f92ad806d0f17e2. Each one returns the full ad.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "scrapeDetails": {
            "title": "Open each used-bike ad",
            "type": "boolean",
            "description": "On: open every ad page to add transmission, engine, power, brakes, tyres, ABS, registration state, views, last update and seller type (vehicle-detail-record). Off: the data of the search result only, much faster (vehicle-record).",
            "default": false
          },
          "includeContactDetails": {
            "title": "Include dealer contact details",
            "type": "boolean",
            "description": "Adds the business phone and WhatsApp number of dealer showrooms (dealers mode). Seller names, phone numbers and full registration plates of used-bike ads are never output.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new rows (monitor)",
            "type": "boolean",
            "description": "Skips every row delivered in an earlier run with the same monitor name, so scheduled runs return only what is new and you pay only for those.",
            "default": false
          },
          "trackPriceChanges": {
            "title": "Report price changes",
            "type": "boolean",
            "description": "Needs Only new rows. A used bike, model or on-road price seen before with a different price comes back as a price-change row with the previous price and the change in percent.",
            "default": false
          },
          "stateKey": {
            "title": "Monitor name",
            "type": "string",
            "description": "Name of the memory used by Only new rows. Use one name per saved search. Empty derives a name from your filters.",
            "default": ""
          },
          "resetSeen": {
            "title": "Forget seen rows",
            "type": "boolean",
            "description": "Clears the memory of the monitor name before this run.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Parallel page reads",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many pages are read at the same time (1 to 5). Requests are paced at about four per second in total, so a higher value adds little.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. Empty means direct requests, which work. Add a proxy only if your own network needs one."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}