{
  "openapi": "3.0.1",
  "info": {
    "title": "Buycycle.com — Used Bike Finder",
    "description": "Search Buycycle — Europe's largest used bike marketplace. Filter by brand, size, price, year, and condition. Get curated highlights, deal scores, and new-listing alerts.\nWant more bike marketplaces rolled into the same Actor? Email hello@inovaflow.io and we'll add them.",
    "version": "1.5",
    "x-build-id": "Q3lX5cOnFKuKdfXfZ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/inovaflow~buycycle-hunter-pw/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-inovaflow-buycycle-hunter-pw",
        "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/inovaflow~buycycle-hunter-pw/runs": {
      "post": {
        "operationId": "runs-sync-inovaflow-buycycle-hunter-pw",
        "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/inovaflow~buycycle-hunter-pw/run-sync": {
      "post": {
        "operationId": "run-sync-inovaflow-buycycle-hunter-pw",
        "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": {
          "model": {
            "title": "Search keyword",
            "type": "string",
            "description": "Free-text search. Try a model ('canyon aeroad'), a brand ('pinarello'), or a frame name ('tarmac sl7'). Leave blank to browse using filters only."
          },
          "sortBy": {
            "title": "Sort results by",
            "enum": [
              "relevance",
              "new",
              "lowest-price",
              "highest-price"
            ],
            "type": "string",
            "description": "How buycycle orders the listings before we collect them. Affects which results you get if you cap pages.",
            "default": "lowest-price"
          },
          "country": {
            "title": "Buycycle marketplace country",
            "enum": [
              "de",
              "at",
              "be",
              "bg",
              "ch",
              "cy",
              "cz",
              "dk",
              "ee",
              "es",
              "fi",
              "fr",
              "gr",
              "hr",
              "hu",
              "ie",
              "it",
              "lt",
              "lu",
              "lv",
              "nl",
              "no",
              "pl",
              "pt",
              "ro",
              "se",
              "si",
              "sk",
              "us"
            ],
            "type": "string",
            "description": "Pick the country you want to shop in. Determines the currency, the seller pool, and the residential proxy region we use to access buycycle. Buycycle ships internationally between most of these countries.",
            "default": "de"
          },
          "locationScope": {
            "title": "Seller location scope",
            "enum": [
              "continent",
              "country"
            ],
            "type": "string",
            "description": "Limit results by where the seller is located, relative to the country picked above. Leave empty to search worldwide."
          },
          "brands": {
            "title": "Brands",
            "type": "array",
            "description": "Pick one or more brands. Showing the most-listed brands on buycycle.",
            "items": {
              "type": "string",
              "enum": [
                "specialized",
                "trek",
                "scott",
                "giant",
                "cannondale",
                "orbea",
                "bianchi",
                "bmc",
                "canyon",
                "cube",
                "pinarello",
                "wilier",
                "colnago",
                "merida",
                "ridley",
                "cervélo",
                "lapierre",
                "focus",
                "ktm",
                "megamo",
                "mondraker",
                "santa cruz",
                "bh",
                "factor",
                "look",
                "3t",
                "basso",
                "ghost",
                "stevens",
                "argon 18",
                "haibike",
                "rose",
                "liv",
                "mmr",
                "cinelli",
                "de rosa",
                "bottecchia",
                "commencal",
                "berria",
                "olympia",
                "felt",
                "yt industries",
                "pivot",
                "rockrider",
                "rocky mountain",
                "peugeot",
                "whistle",
                "van rysel",
                "propain",
                "transition",
                "corratec",
                "bulls",
                "fuji",
                "bergamont",
                "guerciotti",
                "conway",
                "kona",
                "radon",
                "gt",
                "yeti",
                "kross",
                "cipollini",
                "moustache",
                "superior",
                "kuota",
                "eddy merckx",
                "marin",
                "time",
                "sunn",
                "simplon",
                "sensa",
                "koga",
                "open",
                "fondriest",
                "torpado",
                "norco",
                "atala",
                "vitus",
                "lombardo",
                "isaac",
                "enve",
                "niner",
                "ibis",
                "riese & müller",
                "massi",
                "fantic",
                "mendiz",
                "origine",
                "scor",
                "aurum",
                "b'twin",
                "r raymon",
                "custom",
                "rotwild",
                "nukeproof",
                "decathlon",
                "raleigh",
                "storck",
                "brompton",
                "stromer",
                "litespeed",
                "other brands"
              ]
            },
            "default": []
          },
          "frameSizes": {
            "title": "Frame size",
            "type": "array",
            "description": "Pick one or more sizes. Sizes are based on seat tube length in centimeters.",
            "items": {
              "type": "string",
              "enum": [
                "xxxs",
                "xxs",
                "xs",
                "s",
                "m",
                "l",
                "xl",
                "xxl",
                "one-size-bike"
              ],
              "enumTitles": [
                "XXXS (<45 cm)",
                "XXS (45–47 cm)",
                "XS (48–49 cm)",
                "S (50–52 cm)",
                "M (53–55 cm)",
                "L (56–58 cm)",
                "XL (59–62 cm)",
                "XXL (>63 cm)",
                "One-size bike"
              ]
            },
            "default": []
          },
          "priceMin": {
            "title": "Min price",
            "minimum": 0,
            "type": "integer",
            "description": "Lower price bound in the marketplace's currency. Based on the 'incl.' price (with buyer protection fee)."
          },
          "priceMax": {
            "title": "Max price",
            "minimum": 0,
            "type": "integer",
            "description": "Upper price bound in the marketplace's currency. Based on the 'incl.' price (with buyer protection fee)."
          },
          "yearMin": {
            "title": "Earliest model year",
            "minimum": 2000,
            "type": "integer",
            "description": "Only show bikes from this model year or newer."
          },
          "yearMax": {
            "title": "Latest model year",
            "minimum": 2000,
            "type": "integer",
            "description": "Only show bikes from this model year or older."
          },
          "conditions": {
            "title": "Bike condition",
            "type": "array",
            "description": "Buycycle's condition grades. 'Fair' = visible wear. 'Good' = light use. 'Very Good' = like-new. 'New' = unused. 'Brand new with guarantee' = unused with manufacturer warranty.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "Fair",
                "Good",
                "Very Good",
                "New",
                "Brand new with guarantee"
              ]
            },
            "default": []
          },
          "frameMaterials": {
            "title": "Frame material",
            "type": "array",
            "description": "Pick one or more materials.",
            "items": {
              "type": "string",
              "enum": [
                "carbon",
                "aluminum",
                "steel",
                "titanium"
              ]
            },
            "default": []
          },
          "brakeTypes": {
            "title": "Brake type",
            "type": "array",
            "description": "Pick one or more brake types.",
            "items": {
              "type": "string",
              "enum": [
                "disc",
                "rim",
                "drum",
                "coaster",
                "other"
              ]
            },
            "default": []
          },
          "shifts": {
            "title": "Shifting type",
            "type": "array",
            "description": "Electronic = Di2 / eTap / EPS. Mechanical = traditional cable shifters.",
            "items": {
              "type": "string",
              "enum": [
                "electronic",
                "mechanical",
                "other"
              ]
            },
            "default": []
          },
          "isFrameset": {
            "title": "Frameset or complete bike",
            "enum": [
              "frameset",
              "complete"
            ],
            "type": "string",
            "description": "Leave empty to include both. Pick a value to limit to one type."
          },
          "isMotor": {
            "title": "E-bike or non-electric",
            "enum": [
              "ebike",
              "non-ebike"
            ],
            "type": "string",
            "description": "Leave empty to include both. Pick a value to limit to one type."
          },
          "sellerType": {
            "title": "Sold by",
            "type": "array",
            "description": "Private = individuals selling their own bikes. Shop = commercial dealers and resellers.",
            "items": {
              "type": "string",
              "enum": [
                "private",
                "commercial"
              ],
              "enumTitles": [
                "Private seller",
                "Shop / dealer"
              ]
            },
            "default": []
          },
          "highDemandOnly": {
            "title": "High-demand listings only",
            "type": "boolean",
            "description": "Only return bikes with buycycle's official 'High demand' badge. Buycycle assigns this badge based on their internal signals (views, wishlists, recency). These bikes tend to sell fast.",
            "default": false
          },
          "maxPages": {
            "title": "Max pages to crawl",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Safety cap on pagination. Each page contains roughly 50 bikes. Increase for broader searches; keep low for faster, cheaper runs.",
            "default": 2
          },
          "returnOnly": {
            "title": "Highlights filter",
            "enum": [
              "all",
              "new_only",
              "with_discount",
              "cheapest_per_model",
              "best_value",
              "ignore_overpriced",
              "popular"
            ],
            "type": "string",
            "description": "Pick a strategy to curate the main Output dataset. 'New listings only' tracks changes between runs — perfect for daily monitoring with notifications. The full crawl is always available in Storage → 'full-results'.",
            "default": "all"
          },
          "minDiscountPct": {
            "title": "Minimum discount %",
            "minimum": 0,
            "maximum": 90,
            "type": "integer",
            "description": "Only used when Highlights filter = 'Discounted bikes'. Bikes with at least this discount off MSRP will appear in the highlights.",
            "default": 20
          },
          "minWishlistCount": {
            "title": "Minimum wishlist count",
            "minimum": 0,
            "type": "integer",
            "description": "Only used when Highlights filter = 'Popular'. Bikes wishlisted by at least this many users will appear in the highlights.",
            "default": 20
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}