{
  "openapi": "3.0.1",
  "info": {
    "title": "Otodom.pl Property Listings Scraper (Poland)",
    "description": "Scrapes property listings from Otodom.pl, Poland's largest real-estate portal: price, price per m², area, rooms, floor, address with GPS, photos, description and the seller's phone. Search by city, by area drawn on a map or by Otodom URL, sale and rent. Export to JSON, CSV or Excel.",
    "version": "1.0",
    "x-build-id": "PG3vTUjhQUjIAqrpg"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nice_dev~otodom-real-estate-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nice_dev-otodom-real-estate-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/nice_dev~otodom-real-estate-scraper/runs": {
      "post": {
        "operationId": "runs-sync-nice_dev-otodom-real-estate-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/nice_dev~otodom-real-estate-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-nice_dev-otodom-real-estate-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": {
          "startUrls": {
            "title": "Start URLs",
            "maxItems": 1000,
            "type": "array",
            "description": "Otodom.pl search-result URLs (all filters set on the site are kept, pagination is automatic) or single listing URLs (`https://www.otodom.pl/pl/oferta/...`). When this list is not empty, the search fields below (location, type, filters, sort) are ignored. Max 1 000 URLs.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "location": {
            "title": "Location",
            "maxLength": 200,
            "type": "string",
            "description": "City, district or voivodeship name, e.g. `Kraków`, `Warszawa Mokotów`, `pomorskie`. `Polska` = whole country. You can also paste an Otodom location path from a search URL (`mazowieckie/warszawa/warszawa/warszawa`). Names are resolved against Otodom's own location list; qualify a name several places share with its municipality, city or voivodeship (`Nowa Wieś, Michałowice`)."
          },
          "locations": {
            "title": "More locations",
            "maxItems": 100,
            "uniqueItems": true,
            "type": "array",
            "description": "Several locations in one run: one search per location (same filters), each with its own **Max listings per search**. Added to **Location**. Same formats as **Location**; a listing found by two searches is saved once. Max 100 locations.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "searchType": {
            "title": "Search type",
            "enum": [
              "sprzedaz",
              "wynajem"
            ],
            "type": "string",
            "description": "Sale (`sprzedaz`) or rent (`wynajem`).",
            "default": "sprzedaz"
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "mieszkanie",
              "kawalerka",
              "dom",
              "dzialka",
              "lokal",
              "haleimagazyny",
              "garaz",
              "pokoj"
            ],
            "type": "string",
            "description": "Otodom category. `pokoj` (room) exists for rent only; `kawalerka` = studio (1-room apartment).",
            "default": "mieszkanie"
          },
          "maxItems": {
            "title": "Max listings",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Maximum number of listings to save for the whole run (after deduplication). 0 = no limit. For reference: apartments for sale in Warsaw ≈ 20 000 listings, whole Poland ≈ 150 000.",
            "default": 100
          },
          "maxItemsPerQuery": {
            "title": "Max listings per search",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Cap for EACH search (each location, or each search URL), so that the first city cannot use up the whole **Max listings** budget. 0 = no per-search cap.",
            "default": 0
          },
          "extractDetails": {
            "title": "Extract details",
            "type": "boolean",
            "description": "Open each listing page (1 extra request per listing) for GPS coordinates, full description, build year, building details, features, floor plans and all photos (and, with **Include phone numbers**, the numbers of the listing page). Charged per listing as **Listing details**, on top of the listing (see the pricing). Off (default) = listing-card fields only, 2-3× faster, the listing price alone. A listing URL in Start URLs is always read on its page.",
            "default": false
          },
          "privateSellerContacts": {
            "title": "Include private sellers' name and phone",
            "type": "boolean",
            "description": "Private (non-professional) sellers are natural persons: their name and phone number are personal data under GDPR. Agencies and developers are always included. Turn off to output `contactName` and `contactPhoto` as null and `phones` as an empty list for private sellers. Their phone number is only given with **Include phone numbers**.",
            "default": true
          },
          "includePhones": {
            "title": "Include phone numbers",
            "type": "boolean",
            "description": "Fill `phones` with the seller's phone numbers. Charged per listing as **Phone number found**, once per listing delivered with at least one number (however many it has), on top of the listing (see the pricing); a listing without a number costs nothing extra. Off (default) = `phones` is always empty. The numbers come from the listing page (**Extract details**): without it only a number Otodom prints on its results page can be given (the agent's), and it rarely does — tick **Extract details** to get them. Private sellers' numbers also need **Include private sellers' name and phone**.",
            "default": false
          },
          "includeMarketStats": {
            "title": "Add zone market statistics",
            "type": "boolean",
            "description": "Add one record, `MARKET_STATS`, to the run's key-value store (linked in the Output tab): the market figures of each zone — a city and its district, a property type, sale or rent — worked out from the listings this run delivers: median price per m² with its quartiles, median price, median area, number of listings, and the 5 cheapest listings per m² with their gap in % to the median of the zone. Nothing is added to the dataset and no page is read. Charged per zone delivered as **Zone market statistics** (see the pricing). A zone needs at least 5 listings with a price per m²; up to 20 zones, the biggest first. With **Only new listings**, only the listings delivered in this run count: raise **Max listings** for a sample worth a zone.",
            "default": false
          },
          "radius": {
            "title": "Radius (km)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Also return the listings within this distance around each location (the `+ km` menu of Otodom stops at 75; any whole number up to 100 works). With **Google Place ID**, the distance around that place; with **Latitude** / **Longitude**, the radius of the circle searched (1 km when left at 0). 0 = the location only.",
            "default": 0
          },
          "placeId": {
            "title": "Google Place ID (address, street, postal code)",
            "pattern": "^[A-Za-z0-9_-]{10,300}$",
            "maxLength": 300,
            "type": "string",
            "description": "Search around a precise place instead of a location: paste the Google Place ID of an address, a street or a postal code (find it with the Place ID Finder of Google Maps Platform), e.g. `ChIJAZ-GmmbMHkcR_NPqiCq-8HI`. Set **Radius (km)** too — without it Otodom searches about 300 m around the place. Leave **Location** empty. For raw coordinates use **Latitude** / **Longitude** instead; Otodom has no search by postal code text."
          },
          "latitude": {
            "title": "Latitude",
            "minimum": -90,
            "maximum": 90,
            "type": "number",
            "description": "Search in a circle around these coordinates, through Otodom's own map search. Give **Longitude** too and, optionally, **Radius (km)** (1 km by default). Leave **Location** and **Google Place ID** empty. Example: `52.2297`."
          },
          "longitude": {
            "title": "Longitude",
            "minimum": -180,
            "maximum": 180,
            "type": "number",
            "description": "Longitude of the centre of the circle, e.g. `21.0122`. Goes with **Latitude**."
          },
          "polygon": {
            "title": "Polygon (area drawn on a map)",
            "maxItems": 500,
            "type": "array",
            "description": "Search inside an area you draw, through Otodom's own map search — the listings whose pin falls inside the polygon. One entry per corner, `latitude, longitude`, at least 3 and at most 500, in order around the area (the last corner is joined to the first). A GeoJSON `Polygon`, `Feature` or one-area `FeatureCollection` (what geojson.io exports) pasted as a single entry also works; a polygon with a hole is refused, only its outline could be searched. Leave **Location**, **Google Place ID** and **Latitude** / **Longitude** empty. Example: `52.2450, 20.9800`, `52.2450, 21.0300`, `52.2100, 21.0300`, `52.2100, 20.9800`.",
            "items": {
              "type": "string"
            }
          },
          "priceMin": {
            "title": "Min price (PLN)",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Minimum total price (sale) or monthly rent (rent), in PLN."
          },
          "priceMax": {
            "title": "Max price (PLN)",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Maximum total price (sale) or monthly rent (rent), in PLN."
          },
          "pricePerM2Min": {
            "title": "Min price per m² (PLN)",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Minimum price per square metre, in PLN."
          },
          "pricePerM2Max": {
            "title": "Max price per m² (PLN)",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Maximum price per square metre, in PLN."
          },
          "areaMin": {
            "title": "Min area (m²)",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Minimum area in square meters (plot area for `dzialka`)."
          },
          "areaMax": {
            "title": "Max area (m²)",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Maximum area in square meters (plot area for `dzialka`)."
          },
          "roomsMin": {
            "title": "Min rooms",
            "minimum": 1,
            "maximum": 6,
            "type": "integer",
            "description": "Minimum number of rooms (1-6; 6 means 6 or more). Apartments and houses, and commercial premises for sale."
          },
          "roomsMax": {
            "title": "Max rooms",
            "minimum": 1,
            "maximum": 6,
            "type": "integer",
            "description": "Maximum number of rooms (1-6; 6 means 6 or more). Apartments and houses, and commercial premises for sale."
          },
          "market": {
            "title": "Market",
            "enum": [
              "ALL",
              "PRIMARY",
              "SECONDARY"
            ],
            "type": "string",
            "description": "Primary = new from developer (rynek pierwotny), secondary = resale (rynek wtórny). Sales only: Otodom has no market filter for rentals nor for plots (the run is refused instead of returning unfiltered listings).",
            "default": "ALL"
          },
          "ownerType": {
            "title": "Seller type",
            "enum": [
              "ALL",
              "PRIVATE",
              "AGENCY",
              "DEVELOPER"
            ],
            "type": "string",
            "description": "Restrict to private sellers, agencies or developers. Otodom has this menu for sales only (plots excepted): for rentals and plots `PRIVATE` uses the “private owner” filter of the site, `AGENCY` keeps the professional sellers among the extracted listings (the others are not saved; each listing dropped costs a filter fee), and `DEVELOPER` is refused.",
            "default": "ALL"
          },
          "daysSinceCreated": {
            "title": "Posted within",
            "enum": [
              "0",
              "1",
              "3",
              "7",
              "14",
              "30"
            ],
            "type": "string",
            "description": "Only listings published or bumped in the last N days.",
            "default": "0"
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "DEFAULT",
              "LATEST",
              "PRICE_ASC",
              "PRICE_DESC",
              "AREA_ASC",
              "AREA_DESC"
            ],
            "type": "string",
            "description": "Order of results, as Otodom gives it: with `maxItems` you get the first listings of this order. Units of a new development follow their development, as on the site. With **Extract details** on, rows are written as listing pages come back, not in this order: sort the table. `LATEST` is the best choice for monitoring new listings; Otodom default becomes newest first when **Only new listings** or **Posted after** is set.",
            "default": "DEFAULT"
          },
          "keyword": {
            "title": "Keyword in description",
            "maxLength": 100,
            "type": "string",
            "description": "Full-text word searched in listing descriptions (Otodom's own `description` filter), e.g. `balkon`, `garaż`, `BREEAM`."
          },
          "buildYearMin": {
            "title": "Built after (year)",
            "minimum": 1800,
            "maximum": 2100,
            "type": "integer",
            "description": "Minimum construction year. Apartments, studios and houses only."
          },
          "buildYearMax": {
            "title": "Built before (year)",
            "minimum": 1800,
            "maximum": 2100,
            "type": "integer",
            "description": "Maximum construction year. Apartments, studios and houses only."
          },
          "floors": {
            "title": "Floor",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep the listings on one of these floors. Apartments, studios and commercial premises only.",
            "items": {
              "type": "string",
              "enum": [
                "CELLAR",
                "GROUND",
                "FIRST",
                "SECOND",
                "THIRD",
                "FOURTH",
                "FIFTH",
                "SIXTH",
                "SEVENTH",
                "EIGHTH",
                "NINTH",
                "TENTH",
                "ABOVE_TENTH",
                "GARRET"
              ],
              "enumTitles": [
                "Basement level (suterena)",
                "Ground floor (parter)",
                "1st floor",
                "2nd floor",
                "3rd floor",
                "4th floor",
                "5th floor",
                "6th floor",
                "7th floor",
                "8th floor",
                "9th floor",
                "10th floor",
                "Above the 10th floor",
                "Attic (poddasze)"
              ]
            },
            "default": []
          },
          "buildingType": {
            "title": "Building type",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep the listings in one of these building types. Apartments / studios: block … loft; houses: tenement, terraced, detached … farm; `Other` for both. A value that Otodom does not have for the chosen property type is refused before the run starts.",
            "items": {
              "type": "string",
              "enum": [
                "BLOCK",
                "TENEMENT",
                "HOUSE",
                "INFILL",
                "RIBBON",
                "APARTMENT",
                "LOFT",
                "DETACHED",
                "SEMI_DETACHED",
                "RESIDENCE",
                "FARM",
                "OTHER"
              ],
              "enumTitles": [
                "Apartment: block (blok)",
                "Tenement (kamienica)",
                "Apartment: in a house (dom wolnostojący)",
                "Apartment: infill building (plomba)",
                "Terraced (szeregowiec)",
                "Apartment: apartment building (apartamentowiec)",
                "Apartment: loft",
                "House: detached (wolnostojący)",
                "House: semi-detached (bliźniak)",
                "House: residence (rezydencja)",
                "House: farm (gospodarstwo)",
                "Other"
              ]
            },
            "default": []
          },
          "buildingMaterial": {
            "title": "Building material",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep the listings built with one of these materials. For sale only (apartments, studios, houses).",
            "items": {
              "type": "string",
              "enum": [
                "BRICK",
                "WOOD",
                "BREEZEBLOCK",
                "HYDROTON",
                "CONCRETE_PLATE",
                "CONCRETE",
                "SILIKAT",
                "CELLULAR_CONCRETE",
                "REINFORCED_CONCRETE",
                "OTHER"
              ],
              "enumTitles": [
                "Brick (cegła)",
                "Wood (drewno)",
                "Breeze block (pustak)",
                "Expanded clay (keramzyt)",
                "Large concrete panels (wielka płyta)",
                "Concrete (beton)",
                "Sand-lime brick (silikat)",
                "Cellular concrete (beton komórkowy)",
                "Reinforced concrete (żelbet) — apartments and studios only",
                "Other"
              ]
            },
            "default": []
          },
          "extras": {
            "title": "Features (all required)",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep the listings that have ALL these features. The list Otodom offers depends on the property type (apartment for sale: balcony, terrace, garage, basement, lift, separate kitchen, garden, two-storey; for rent: + air conditioning, no basement / two-storey; studios: all residential ones; commercial premises: air conditioning and the last six). A feature that does not exist for the chosen type is refused before the run starts. Houses, plots, halls, garages and rooms have none.",
            "items": {
              "type": "string",
              "enum": [
                "BALCONY",
                "TERRACE",
                "GARAGE",
                "BASEMENT",
                "LIFT",
                "SEPARATE_KITCHEN",
                "GARDEN",
                "TWO_STOREY",
                "AIR_CONDITIONING",
                "USABLE_ROOM",
                "NON_SMOKERS_ONLY",
                "ASPHALT_ACCESS",
                "ELEVATOR",
                "FURNITURE",
                "HEATING",
                "PARKING",
                "SHOP_WINDOW"
              ],
              "enumTitles": [
                "Balcony",
                "Terrace",
                "Garage / parking space",
                "Basement / storage",
                "Lift",
                "Separate kitchen",
                "Garden",
                "Two-storey",
                "Air conditioning",
                "Utility room (studios)",
                "Non-smokers only (studios)",
                "Commercial: asphalt access",
                "Commercial: elevator",
                "Commercial: furnished",
                "Commercial: heating",
                "Commercial: parking",
                "Commercial: shop window"
              ]
            },
            "default": []
          },
          "heating": {
            "title": "Heating (rentals)",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep the listings with one of these heating types. Otodom only has this filter for apartments and studios FOR RENT.",
            "items": {
              "type": "string",
              "enum": [
                "URBAN",
                "GAS",
                "TILED_STOVE",
                "ELECTRICAL",
                "BOILER_ROOM",
                "OTHER"
              ],
              "enumTitles": [
                "District heating (miejskie)",
                "Gas",
                "Tiled stove (piec kaflowy)",
                "Electric",
                "Boiler room (kotłownia)",
                "Other"
              ]
            },
            "default": []
          },
          "media": {
            "title": "Utilities (rentals, all required)",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep the listings that have ALL these utilities. Otodom only has this filter FOR RENT: apartments, studios and rooms (internet, cable TV, phone); houses (the whole list).",
            "items": {
              "type": "string",
              "enum": [
                "INTERNET",
                "CABLE_TELEVISION",
                "PHONE",
                "WATER",
                "ELECTRICITY",
                "GAS",
                "SEWAGE",
                "CESSPOOL",
                "WATER_PURIFICATION"
              ],
              "enumTitles": [
                "Internet",
                "Cable TV",
                "Phone line",
                "House: water",
                "House: electricity",
                "House: gas",
                "House: sewage",
                "House: septic tank",
                "House: water treatment"
              ]
            },
            "default": []
          },
          "terrainAreaMin": {
            "title": "Min plot area of a house (m²)",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Houses only: minimum area of the plot. For plots (`dzialka`) use **Min area**."
          },
          "terrainAreaMax": {
            "title": "Max plot area of a house (m²)",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Houses only: maximum area of the plot."
          },
          "hasPhotos": {
            "title": "With photos only",
            "type": "boolean",
            "description": "Keep the listings that have at least one photo.",
            "default": false
          },
          "hasVideo": {
            "title": "With a video only",
            "type": "boolean",
            "description": "Keep the listings that have a video (about 3 % of the apartments for sale in Warsaw).",
            "default": false
          },
          "has3DView": {
            "title": "With a virtual tour only",
            "type": "boolean",
            "description": "Keep the listings that have a 3D / virtual tour (about 30 % of the apartments for sale in Warsaw).",
            "default": false
          },
          "hasOpenDay": {
            "title": "With an open day only",
            "type": "boolean",
            "description": "Keep the listings that announce an open day (rare: about 1 in 1 000).",
            "default": false
          },
          "postedAfter": {
            "title": "Posted after",
            "type": "string",
            "description": "Only listings first published on or after this date: `2026-09-01`, or a period before now such as `7 days`, `2 weeks`, `1 month` (API: `24 hours` and full ISO date-times work too). Reads `createdAtFirst` (first publication, the true age — a bumped old listing does not count as new), the date Otodom's newest-first sort follows. Finer than **Posted within**: any date. With **Sort by** left at Otodom default, searches are sorted by newest so the run stops as soon as a whole page is too old; with another sort, every page is read."
          },
          "postedBefore": {
            "title": "Posted before",
            "type": "string",
            "description": "Only listings published on or before this date (the whole day is included, Polish time), or older than a period such as `30 days`."
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "maxItems": 50,
            "uniqueItems": true,
            "type": "array",
            "description": "Drop the listings whose title contains one of these words (case and accents ignored).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeListings": {
            "title": "Exclude listings",
            "maxItems": 10000,
            "uniqueItems": true,
            "type": "array",
            "description": "Listings you already have: numeric ids (`66347963`), slugs or listing URLs. They are skipped — not saved, their page is not opened, each listing dropped costs a filter fee (a listing URL pasted in **Start URLs** is still opened, then skipped). Max 10 000.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "onlyNew": {
            "title": "Only new listings",
            "type": "boolean",
            "description": "Skip the listings that a previous run (same **Memory key**) already delivered: they are not saved and not charged, and their page is not even opened (a listing URL pasted in **Start URLs** is still opened, then skipped). First run = everything is new.",
            "default": false
          },
          "stateKey": {
            "title": "Memory key",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$",
            "maxLength": 64,
            "type": "string",
            "description": "Name of the memory used by **Only new listings**. Give each schedule / task its own key (e.g. `krakow-rentals`) so that they do not share their memory. Letters, digits, `-` and `_`.",
            "default": "default"
          },
          "resetState": {
            "title": "Reset the memory",
            "type": "boolean",
            "description": "With **Only new listings** on, forget everything remembered under this **Memory key** before the run: this run returns (and charges) every listing again. Does nothing without **Only new listings**. Untick it afterwards.",
            "default": false
          },
          "includePriceChanges": {
            "title": "Report price changes",
            "type": "boolean",
            "description": "Needs **Only new listings**. A listing already delivered under this **Memory key** comes back, whole, when its price has changed since the run that delivered it: `previousPrice`, `priceChange`, `priceChangePct` and `priceChangedAt` are filled. Charged per listing as **Price change**, on top of the listing (see the pricing); a listing whose price did not move is skipped and costs nothing, a hidden price is never a change. The memory also keeps the last price of every listing: the first run after you tick it learns the prices and reports no change. The search is read to its end (up to **Max listings** delivered) because an older listing can change its price: a run takes longer than with **Only new listings** alone, which stops after 72 listings already delivered in a row. Past that point, each listing already known and re-checked for a price change is charged a **Price check** (see the pricing), and the run stops if its maximum cost cannot pay one.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy or your own proxies. Keep the default: it is included in the price. The residential Apify proxy is not available in this Actor.",
            "default": {
              "useApifyProxy": true
            }
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum number of requests processed in parallel. Requests are also capped at 400 per minute (see below).",
            "default": 8
          },
          "maxRequestsPerMinute": {
            "title": "Max requests per minute",
            "minimum": 10,
            "maximum": 2000,
            "type": "integer",
            "description": "Global request rate, 400/min by default. Without a proxy, lower it to about 100.",
            "default": 400
          },
          "maxRequestRetries": {
            "title": "Max request retries",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Retries per request before it is marked as failed.",
            "default": 5
          },
          "debugLog": {
            "title": "Debug log",
            "type": "boolean",
            "description": "Include debug messages in the run log.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}