{
  "openapi": "3.0.1",
  "info": {
    "title": "EU & UK Public Tenders Search: TED + Find a Tender",
    "description": "Search EU and UK public tenders in one format: TED (Tenders Electronic Daily), the EU's official procurement journal, and the UK's Find a Tender, through their official public APIs. Filter by keywords, CPV codes, country, buyer, notice type and date; get deadlines, values, buyers and official links.",
    "version": "1.1",
    "x-build-id": "IBZJ4Gfn8RwXuSoQ1"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/humble-echidna~eu-ted-tenders/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-humble-echidna-eu-ted-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/humble-echidna~eu-ted-tenders/runs": {
      "post": {
        "operationId": "runs-sync-humble-echidna-eu-ted-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/humble-echidna~eu-ted-tenders/run-sync": {
      "post": {
        "operationId": "run-sync-humble-echidna-eu-ted-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": "Where to search: `ted` (TED, the EU's official journal of public procurement) and/or `uk` (Find a Tender, the UK government's service; English only). Default [\"ted\"]. Find a Tender only lets callers make about 12 requests every 2 minutes, so a UK search takes about a minute per day of notices it reads and looks back at most 14 days (see the README). Every filter below applies to both.",
            "items": {
              "type": "string",
              "enum": [
                "ted",
                "uk"
              ],
              "enumTitles": [
                "EU: TED (Tenders Electronic Daily)",
                "UK: Find a Tender"
              ]
            },
            "default": [
              "ted"
            ]
          },
          "queries": {
            "title": "Keywords",
            "type": "array",
            "description": "One search per line, matched against the full text of each notice (e.g. software, \"road maintenance\", cleaning AND hospital). Quotes make a phrase; AND, OR and NOT combine words; * is a wildcard. Every filter below applies to every line. Left out, it defaults to software: pass an empty list to search by the filters alone.",
            "default": [
              "software"
            ],
            "items": {
              "type": "string"
            }
          },
          "cpvCodes": {
            "title": "CPV codes",
            "type": "array",
            "description": "Only notices classified under these CPV codes (the EU's procurement vocabulary, 8 digits, e.g. 72000000 for IT services), one per line. A broad code includes every code below it. Any one of the codes matches. Leave empty (the default) for any code.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Buyer countries",
            "type": "array",
            "description": "Only notices from buyers in these countries, as two-letter (DE, FR, EL or GR) or three-letter (DEU, FRA) codes. Any one of them matches. UK notices are included only when this is empty or includes GB (or UK, GBR).",
            "items": {
              "type": "string"
            }
          },
          "buyerName": {
            "title": "Buyer name",
            "type": "string",
            "description": "Only notices whose buyer (the contracting authority) name contains these words, e.g. Bundesagentur für Arbeit. Leave empty (the default) for any buyer."
          },
          "noticeTypes": {
            "title": "Notice types",
            "type": "array",
            "description": "Which kinds of notice to return: `competition` (open calls for tenders, i.e. contract notices), `award` (contract award notices: who won, for how much), `prior` (prior information notices: planned purchases), `modification` (contract modifications). Default [\"competition\"]. Pass an empty list for all kinds (including corrections and other notices).",
            "items": {
              "type": "string",
              "enum": [
                "competition",
                "award",
                "prior",
                "modification"
              ],
              "enumTitles": [
                "Open calls for tenders (contract notices)",
                "Contract award notices (who won, for how much)",
                "Prior information notices (planned purchases)",
                "Contract modifications"
              ]
            },
            "default": [
              "competition"
            ]
          },
          "openOnly": {
            "title": "Only tenders still open",
            "type": "boolean",
            "description": "Default false. When true, only notices whose deadline for tenders is today or later.",
            "default": false
          },
          "publishedFrom": {
            "title": "Published from",
            "type": "string",
            "description": "Only notices published on or after this: a date (2026-09-01) or a number of days back (7 days). Days back move with each run, so a scheduled run always looks at the last N days. Leave empty (the default) for no lower limit."
          },
          "publishedTo": {
            "title": "Published to",
            "type": "string",
            "description": "Only notices published on or before this date, as YYYY-MM-DD, e.g. 2026-09-30. Leave empty (the default) for no upper limit."
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "bg",
              "cs",
              "da",
              "de",
              "el",
              "es",
              "et",
              "fi",
              "fr",
              "ga",
              "hr",
              "hu",
              "it",
              "lt",
              "lv",
              "mt",
              "nl",
              "pl",
              "pt",
              "ro",
              "sk",
              "sl",
              "sv"
            ],
            "type": "string",
            "description": "Language for the title and links, where TED has a translation, as a two-letter code: `en` (default), `de`, `fr`, `es`, `it`, `pl` and the other official EU languages. TED translates each notice's title into all 24 EU languages; the description stays in the language the buyer wrote it in. UK notices are in English.",
            "default": "en"
          },
          "maxResultsPerQuery": {
            "title": "Max notices per search",
            "minimum": 1,
            "maximum": 15000,
            "type": "integer",
            "description": "At most this many notices per keyword line from each source, newest first: 1 to 15,000 (TED's own limit per search), default 20. With both sources and 3 keyword lines, a run can return up to 6 times this many.",
            "default": 20
          },
          "onlyNew": {
            "title": "Only new notices",
            "type": "boolean",
            "description": "Default false. When true, return only notices this search hasn't returned before (remembered in your Apify account, per keyword line and filter set). The first run returns everything. Good for scheduled tender alerts.",
            "default": false
          },
          "maxResults": {
            "title": "Max results per run",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many notices in total across all searches, e.g. 20. Minimum 1; leave empty (the default) for no limit. The run also stops cleanly at the maximum cost per run you set in the run options, whichever comes first. Set it to keep a run small and quick."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}