{
  "openapi": "3.0.1",
  "info": {
    "title": "OLX Poland Scraper & New-Listing Monitor (OLX.pl)",
    "description": "OLX.pl scraper for resellers, deal hunters and price trackers: listings by search term, category, city or pasted OLX.pl URL with price, condition, location, dates, photos and business/private seller. Watch mode returns only listings created since your last check, and price drops.",
    "version": "0.1",
    "x-build-id": "NktS2TCLCHHvJDi5q"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~olx-poland-listings-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-olx-poland-listings-monitor",
        "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/neverempty~olx-poland-listings-monitor/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-olx-poland-listings-monitor",
        "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/neverempty~olx-poland-listings-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-olx-poland-listings-monitor",
        "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": {
          "searchQueries": {
            "title": "Search terms",
            "type": "array",
            "description": "What to search for on OLX.pl, one term per line (for example iphone 13, rower szosowy, kanapa). Each term is searched in every category and location below. Leave empty to list whole categories or locations instead; if everything is empty, the example term iphone 13 is searched.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "OLX.pl categories as they appear in the site's address, one per line: elektronika/telefony for https://www.olx.pl/elektronika/telefony/, or motoryzacja/samochody. A whole address of a category page also works. Leave empty to search all categories.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations (city or voivodeship)",
            "type": "array",
            "description": "Polish cities or voivodeships, one per line, as written in OLX.pl addresses or normally: warszawa, Kraków, gdansk, mazowieckie. Leave empty to search all of Poland.",
            "items": {
              "type": "string"
            }
          },
          "searchUrls": {
            "title": "OLX.pl search URLs",
            "type": "array",
            "description": "Or paste the address of an OLX.pl search page, such as https://www.olx.pl/elektronika/telefony/warszawa/q-iphone-13/?search[filter_float_price:to]=2000. Its category, location, search words, price range, condition, seller type and sort order are kept. Filters this Actor cannot pass on to OLX are refused with a message instead of being dropped.",
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "Min price (PLN)",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings priced at or above this many złoty. OLX.pl applies it, so every page returned is in range. Empty means no minimum."
          },
          "maxPrice": {
            "title": "Max price (PLN)",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings priced at or below this many złoty. Empty means no maximum."
          },
          "condition": {
            "title": "Condition",
            "enum": [
              "any",
              "new",
              "used",
              "almost-new",
              "refurbished",
              "damaged"
            ],
            "type": "string",
            "description": "Only listings in this condition (the Stan field on OLX.pl). Any returns all. Some categories, such as jobs or real estate, have no condition field and OLX.pl refuses this filter there; the row then says so.",
            "default": "any"
          },
          "sellerType": {
            "title": "Seller type",
            "enum": [
              "any",
              "private",
              "business"
            ],
            "type": "string",
            "description": "Only listings from private people or only from businesses (firms). Any returns both.",
            "default": "any"
          },
          "sort": {
            "title": "Sort order",
            "enum": [
              "newest",
              "relevance",
              "price-asc",
              "price-desc"
            ],
            "type": "string",
            "description": "Order of the results for searches built from search terms, categories and locations (a pasted address keeps its own order). Newest is OLX.pl's newest first (listings refreshed by their seller also move up). Watch mode always reads newest first.",
            "default": "newest"
          },
          "maxResultsPerSearch": {
            "title": "Max listings per search",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many listings to return for each search, from 1 to 1000. OLX.pl shows 40 per page and at most 1,000 per search. In watch mode, the most rows one check returns per search.",
            "default": 40
          },
          "requireWordsInTitle": {
            "title": "Only listings with all search words in the title",
            "type": "boolean",
            "description": "OLX.pl's search also matches descriptions and similar words, so some results do not name what you searched for. Turn on to return (and pay for) only listings whose title contains every search word. Off by default; every row says queryInTitle either way.",
            "default": false
          },
          "includePromoted": {
            "title": "Include promoted listings",
            "type": "boolean",
            "description": "OLX.pl adds about 12 paid promoted listings to each page of results, outside the sort order. Off by default, so you get the search results in the order you chose. Turn on to get them too, marked isPromoted.",
            "default": false
          },
          "onlyNew": {
            "title": "Watch mode: only new listings and price drops",
            "type": "boolean",
            "description": "Run the same search on a schedule. The first run only remembers what is listed now and returns nothing, free of charge. Every later run returns only listings created after the watch started, and listings whose price went down. A check that finds nothing is charged as one small search-checked event instead of rows.",
            "default": false
          },
          "includePriceDrops": {
            "title": "Watch mode: return price drops",
            "type": "boolean",
            "description": "In watch mode, also return listings seen before when their price went down, with the previous price and the difference. Price rises are remembered but not returned.",
            "default": true
          },
          "watchPages": {
            "title": "Watch mode: pages to read per check",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "The most pages (40 listings each, newest first) a watch reads per search on each check, from 1 to 25. A check stops early once it reaches listings older than the previous check, so this only matters for busy searches checked rarely.",
            "default": 3
          },
          "watchName": {
            "title": "Watch name",
            "type": "string",
            "description": "Optional. A name for this watch (letters, digits, dot, dash, underscore). Two schedules with the same search but different names keep separate memories. Empty uses one shared default watch."
          },
          "resetMonitoringState": {
            "title": "Watch mode: forget what was seen",
            "type": "boolean",
            "description": "Start this watch over: the run is treated as the first check again and only remembers what is listed now. Off by default.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}