{
  "openapi": "3.0.1",
  "info": {
    "title": "EU & UK Tender Scraper: TED, Find a Tender, Contracts Finder",
    "description": "Public procurement notices from the official TED (EU), Find a Tender and Contracts Finder (UK) APIs in one schema: title, buyer, CPV, value, deadline, winners. Dedupe, CPV/country/value filters. Ausschreibungen, appels d'offres, licitaciones, gare d'appalto, przetargi, aanbestedingen. Unofficial.",
    "version": "0.2",
    "x-build-id": "dkxsuszBlGSGtsQLs"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fecklesspleb~eu-uk-public-tenders/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fecklesspleb-eu-uk-public-tenders",
        "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/fecklesspleb~eu-uk-public-tenders/runs": {
      "post": {
        "operationId": "runs-sync-fecklesspleb-eu-uk-public-tenders",
        "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/fecklesspleb~eu-uk-public-tenders/run-sync": {
      "post": {
        "operationId": "run-sync-fecklesspleb-eu-uk-public-tenders",
        "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": {
          "sources": {
            "title": "Sources",
            "type": "array",
            "description": "Which official services to read. They are read side by side (one notice from each in turn) until maxItems is reached.",
            "items": {
              "type": "string",
              "enum": [
                "ted",
                "find_a_tender",
                "contracts_finder"
              ],
              "enumTitles": [
                "TED (EU Official Journal S series)",
                "Find a Tender (UK, above threshold)",
                "Contracts Finder (UK, incl. below threshold)"
              ]
            },
            "default": [
              "ted",
              "find_a_tender",
              "contracts_finder"
            ]
          },
          "stages": {
            "title": "Notice stages",
            "type": "array",
            "description": "Tender = contract notices you can bid on. Award = award and contract notices with winning suppliers. Planning = prior information and pipeline notices.",
            "items": {
              "type": "string",
              "enum": [
                "tender",
                "award",
                "planning"
              ],
              "enumTitles": [
                "Tender (open for bids)",
                "Award (winners)",
                "Planning (prior information)"
              ]
            },
            "default": [
              "tender"
            ]
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "latest",
              "date_range"
            ],
            "type": "string",
            "description": "Latest reads today plus the previous lookbackDays days; with 'only new' on (the default here) a daily schedule returns each notice once. Date range reads a fixed window of up to 92 days.",
            "default": "latest"
          },
          "lookbackDays": {
            "title": "Latest: days to look back",
            "minimum": 0,
            "maximum": 31,
            "type": "integer",
            "description": "0 = today only. 1 = yesterday and today (recommended for a daily schedule).",
            "default": 1
          },
          "startDate": {
            "title": "Date range: start date",
            "type": "string",
            "description": "First publication date (YYYY-MM-DD). Required in date range mode."
          },
          "endDate": {
            "title": "Date range: end date",
            "type": "string",
            "description": "Last publication date (YYYY-MM-DD). Defaults to today (UK date)."
          },
          "keywords": {
            "title": "Keywords",
            "maxItems": 50,
            "type": "array",
            "description": "Keep notices whose title or description contains any of these words or phrases (case-insensitive). TED titles also carry an English machine-generated title, so English words find most EU notices. Empty = all.",
            "items": {
              "type": "string"
            }
          },
          "cpvPrefixes": {
            "title": "CPV code prefixes",
            "maxItems": 100,
            "type": "array",
            "description": "Keep notices with any CPV code starting with one of these, e.g. 72 (IT services), 45 (construction), 33 (medical equipment). Empty = all.",
            "items": {
              "type": "string"
            }
          },
          "tedBuyerCountries": {
            "title": "TED: buyer countries",
            "maxItems": 60,
            "type": "array",
            "description": "TED only: 3-letter ISO codes of the buyer's country, e.g. DEU, FRA, IRL, POL. Sent to the TED API as a filter. UK sources are not affected. Empty = all.",
            "items": {
              "type": "string"
            }
          },
          "minValue": {
            "title": "Minimum value",
            "minimum": 0,
            "type": "number",
            "description": "Keep notices whose published value (award value for award notices) is at least this, in the notice's own currency. Notices with no published value are dropped when this is set. Amounts are not converted: TED is mostly EUR, UK GBP."
          },
          "openOnly": {
            "title": "Only tenders still open",
            "type": "boolean",
            "description": "Keep only tender-stage notices whose submission deadline is today or later.",
            "default": false
          },
          "language": {
            "title": "TED: preferred language",
            "enum": [
              "eng",
              "deu",
              "fra",
              "spa",
              "ita",
              "nld",
              "pol",
              "por",
              "ron",
              "ces",
              "dan",
              "ell",
              "est",
              "fin",
              "gle",
              "hrv",
              "hun",
              "lav",
              "lit",
              "mlt",
              "slk",
              "slv",
              "swe",
              "bul"
            ],
            "type": "string",
            "description": "TED texts are multilingual. Values in this language are used when the notice has them; otherwise the notice's own language.",
            "default": "eng"
          },
          "includeBuyerContact": {
            "title": "Include buyer contact e-mail and phone",
            "type": "boolean",
            "description": "Adds buyerContact {email, telephone} as published by the contracting authority. Off by default. Person names are never output, and supplier contact details are never collected.",
            "default": false
          },
          "onlyNewSinceLastRun": {
            "title": "Only notices not returned before",
            "enum": [
              "auto",
              "yes",
              "no"
            ],
            "type": "string",
            "description": "auto = on in Latest mode, off in Date range mode. Remembers up to 100,000 notice ids per stateKey.",
            "default": "auto"
          },
          "stateKey": {
            "title": "State key",
            "type": "string",
            "description": "Keeps the 'only new' memory of different schedules apart (letters, digits, - and _).",
            "default": "default"
          },
          "maxItems": {
            "title": "Max notices",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Stop after saving this many notices (each one is a charged result). Default 4 (at most $0.008). Raise it for a fuller feed.",
            "default": 4
          },
          "maxPagesPerSource": {
            "title": "Max pages per source",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Safety cap on API pages read from each source (TED pages hold 250 notices, UK pages 100).",
            "default": 200
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}