{
  "openapi": "3.0.1",
  "info": {
    "title": "TED EU Tenders Scraper - Public Procurement & Awards",
    "description": "Search EU public tenders and contract awards on TED (Tenders Electronic Daily) via the official API: keywords, CPV, countries, dates, deadlines, values, winners. Only-new mode. Pay per notice.",
    "version": "0.1",
    "x-build-id": "ehhvf9RdrYO8iXZG3"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tinyrex~ted-tenders-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tinyrex-ted-tenders-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/tinyrex~ted-tenders-scraper/runs": {
      "post": {
        "operationId": "runs-sync-tinyrex-ted-tenders-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/tinyrex~ted-tenders-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-tinyrex-ted-tenders-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": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Words to find in the notice (any language, TED stems and transliterates them). Each line is one search: all its words must appear; use \"quotes\" for an exact phrase and * as a wildcard (softw*). Several lines = any of them. Leave empty to get all notices matching the other filters.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "searchIn": {
            "title": "Search keywords in",
            "enum": [
              "fullText",
              "title"
            ],
            "type": "string",
            "description": "Full text searches every field of the notice, including CPV labels in all languages. Title only searches the buyer's own procedure and lot titles (eForms notices, published since late 2023).",
            "default": "fullText"
          },
          "cpvCodes": {
            "title": "CPV codes",
            "type": "array",
            "description": "Common Procurement Vocabulary codes, e.g. 72000000 (IT services), 45000000 (construction), 33000000 (medical equipment). The check digit (72000000-5) is accepted. By default sub-codes are included: 72000000 also finds 72212100.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeCpvSubcodes": {
            "title": "Include CPV sub-codes",
            "type": "boolean",
            "description": "On: 72000000 matches every code in division 72. Off: exact code only.",
            "default": true
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Buyer countries as 2- or 3-letter codes or English names: DE, FRA, Poland. EL/UK aliases work. Empty = all countries.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "countryField": {
            "title": "Country means",
            "enum": [
              "buyer",
              "performance"
            ],
            "type": "string",
            "description": "Filter on the contracting authority's country or on where the contract is performed.",
            "default": "buyer"
          },
          "publishedWithinDays": {
            "title": "Published in the last N days",
            "minimum": 0,
            "type": "integer",
            "description": "Notices published in the last N days (TED publishes Monday to Friday). Ignored when a date range is set. 0 = no date limit.",
            "default": 7
          },
          "publishedFrom": {
            "title": "Published from",
            "type": "string",
            "description": "Start of the publication date range (YYYY-MM-DD). TED has notices since 2016 via the API."
          },
          "publishedTo": {
            "title": "Published to",
            "type": "string",
            "description": "End of the publication date range (YYYY-MM-DD), inclusive."
          },
          "onlyOpen": {
            "title": "Only open tenders (deadline not passed)",
            "type": "boolean",
            "description": "Keep only notices whose deadline for tenders or requests to participate is today or later.",
            "default": false
          },
          "noticeCategories": {
            "title": "Notice categories",
            "type": "array",
            "description": "Empty = all. Pick Competition for open business opportunities, Result for awards and winners.",
            "items": {
              "type": "string",
              "enum": [
                "competition",
                "result",
                "planning",
                "cont-modif",
                "dir-awa-pre",
                "completion",
                "consultation"
              ],
              "enumTitles": [
                "Competition: contract notices, open calls for tenders",
                "Result: contract award notices (winners, awarded values)",
                "Planning: prior information notices",
                "Contract modification",
                "Direct award pre-announcement (VEAT)",
                "Contract completion",
                "Pre-market consultation"
              ]
            },
            "default": []
          },
          "noticeTypes": {
            "title": "Notice types (detailed)",
            "type": "array",
            "description": "Optional, more detailed than categories. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "can-desg",
                "can-modif",
                "can-social",
                "can-standard",
                "can-tran",
                "cn-desg",
                "cn-social",
                "cn-standard",
                "compl",
                "pin-buyer",
                "pin-cfc-social",
                "pin-cfc-standard",
                "pin-only",
                "pin-rtl",
                "pin-tran",
                "pmc",
                "qu-sy",
                "subco",
                "veat"
              ],
              "enumTitles": [
                "Design contest result notice (can-desg)",
                "Contract modification notice (can-modif)",
                "Contract or concession award notice – light regime (can-social)",
                "Contract or concession award notice – standard regime (can-standard)",
                "Contract award notice for public passenger transport services (can-tran)",
                "Design contest notice (cn-desg)",
                "Contract notice – light regime (cn-social)",
                "Contract or concession notice – standard regime (cn-standard)",
                "Contract completion notice (compl)",
                "Notice of the publication of a prior information notice or a periodic information notice on a buyer profile (pin-buyer)",
                "Prior information notice or a periodic indicative notice used as a call for competition – light regime (pin-cfc-social)",
                "Prior information notice or a periodic indicative notice used as a call for competition – standard regime (pin-cfc-standard)",
                "Prior information notice or a periodic indicative notice used only for information (pin-only)",
                "Prior information notice or a periodic indicative notice used to shorten time limits for receipt of tenders (pin-rtl)",
                "Prior information notice for public passenger transport services (pin-tran)",
                "Pre-market consultation notice (pmc)",
                "Notice on the existence of a qualification system (qu-sy)",
                "Subcontracting notice (subco)",
                "Voluntary ex-ante transparency notice (veat)"
              ]
            },
            "default": []
          },
          "contractTypes": {
            "title": "Contract type",
            "type": "array",
            "description": "Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "services",
                "supplies",
                "works"
              ],
              "enumTitles": [
                "Services",
                "Supplies",
                "Works"
              ]
            },
            "default": []
          },
          "procedureTypes": {
            "title": "Procedure type",
            "type": "array",
            "description": "Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "comp-dial",
                "comp-tend",
                "exp-int-rail",
                "innovation",
                "neg-w-call",
                "neg-wo-call",
                "open",
                "oth-mult",
                "oth-single",
                "restricted"
              ],
              "enumTitles": [
                "Competitive dialogue",
                "Competitive tendering (article 5(3) of Regulation 1370/2007)",
                "Request for expression of interest – only for rail (article 5(3b) of Regulation 1370/2007)",
                "Innovation partnership",
                "Negotiated with prior publication of a call for competition / competitive with negotiation",
                "Negotiated without prior call for competition",
                "Open",
                "Other multiple stage procedure",
                "Other single stage procedure",
                "Restricted"
              ]
            },
            "default": []
          },
          "buyerNames": {
            "title": "Buyer names",
            "type": "array",
            "description": "Contracting authorities, e.g. Deutsche Bahn or Stadt Wien. All words of a line must appear in the buyer name. Several lines = any of them.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minValue": {
            "title": "Min value",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum estimated or total value as published by TED, in the notice's own currency (no conversion). Notices without a value are excluded when set. 0 = no limit.",
            "default": 0
          },
          "maxValue": {
            "title": "Max value",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum estimated or total value (notice currency). 0 = no limit.",
            "default": 0
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Drop notices that contain any of these words anywhere in the text.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "expertQuery": {
            "title": "TED expert query (advanced)",
            "type": "string",
            "description": "Optional native TED expert query, combined with the filters above using AND, e.g. NL >= 10 or place-of-performance IN (FRK) or winner-name ~ (Siemens). Syntax: https://ted.europa.eu/en/help/search-browse#expert-search. Results are newest first; keep the default sort for complete paging.",
            "default": ""
          },
          "maxResults": {
            "title": "Max notices",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of notices saved (one charge per notice). 0 = all matching notices. Newest notices come first.",
            "default": 100
          },
          "language": {
            "title": "Preferred language",
            "enum": [
              "en",
              "de",
              "fr",
              "es",
              "it",
              "nl",
              "pl",
              "pt",
              "cs",
              "sk",
              "sl",
              "hr",
              "hu",
              "ro",
              "bg",
              "el",
              "da",
              "sv",
              "fi",
              "et",
              "lv",
              "lt",
              "mt",
              "ga"
            ],
            "type": "string",
            "description": "Language for the notice title (TED translates it into all EU languages), links and buyer names where available. The buyer's own title is kept in the original language when no translation exists.",
            "default": "en"
          },
          "includeDescription": {
            "title": "Include description",
            "type": "boolean",
            "description": "Add the short description of the procurement (usually in the original language).",
            "default": true
          },
          "onlyLatestVersions": {
            "title": "Only latest versions",
            "type": "boolean",
            "description": "Hide notices that were later replaced by a change notice (corrigendum).",
            "default": false
          },
          "onlyNew": {
            "title": "Only new notices (incremental)",
            "type": "boolean",
            "description": "Return only notices you have not received in earlier runs with the same state key. Perfect for daily schedules and alerts. The first run returns everything that matches and remembers it.",
            "default": false
          },
          "stateKey": {
            "title": "State key",
            "type": "string",
            "description": "Name of the memory used by 'Only new notices'. Use a different key for each schedule or search.",
            "default": "default"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}