{
  "openapi": "3.0.1",
  "info": {
    "title": "Allegro Scraper [Only $0.0014💰] | Prices | Sellers | GTIN",
    "description": "Scrape Allegro.pl product data by keyword, category, seller or offer URL — pure HTTP, no browser. Each row: price, seller reputation, condition, parameters, Smart!/sponsored flags and sales velocity. Deep mode adds stock, GTIN and warranty.",
    "version": "1.0",
    "x-build-id": "mJcmCa1Q7cgqGJq1h"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/ahmed_jasarevic~allegro-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-ahmed_jasarevic-allegro-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/ahmed_jasarevic~allegro-scraper/runs": {
      "post": {
        "operationId": "runs-sync-ahmed_jasarevic-allegro-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/ahmed_jasarevic~allegro-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-ahmed_jasarevic-allegro-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": {
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "Keywords to search on Allegro.pl. Each keyword runs its own paginated crawl, e.g. \"laptop gaming\", \"iphone 15\", \"lego technic\".",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Direct Allegro URLs — offer pages (allegro.pl/oferta/…), search/category pages (allegro.pl/listing?string=… or allegro.pl/kategoria/…) or seller storefronts (allegro.pl/uzytkownik/…). Listing/category/seller URLs are paginated; offer URLs return a single product (always full detail). A `p=N` in the URL is respected and the crawl continues forward from that page — handy for splitting a huge storefront into page batches. Runs in addition to the search queries.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItemsPerQuery": {
            "title": "Max items per query / URL",
            "minimum": 1,
            "maximum": 6000,
            "type": "integer",
            "description": "Upper bound of products to extract per search query or per listing/category/seller URL. Allegro serves ~60 products per page. Search and category views are capped by Allegro at 100 pages (~6000 products per query); seller storefronts have no such cap and are followed to their real last page.",
            "default": 100
          },
          "maxPagesPerQuery": {
            "title": "Max pages per query / URL",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Optional hard cap on the number of listing pages fetched per query/URL, independent of the item limit. Defaults to the number of pages needed to reach Max items per query (capped at 100 for search/category by Allegro)."
          },
          "minPrice": {
            "title": "Minimum price",
            "minimum": 0,
            "type": "integer",
            "description": "Only return offers priced at or above this value in PLN. Maps to Allegro's `price_from` filter (applied to search and category URLs)."
          },
          "maxPrice": {
            "title": "Maximum price",
            "minimum": 0,
            "type": "integer",
            "description": "Only return offers priced at or below this value in PLN. Maps to Allegro's `price_to` filter (applied to search and category URLs)."
          },
          "condition": {
            "title": "Condition",
            "enum": [
              "all",
              "new",
              "used"
            ],
            "type": "string",
            "description": "Filter by product condition (Allegro's \"stan\" filter).",
            "default": "all"
          },
          "sortBy": {
            "title": "Sort results by",
            "enum": [
              "relevance",
              "price-asc",
              "price-desc",
              "newest"
            ],
            "type": "string",
            "description": "Order of the search/category results.",
            "default": "relevance"
          },
          "scrapeProductDetails": {
            "title": "Scrape full product details",
            "type": "boolean",
            "description": "Visit each offer page for the deep dataset: full description, complete parameter table, rating + review count + score distribution, stock quantity, GTIN/EAN, warranty, return policy and full-resolution images. Costs one extra request per product (slower). Leave off for fast, rich listing-level data.",
            "default": false
          },
          "includeRawData": {
            "title": "Include raw Allegro JSON",
            "type": "boolean",
            "description": "Attach the raw Allegro offer payloads (price / seller / rating / parameters boxes) to each detailed record under `detail.raw`. Only used when \"Scrape full product details\" is on. For debugging / power users.",
            "default": false
          },
          "barcodeQuickLookup": {
            "title": "Barcode quick lookup",
            "type": "boolean",
            "description": "When a search query is a pure EAN/GTIN barcode (8–14 digits) and \"Max items per query\" is 1, skip the extra per-offer fetch and echo the searched barcode into the record's `gtin` field. The listing data still gives price, seller, rating, images and parameters — making big barcode runs dramatically faster and cheaper. Turn OFF if you need descriptions, stock, warranty or return policy on barcode lookups. Only affects pure-EAN single-item queries; keyword and multi-item searches always fetch full details when deep mode is on.",
            "default": true
          },
          "geoCode": {
            "title": "Proxy exit country",
            "enum": [
              "pl",
              "de",
              "cz",
              "sk",
              "hu"
            ],
            "type": "string",
            "description": "Country the proxy request exits from (Allegro localises prices and availability by IP). Default \"pl\" (Poland) is correct for allegro.pl.",
            "default": "pl"
          },
          "concurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many products/pages to fetch in parallel (1–50). UNBLOCKER re-renders each page in a real browser (~55–65 s), so parallelism is the main speed lever and it also cuts compute cost (cost ≈ allocated memory × wall-clock). Default 25; use 50 for large/deep runs.",
            "default": 25
          },
          "warmup": {
            "title": "Warm one session per query",
            "type": "boolean",
            "description": "Experimental speed boost: for each query, a patchright (engine-level undetectable) Chromium solves DataDome ONCE on a sticky Apify proxy session (same IP), then all pages of the query are fetched in parallel via curl-impersonate with the matching cookie — ~1–2 s/page instead of a fresh ~55–65 s UNBLOCKER render per page, no per-page solver fees. Put a STICKY group FIRST in `apifyProxyGroups` (e.g. [\"RESIDENTIAL\"]); if you also list UNBLOCKER, any page whose warm fetch fails automatically falls back to UNBLOCKER, so the run still completes reliably (note: pooled residential IPs are a lottery — some are pre-flagged, so solving may take a few attempts). If solving fails for every attempted IP, the whole query falls back to the per-page managed path. Recommended: `\"apifyProxyGroups\": [\"RESIDENTIAL\", \"UNBLOCKER\"]` for speed + reliability.",
            "default": true
          },
          "warmConcurrency": {
            "title": "Concurrent warm solves",
            "minimum": 1,
            "maximum": 6,
            "type": "integer",
            "description": "How many patched browsers may solve DataDome in parallel (1-6). Each browser costs ~300-500MB RAM; the 2-core container CPU-thrashes past ~3, slowing solves. Keep 3 unless the container has more cores. Many queries = many solves (DataDome re-challenges each new query string), so the efficient shape is FEW queries × DEEP pagination (one solve serves ~5+ pages at ~5 items/s).",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Select proxies used by the scraper. You can list MULTIPLE groups (first one wins for routing):\n- Warmup speed (recommended first): a STICKY group like RESIDENTIAL, or leave the default AUTO/datacenter — the actor solves DataDome once per query in a patched real browser and reuses the cookie on the same IP for every page.\n- UNBLOCKER (reliable fallback): list it after the sticky group; pages the warm path fails on are re-fetched through UNBLOCKER so runs always complete. For a pure-UNBLOCKER run (no warmup), set just [\"UNBLOCKER\"] and `warmup: false`.\n- Alternatively provide a scrape.do API key below (managed bypass, needs premium `super=true` routing)."
          },
          "scrapeDoApiKey": {
            "title": "scrape.do API key (DataDome bypass)",
            "type": "string",
            "description": "Optional scrape.do managed-proxy API key. When set, every request is routed through `https://api.scrape.do?url=…&geoCode=pl&super=true&render=false&sessionId=…` (the official Allegro integration combo), which routes through Polish residential/mobile IPs and clears the DataDome challenge. Requires a scrape.do account with premium (super) routing enabled."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}