{
  "openapi": "3.0.1",
  "info": {
    "title": "Blocket Scraper: Ads, Prices, Cars and Counties",
    "description": "Blocket.se ads in Sweden: the marketplace and 17 vehicle types (bil, MC, båt) by keyword, category, län, dealer, plate or VIN, split past Blocket's 10,000 ad reach, no login. Rows: pris, märke, modell, miltal in mil and km, besiktning, Privat or Företag. Pay per result; price summary by län; API.",
    "version": "0.1",
    "x-build-id": "ovvr2gZhaOwNcEB0B"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/automation_craft~blocket-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-automation_craft-blocket-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/automation_craft~blocket-scraper/runs": {
      "post": {
        "operationId": "runs-sync-automation_craft-blocket-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/automation_craft~blocket-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-automation_craft-blocket-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": {
          "verticals": {
            "title": "What to search",
            "type": "array",
            "description": "Blocket's marketplace (general goods: furniture, electronics, clothes and every other category) and its vehicles (cars, motorcycles, boats and more), each its own search. Left empty: the marketplace, or vehicles when only vehicle settings are given.",
            "items": {
              "type": "string",
              "enum": [
                "marketplace",
                "vehicles"
              ],
              "enumTitles": [
                "Marketplace (general goods)",
                "Vehicles (cars, MC, boats and more)"
              ]
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Search words, each one its own search (\"soffa\", \"iphone 15\", \"volvo v70\", \"barnvagn\"). Blocket matches them in the ad texts. Left empty, each search reads without words, newest first.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Marketplace categories",
            "type": "array",
            "description": "Marketplace only: Blocket categories, sub categories or product categories by Blocket's Swedish name (\"Möbler och inredning\", \"Soffor\", \"Mobiltelefoner\") or Blocket's value (\"0.78\"). Each category is its own search, with its own price summary.",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "Affärsverksamhet",
                "Bygg och trädgård",
                "Djur och tillbehör",
                "Elektronik och vitvaror",
                "Fordonstillbehör",
                "Föräldrar och barn",
                "Kläder, kosmetika och accessoarer",
                "Konst och antikt",
                "Möbler och inredning",
                "Sport och friluftsliv",
                "Underhållning och hobby"
              ]
            }
          },
          "vehicleTypes": {
            "title": "Vehicle types",
            "type": "array",
            "description": "Vehicles only: which Blocket vehicle searches to read, each its own search. Left empty: cars.",
            "items": {
              "type": "string",
              "enum": [
                "car",
                "mc",
                "scooter",
                "atv",
                "snowmobile",
                "boat",
                "boatDock",
                "caravan",
                "mobileHome",
                "truck",
                "bus",
                "construction",
                "tractor",
                "agriTools",
                "threshers",
                "aTractor",
                "b2bAll"
              ],
              "enumTitles": [
                "Cars (Bil)",
                "Motorcycles (MC)",
                "Mopeds, scooters and moped cars",
                "ATVs",
                "Snowmobiles",
                "Boats (Båt)",
                "Boat berths (Båtplats)",
                "Caravans (Husvagnar)",
                "Motorhomes (Husbil)",
                "Trucks and trailers",
                "Buses and minibuses",
                "Construction machinery",
                "Tractors",
                "Forestry and farm machinery",
                "Combine harvesters",
                "A-tractors (A-traktorer)",
                "All business vehicles (trucks, buses, construction, farm)"
              ]
            }
          },
          "dealerIds": {
            "title": "Dealer ids (vehicles)",
            "type": "array",
            "description": "Every vehicle of one dealer: Blocket's dealer ids (the companyId of a dealer row) or a dealer's page link on Blocket (https://www.blocket.se/mobility/dealer/<id>/<name>, the companyPageUrl of a dealer row), each its own search per vehicle type (Blocket's own dealer filter). Not together with plates or vins.",
            "items": {
              "type": "string"
            }
          },
          "plates": {
            "title": "Plates to look up (vehicles)",
            "type": "array",
            "description": "Swedish plates such as \"ABC123\", \"ABC 123\" or \"ABC12A\", or a personalised plate of 2 to 7 letters and digits holding a digit: each looks for the Blocket ad of that vehicle in each vehicle type (cars when vehicleTypes is empty), sent in both forms Blocket's ads store it (with and without the space), up to 10 plates to one Blocket search. A row is delivered only when the vehicle's own plate is the plate asked (shown on its ad page; where Blocket's page shows no plate, as on a private car, the plate of its search row, with the page's VIN equal to the row's); each plate's result (found, not found) is on its search's free coverage row. At most 300 a run; not together with keywords or dealerIds.",
            "items": {
              "type": "string"
            }
          },
          "vins": {
            "title": "VINs to look up (vehicles)",
            "type": "array",
            "description": "Vehicle identification numbers (chassinummer, 11 to 17 letters and digits holding both): each looks for the Blocket ad of that vehicle, as plates do, 20 VINs to one Blocket search. A VIN no ad carries is free (its search's coverage row says not found).",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Places",
            "type": "array",
            "description": "Counties (län) or municipalities (kommuner) by Blocket's name (\"Stockholm\", \"Göteborg\", \"Skåne\") or Blocket's value (\"0.300001\"). Several places are one search (any of them).",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "Blekinge",
                "Dalarna",
                "Gotland",
                "Gävleborg",
                "Halland",
                "Jämtland",
                "Jönköping",
                "Kalmar",
                "Kronoberg",
                "Norrbotten",
                "Skåne",
                "Stockholm",
                "Södermanland",
                "Uppsala",
                "Värmland",
                "Västerbotten",
                "Västernorrland",
                "Västmanland",
                "Västra Götaland",
                "Örebro",
                "Östergötland"
              ]
            }
          },
          "latitude": {
            "title": "Latitude",
            "minimum": 55,
            "maximum": 69.5,
            "type": "number",
            "description": "With longitude and radiusKm: search around a point in Sweden (Blocket's own map radius)."
          },
          "longitude": {
            "title": "Longitude",
            "minimum": 10.5,
            "maximum": 24.5,
            "type": "number",
            "description": "With latitude and radiusKm."
          },
          "radiusKm": {
            "title": "Radius (km)",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "With latitude and longitude: the distance in kilometres."
          },
          "minPrice": {
            "title": "Minimum price",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "The lowest price in Swedish kronor, sent to Blocket."
          },
          "maxPrice": {
            "title": "Maximum price",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "The highest price in Swedish kronor, sent to Blocket."
          },
          "sellerType": {
            "title": "Seller",
            "enum": [
              "any",
              "private",
              "business"
            ],
            "type": "string",
            "description": "Private sellers only, or companies and dealers only (Blocket's own seller filter, \"Privat\" or \"Företag\").",
            "default": "any"
          },
          "postedToday": {
            "title": "New today",
            "type": "boolean",
            "description": "Only ads Blocket marks as new today (\"Nytt från idag\").",
            "default": false
          },
          "conditions": {
            "title": "Condition (marketplace)",
            "type": "array",
            "description": "Blocket's condition labels: \"Nytt skick - helt ny\", \"Mycket bra skick - som ny\", \"Bra skick - varsamt använd\", \"Okej skick - synligt använd\", \"Funkar inte - kan fixas\".",
            "items": {
              "type": "string"
            }
          },
          "tradeTypes": {
            "title": "Ad type (marketplace)",
            "type": "array",
            "description": "\"Säljes\" (for sale), \"Bortskänkes\" (given away free) or \"Köpes\" (wanted).",
            "items": {
              "type": "string"
            }
          },
          "brands": {
            "title": "Brands (marketplace)",
            "type": "array",
            "description": "Brands as Blocket lists them for the search (\"IKEA\", \"Apple\", \"Stokke\" and about 1,600 more).",
            "items": {
              "type": "string"
            }
          },
          "shippingOnly": {
            "title": "Can be shipped only",
            "type": "boolean",
            "description": "Only ads the seller can ship (\"Kan skickas\").",
            "default": false
          },
          "makes": {
            "title": "Makes",
            "type": "array",
            "description": "\"Volvo\", \"Volkswagen\", \"Tesla\", \"Yamaha\", \"Buster\" and the other makes Blocket lists for the vehicle type.",
            "items": {
              "type": "string"
            }
          },
          "models": {
            "title": "Models",
            "type": "array",
            "description": "Cars and A-tractors only, with makes: models by Blocket's name (\"V70\", \"Golf\", \"Model Y\").",
            "items": {
              "type": "string"
            }
          },
          "minYear": {
            "title": "Minimum model year",
            "minimum": 1900,
            "maximum": 2100,
            "type": "integer",
            "description": "Every vehicle type with a model year."
          },
          "maxYear": {
            "title": "Maximum model year",
            "minimum": 1900,
            "maximum": 2100,
            "type": "integer",
            "description": "Every vehicle type with a model year."
          },
          "minMileage": {
            "title": "Minimum mileage (mil)",
            "minimum": 0,
            "maximum": 5000000,
            "type": "integer",
            "description": "In Swedish mil (10 km), as Blocket counts it: cars, MC, mopeds, ATVs and snowmobiles."
          },
          "maxMileage": {
            "title": "Maximum mileage (mil)",
            "minimum": 0,
            "maximum": 5000000,
            "type": "integer",
            "description": "In Swedish mil (10 km)."
          },
          "minPowerHp": {
            "title": "Minimum power (hp)",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Cars, MC, mopeds, ATVs and snowmobiles."
          },
          "maxPowerHp": {
            "title": "Maximum power (hp)",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "As minPowerHp."
          },
          "fuelTypes": {
            "title": "Fuel",
            "type": "array",
            "description": "\"Bensin\", \"Diesel\", \"El\", \"Hybrid bensin\", \"Plug-in Bensin\", \"Fordonsgas\" and the other names Blocket lists (cars, MC, mopeds, boats).",
            "items": {
              "type": "string"
            }
          },
          "transmissions": {
            "title": "Gearbox",
            "type": "array",
            "description": "Cars and motorhomes: \"Automatisk\", \"Manuell\" or \"Sekventiell\".",
            "items": {
              "type": "string"
            }
          },
          "bodyTypes": {
            "title": "Body or type",
            "type": "array",
            "description": "The body or type Blocket lists for the vehicle type: \"Kombi\", \"SUV\", \"Sedan\", \"Halvkombi 5-dörrar\" (cars); \"Adventure\", \"Touring\" (MC); \"Daycruiser\", \"RIB\", \"Segelbåt/Motorseglare\" (boat classes); truck, bus, machine and farm tool types.",
            "items": {
              "type": "string"
            }
          },
          "wheelDrives": {
            "title": "Wheel drive",
            "type": "array",
            "description": "Cars and motorhomes: \"Fyrhjulsdrift\", \"Framhjulsdrift\", \"Bakhjulsdrift\".",
            "items": {
              "type": "string"
            }
          },
          "colours": {
            "title": "Colour",
            "type": "array",
            "description": "Cars only: \"Svart\", \"Vit\", \"Grå\", \"Blå\", \"Silver\" and the other names Blocket lists.",
            "items": {
              "type": "string"
            }
          },
          "salesForms": {
            "title": "Sales form",
            "type": "array",
            "description": "Cars: \"Begagnad bil till salu\", \"Ny bil till salu\" or \"Leasing\"; caravans: \"Till salu\".",
            "items": {
              "type": "string"
            }
          },
          "equipment": {
            "title": "Equipment",
            "type": "array",
            "description": "Cars only: \"Dragkrok\" (towbar), \"Apple CarPlay\", \"Backkamera\", \"Bluetooth\", \"Farthållare\", \"AC och klimatanläggning\", \"Kupévärmare\", \"Motorvärmare\", \"Parkeringssensor bak\", \"Interiör i skinn eller delvis i skinn\", \"Soltak/glastak\". Several values: any of them.",
            "items": {
              "type": "string"
            }
          },
          "wheelSets": {
            "title": "Wheel sets",
            "type": "array",
            "description": "Cars only: \"En uppsättning hjul\" or \"Två eller fler uppsättningar hjul\".",
            "items": {
              "type": "string"
            }
          },
          "vehicleConditions": {
            "title": "New or used",
            "type": "array",
            "description": "MC, caravans and motorhomes: \"Ny MC\" or \"Begagnad MC\"; \"Ny\" or \"Begagnat\".",
            "items": {
              "type": "string"
            }
          },
          "smoothTradeOnly": {
            "title": "Tryggad Bilaffär only",
            "type": "boolean",
            "description": "Cars only: ads with Blocket's safe payment and ownership change (\"Tryggad Bilaffär\").",
            "default": false
          },
          "vatDeductibleOnly": {
            "title": "VAT deductible only",
            "type": "boolean",
            "description": "Cars, MC and caravans: only ads whose VAT is deductible for a business buyer (\"Endast avdragbar moms\").",
            "default": false
          },
          "minEngineCc": {
            "title": "Minimum engine size (cc)",
            "minimum": 0,
            "maximum": 20000,
            "type": "integer",
            "description": "MC, ATVs and snowmobiles: Blocket's engine size in cubic centimetres."
          },
          "maxEngineCc": {
            "title": "Maximum engine size (cc)",
            "minimum": 0,
            "maximum": 20000,
            "type": "integer",
            "description": "As minEngineCc."
          },
          "minLengthFeet": {
            "title": "Minimum boat length (feet)",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Boats: Blocket's length in feet."
          },
          "maxLengthFeet": {
            "title": "Maximum boat length (feet)",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Boats."
          },
          "minLengthCm": {
            "title": "Minimum length (cm)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Caravans and motorhomes: Blocket's length in centimetres."
          },
          "maxLengthCm": {
            "title": "Maximum length (cm)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Caravans and motorhomes."
          },
          "minWidthCm": {
            "title": "Minimum width (cm)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Boats: Blocket's width in centimetres."
          },
          "maxWidthCm": {
            "title": "Maximum width (cm)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Boats."
          },
          "minWeightKg": {
            "title": "Minimum weight (kg)",
            "minimum": 0,
            "maximum": 200000,
            "type": "integer",
            "description": "Caravans and motorhomes: Blocket's weight filter in kilograms. Cars: Blocket's car search has no weight filter, so every car's ad page is read and its weight judged there (each delivered car is billed Ad details too; a car whose page shows no weight is left out, free)."
          },
          "maxWeightKg": {
            "title": "Maximum weight (kg)",
            "minimum": 0,
            "maximum": 200000,
            "type": "integer",
            "description": "Caravans and motorhomes; cars read from each ad page (billed Ad details), as Minimum weight."
          },
          "minTrailerWeightKg": {
            "title": "Minimum towing weight (kg)",
            "minimum": 0,
            "maximum": 50000,
            "type": "integer",
            "description": "Cars only: the largest trailer weight in kilograms."
          },
          "maxTrailerWeightKg": {
            "title": "Maximum towing weight (kg)",
            "minimum": 0,
            "maximum": 50000,
            "type": "integer",
            "description": "Cars only."
          },
          "minBoatEngineHp": {
            "title": "Minimum boat engine power (hp)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Boats: the power of the boat's engine."
          },
          "maxBoatEngineHp": {
            "title": "Maximum boat engine power (hp)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Boats."
          },
          "minTopSpeedKnots": {
            "title": "Minimum top speed (knots)",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Boats."
          },
          "maxTopSpeedKnots": {
            "title": "Maximum top speed (knots)",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Boats."
          },
          "berths": {
            "title": "Berths",
            "type": "array",
            "description": "Boats, caravans and motorhomes: Blocket's groups of berths, such as \"3 - 4\".",
            "items": {
              "type": "string"
            }
          },
          "seatGroups": {
            "title": "Seats (groups)",
            "type": "array",
            "description": "Boats and motorhomes: Blocket's seat groups, such as \"4 - 6\".",
            "items": {
              "type": "string"
            }
          },
          "boatMaterials": {
            "title": "Boat material",
            "type": "array",
            "description": "Boats: \"Glasfiber\", \"Aluminium\", \"Plast\", \"Trä\", \"Annat\".",
            "items": {
              "type": "string"
            }
          },
          "attributeFilters": {
            "title": "Any other Blocket filter",
            "type": "object",
            "description": "Any other filter of the search's own Blocket filter list, by Blocket's name or Swedish label, with values by label or value, or {\"min\": n, \"max\": n} for a range. For example {\"truck_segment\": [\"Dragbil\"], \"shipping_types\": [\"Gratis frakt\"]}. A filter the search does not offer is refused with the filters it does offer."
          },
          "postedAfter": {
            "title": "Posted on or after",
            "type": "string",
            "description": "Only ads published on or after this day in Sweden (YYYY-MM-DD), checked on every row."
          },
          "postedWithinHours": {
            "title": "Posted within (hours)",
            "minimum": 1,
            "maximum": 8760,
            "type": "integer",
            "description": "Only ads published within this many hours of the run's start, checked on every row."
          },
          "postedBefore": {
            "title": "Posted before",
            "type": "string",
            "description": "Only ads published before this day in Sweden (YYYY-MM-DD), checked on every row. Blocket lists newest first, so the newer ads in front are read and left out free; a day far back can stop the run on its allowance for unpaid reads."
          },
          "includeKeywords": {
            "title": "Must contain",
            "type": "array",
            "description": "Words an ad must contain (its title, and its description when the ad page is read). Any one of them, or all with requireAllKeywords.",
            "items": {
              "type": "string"
            }
          },
          "requireAllKeywords": {
            "title": "Require all words",
            "type": "boolean",
            "description": "With includeKeywords: every word must be in the ad.",
            "default": false
          },
          "excludeKeywords": {
            "title": "Must not contain",
            "type": "array",
            "description": "Ads holding any of these words are left out, free.",
            "items": {
              "type": "string"
            }
          },
          "titleOnly": {
            "title": "Look in titles only",
            "type": "boolean",
            "description": "includeKeywords and excludeKeywords look at the title only.",
            "default": false
          },
          "excludeAdIds": {
            "title": "Exclude Blocket ad ids",
            "type": "array",
            "description": "Blocket ad ids (Annons-ID) or ad links never to deliver.",
            "items": {
              "type": "string"
            }
          },
          "searchUrls": {
            "title": "Search links",
            "type": "array",
            "description": "Search pages copied from Blocket's marketplace (https://www.blocket.se/recommerce/forsale/search?...) or its vehicles (https://www.blocket.se/mobility/search/<type>?...), read with all their filters. Blocket's sort order in a link is not sent (Blocket asks robots not to); the link is read in Blocket's default order.",
            "items": {
              "type": "string"
            }
          },
          "adUrls": {
            "title": "Ad links or Blocket ad ids",
            "type": "array",
            "description": "Blocket ad links (https://www.blocket.se/recommerce/forsale/item/<id>, https://www.blocket.se/mobility/item/<id> or https://www.blocket.se/<id>) or Blocket ad ids (Annons-ID): each read with its ad page and billed as one Listing or Vehicle plus one Ad details. A removed or unknown ad is a free row.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Maximum rows",
            "minimum": 1,
            "maximum": 200000,
            "type": "integer",
            "description": "The most paid rows (marketplace ads and vehicles) the run delivers, across all searches and links.",
            "default": 100
          },
          "maxItemsPerSearch": {
            "title": "Maximum rows per search",
            "minimum": 1,
            "maximum": 200000,
            "type": "integer",
            "description": "The most paid rows from one search or search link."
          },
          "maxPagesPerSearch": {
            "title": "Maximum pages per search",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "The most result pages read for one search."
          },
          "maxRowsPerSearch": {
            "title": "Rows read per search",
            "minimum": 1,
            "maximum": 200000,
            "type": "integer",
            "description": "How many rows of each search are read at most, the rows left out by a filter included (no limit by default)."
          },
          "startPage": {
            "title": "Start page",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Read every search from this page of Blocket's own results (53 marketplace ads or 50 vehicles a page) instead of the first: to go on from where an earlier run stopped. Such a search is not split past Blocket's 50 page reach and its coverage row says it is not complete. Given, even as 1, every search is read in Blocket's own pages from that page, so runs of startPage 1, 2, 3 never overlap. Not with plates or vins."
          },
          "includeDetails": {
            "title": "Include the ad page (Ad details)",
            "type": "boolean",
            "description": "Read each ad's page: the full description, every key fact and all images, the category path, the postal code, the edited time, a shop's profile (name, address, phone, organisation number, website), and on vehicles the equipment, registration date, inspection dates, owners, warranty, declared damages, leasing terms and the dealer card (organisation number, address, phone, e-mail, website, opening hours, brands). Billed as one Ad details per row that carries its ad page; about a second per row.",
            "default": false
          },
          "includeSimilarVehicles": {
            "title": "Add similar vehicles (add-on)",
            "type": "boolean",
            "description": "Vehicles: Blocket's own list of similar vehicles for each ad (id, link, title, year and mileage text, price, image). Reads the ad page too (billed as Ad details). Billed as one Similar vehicles list per row that carries one; an ad Blocket lists none for is empty and free.",
            "default": false
          },
          "includePhoneNumber": {
            "title": "Add the phone number of business vehicle ads (add-on)",
            "type": "boolean",
            "description": "Vehicles: the number behind the call button of a business ad on Blocket (a dealer's or a company's), as Blocket gives it to a visitor who presses the button; it can differ from the number in the dealer card. Reads the ad page too (billed as Ad details). Billed as one Phone number per row that carries one; a private seller's ad has no such button (status notOffered), and an ad Blocket gives no number for is free.",
            "default": false
          },
          "includeMarketValuation": {
            "title": "Add a market valuation (add-on)",
            "type": "boolean",
            "description": "Vehicles: the asking prices of the same make and model on Blocket today, one model year either side (count, median, quartiles, lowest and highest), and how far this vehicle's price stands from the median, in percent and kronor. One extra Blocket search per vehicle; billed as one Market valuation per row that carries one. Fewer than 5 comparable ads, or a vehicle without make, model or model year: no valuation, free. Asking prices, not sale prices.",
            "default": false
          },
          "maxPriceVsMarketPercent": {
            "title": "Deal filter: at most this far from the median (%)",
            "minimum": -90,
            "maximum": 100,
            "type": "integer",
            "description": "With includeMarketValuation: deliver only vehicles whose asking price is at most this many percent above (positive) or below (negative) the median of their market valuation, such as -10 for at least 10 percent under the market. Vehicles left out, or with no valuation, are free; their valuation reads are the add-on's unpaid work."
          },
          "maxPriceVsMarketSek": {
            "title": "Deal filter: at most this far from the median (SEK)",
            "minimum": -100000000,
            "maximum": 100000000,
            "type": "integer",
            "description": "With includeMarketValuation: deliver only vehicles whose asking price is at most this many kronor above (positive) or below (negative) the median of their market valuation, such as -20000 for at least 20,000 kr under the market. Vehicles left out, or with no valuation, are free."
          },
          "minComparables": {
            "title": "Minimum comparable ads",
            "minimum": 5,
            "maximum": 50,
            "type": "integer",
            "description": "With includeMarketValuation: the fewest comparable ads a valuation needs (5 to 50, 5 by default); a vehicle with fewer gets no valuation, free. Each valuation says its confidence too: high with 20 or more, medium with 10 to 19, low below."
          },
          "excludeRedFlagged": {
            "title": "Leave out red flagged vehicles",
            "type": "boolean",
            "description": "Vehicles: leave out, free, every vehicle whose row carries a red flag (the seller's own answer of known damage, major repairs or a lien, or a mention in the title or description of export only, damage or a fault, a lease takeover, a driving ban, deregistration or a sale for parts). A mention is only a mention (\"ingen skada\" mentions damage too): read redFlags first.",
            "default": false
          },
          "includePersonalData": {
            "title": "Include personal data",
            "type": "boolean",
            "description": "Deliver the fields that name or reach a private person: a private seller's plate and VIN (in their fields and in the key facts), Blocket user id, street and exact map point (off: the point is rounded to 2 decimals, about 1 km, when Blocket gives it to the address), the seller's own links and ad references, a sole trader's organisation number (in Sweden it is its owner's personal identity number), contact persons' names, phones and e-mails on any ad, and the contacts found in the texts of private ads. Off: those fields are empty; a company's or dealer's name, id, organisation number, address, phone, website and dealer card are business data and always delivered. Plate and VIN lookups work either way. You are responsible for a lawful use, GDPR included.",
            "default": false
          },
          "priceSummary": {
            "title": "Price summary per search",
            "type": "boolean",
            "description": "Each search's coverage row carries the count, lowest, quartiles, median, mean and highest asking price of the ads it met, and the same per county and per category (marketplace) or make (vehicles). Free.",
            "default": true
          },
          "includeRawData": {
            "title": "Include raw search row",
            "type": "boolean",
            "description": "Add Blocket's search row as served (a private seller's only with personal data on).",
            "default": false
          },
          "descriptionFormat": {
            "title": "Description format",
            "enum": [
              "asServed",
              "text",
              "markdown"
            ],
            "type": "string",
            "description": "How the ad description is delivered.",
            "default": "asServed"
          },
          "descriptionMaxLength": {
            "title": "Description maximum length",
            "minimum": 20,
            "maximum": 100000,
            "type": "integer",
            "description": "Cut descriptions to this many characters (descriptionCut marks the row)."
          },
          "outputFields": {
            "title": "Fields to keep",
            "type": "array",
            "description": "Keep only these row fields, by the names the rows carry (\"adId\", \"url\", \"county\", \"make\", \"model\", \"mileageKm\", \"marketValuation\"); the row's identity, title, price, place, status and image count, and the fields of every add-on that is billed, always stay. Not together with compactOutput.",
            "items": {
              "type": "string"
            }
          },
          "compactOutput": {
            "title": "Compact rows",
            "type": "boolean",
            "description": "Deliver only the most used fields (handy for AI agents).",
            "default": false
          },
          "excludeEmptyFields": {
            "title": "Leave out empty fields",
            "type": "boolean",
            "description": "Drop fields that are empty on a row.",
            "default": false
          },
          "extractContacts": {
            "title": "Extract contacts from texts",
            "type": "boolean",
            "description": "Add the e-mail addresses, phone numbers, websites and social profiles written in the title and description (companies' ads always; private ads with includePersonalData on).",
            "default": false
          },
          "phoneExtractionMode": {
            "title": "Phone extraction",
            "enum": [
              "strict",
              "lenient"
            ],
            "type": "string",
            "description": "With extractContacts."
          },
          "failIfIncomplete": {
            "title": "Fail if incomplete",
            "type": "boolean",
            "description": "End the run as failed when a search or link could not be read in full (the rows delivered stay).",
            "default": false
          },
          "maxFailedRequestsPercent": {
            "title": "Fail above this share of failed reads (%)",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "End the run as failed when more of its reads failed."
          },
          "completenessTolerancePercent": {
            "title": "Complete within this share of Blocket's count (%)",
            "minimum": 0,
            "maximum": 50,
            "type": "number",
            "description": "Your own bar for a complete search: a search counts as complete when it met at least Blocket's count of ads less this percent (and less the number of ads below). Empty: the fixed rule (98 percent of Blocket's count less 2 ads on a split search, 99 percent less 2 on one search)."
          },
          "completenessToleranceAbsolute": {
            "title": "Complete within this many ads of Blocket's count",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Your own bar for a complete search, in ads: Blocket's count less this many ads (and less the percent above). Empty: the fixed rule."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Leave as is: Blocket is read through Apify's datacenter proxy, which every Blocket door answers. Your own proxy links replace it."
          },
          "requestsPerSecond": {
            "title": "Requests per second",
            "minimum": 0.2,
            "maximum": 2,
            "type": "number",
            "description": "The pace of the run's one exit (0.2 to 2).",
            "default": 1
          },
          "maxConcurrency": {
            "title": "Requests in flight",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "At most this many requests in flight, inside the pace (Blocket is never asked more than requestsPerSecond requests a second): ad pages and add-on pages are read on this many lanes.",
            "default": 4
          },
          "maxRequestRetries": {
            "title": "Retries",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Tries of a failed read after the first.",
            "default": 2
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}