{
  "openapi": "3.0.1",
  "info": {
    "title": "Government Tenders Scraper - TED, SAM.gov, Procurement Data",
    "description": "19,795 notices in one week from the EU TED Tenders Electronic Daily API, where paged search stops at 15,000; 48 buyer countries in one measured window. UK and US SAM.gov notices with buyer email and phone. Government tenders API, SAM.gov contract opportunities search, public procurement database.",
    "version": "0.1",
    "x-build-id": "mQ528q87vYGdySYqS"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/snow_leo_data~government-tenders-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-snow_leo_data-government-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/snow_leo_data~government-tenders-scraper/runs": {
      "post": {
        "operationId": "runs-sync-snow_leo_data-government-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/snow_leo_data~government-tenders-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-snow_leo_data-government-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": {
          "sources": {
            "title": "Sources",
            "uniqueItems": true,
            "type": "array",
            "description": "Which public procurement feeds to read. Every one of them is an open, key-free API: TED covers the EU, the EEA and the candidate countries (47 buyer countries were measured in a single 7-day window), the two UK services cover above- and below-threshold British contracts, and SAM.gov covers United States federal opportunities.",
            "items": {
              "type": "string",
              "enum": [
                "ted",
                "uk_find_a_tender",
                "uk_contracts_finder",
                "us_sam_gov"
              ],
              "enumTitles": [
                "TED — European Union, 47 countries, ~19 800 notices/week",
                "UK Find a Tender — above-threshold UK contracts",
                "UK Contracts Finder — below-threshold UK contracts",
                "US SAM.gov — federal contract opportunities"
              ]
            },
            "default": [
              "ted"
            ]
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Free-text search. On TED this is pushed into the API's own full-text index, so notices that do not match are never downloaded and never charged. On the UK and US feeds, which have no text parameter, the words are matched against title, description and buyer name before anything is written to the dataset."
          },
          "datePreset": {
            "title": "Publication date range",
            "enum": [
              "today",
              "last_2_days",
              "last_7_days",
              "last_14_days",
              "last_30_days",
              "last_90_days",
              "custom"
            ],
            "type": "string",
            "description": "How far back to look. Pick Custom to type exact dates below.",
            "default": "last_7_days"
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Drop any notice containing one of these words in its title, description or buyer name. Applied before you are charged.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "publicationDateFrom": {
            "title": "Custom range — from",
            "type": "string",
            "description": "Used only when the range above is set to Custom. Format YYYY-MM-DD."
          },
          "publicationDateTo": {
            "title": "Custom range — to",
            "type": "string",
            "description": "Used only when the range above is set to Custom. Format YYYY-MM-DD."
          },
          "countries": {
            "title": "Buyer countries",
            "uniqueItems": true,
            "type": "array",
            "description": "Leave empty for every country in the selected sources. The counts come from one live 7-day TED window, so they show where the volume actually is, not where it is assumed to be.",
            "items": {
              "type": "string",
              "enum": [
                "USA",
                "GBR",
                "HRV",
                "POL",
                "DEU",
                "FRA",
                "ESP",
                "CZE",
                "ROU",
                "ITA",
                "NLD",
                "FIN",
                "SWE",
                "SVN",
                "BGR",
                "BEL",
                "PRT",
                "LVA",
                "NOR",
                "LTU",
                "DNK",
                "CHE",
                "GRC",
                "IRL",
                "AUT",
                "SVK",
                "HUN",
                "EST",
                "MLT",
                "LUX",
                "CYP",
                "ISL",
                "MKD",
                "MDA",
                "LIE",
                "UKR",
                "SRB",
                "MWI",
                "GEO",
                "HND",
                "BRB",
                "NIC",
                "ALB",
                "SSD",
                "VNM",
                "CRI",
                "ARG",
                "ZMB"
              ],
              "enumTitles": [
                "United States — SAM.gov, 2 456 notices/day",
                "United Kingdom — Find a Tender + Contracts Finder",
                "Croatia — 5 514 notices/7 days on TED",
                "Poland — 4 065 notices/7 days on TED",
                "Germany — 3 854 notices/7 days on TED",
                "France — 1 952 notices/7 days on TED",
                "Spain — 1 539 notices/7 days on TED",
                "Czechia — 1 233 notices/7 days on TED",
                "Romania — 925 notices/7 days on TED",
                "Italy — 901 notices/7 days on TED",
                "Netherlands — 603 notices/7 days on TED",
                "Finland — 579 notices/7 days on TED",
                "Sweden — 563 notices/7 days on TED",
                "Slovenia — 543 notices/7 days on TED",
                "Bulgaria — 541 notices/7 days on TED",
                "Belgium — 536 notices/7 days on TED",
                "Portugal — 487 notices/7 days on TED",
                "Latvia — 484 notices/7 days on TED",
                "Norway — 474 notices/7 days on TED",
                "Lithuania — 379 notices/7 days on TED",
                "Denmark — 357 notices/7 days on TED",
                "Switzerland — 331 notices/7 days on TED",
                "Greece — 299 notices/7 days on TED",
                "Ireland — 275 notices/7 days on TED",
                "Austria — 260 notices/7 days on TED",
                "Slovakia — 238 notices/7 days on TED",
                "Hungary — 231 notices/7 days on TED",
                "Estonia — 199 notices/7 days on TED",
                "Malta — 67 notices/7 days on TED",
                "Luxembourg — 59 notices/7 days on TED",
                "Cyprus — 57 notices/7 days on TED",
                "Iceland — 28 notices/7 days on TED",
                "North Macedonia — 23 notices/7 days on TED",
                "Moldova — 9 notices/7 days on TED",
                "Liechtenstein — 7 notices/7 days on TED",
                "Ukraine — 5 notices/7 days on TED",
                "Serbia — 3 notices/7 days on TED",
                "Malawi — 3 notices/7 days on TED",
                "Georgia — 2 notices/7 days on TED",
                "Honduras — 2 notices/7 days on TED",
                "Barbados — 2 notices/7 days on TED",
                "Nicaragua — 1 notices/7 days on TED",
                "Albania — 1 notices/7 days on TED",
                "South Sudan — 1 notices/7 days on TED",
                "Viet Nam — 1 notices/7 days on TED",
                "Costa Rica — 1 notices/7 days on TED",
                "Argentina — 1 notices/7 days on TED",
                "Zambia — 1 notices/7 days on TED"
              ]
            },
            "default": []
          },
          "buyerNameContains": {
            "title": "Buyer name contains",
            "type": "string",
            "description": "Keep only notices whose contracting authority name contains this text. Useful for watching one ministry, council or agency."
          },
          "cpvCodes": {
            "title": "Sector (CPV division)",
            "uniqueItems": true,
            "type": "array",
            "description": "CPV is the European sector vocabulary. Picking a division matches every code inside it, so 45 returns all construction work, not only notices tagged with the bare division code. SAM.gov classifies with NAICS instead and is not filtered by this.",
            "items": {
              "type": "string",
              "enum": [
                "03000000",
                "09000000",
                "14000000",
                "15000000",
                "16000000",
                "18000000",
                "19000000",
                "22000000",
                "24000000",
                "30000000",
                "31000000",
                "32000000",
                "33000000",
                "34000000",
                "35000000",
                "37000000",
                "38000000",
                "39000000",
                "41000000",
                "42000000",
                "43000000",
                "44000000",
                "45000000",
                "48000000",
                "50000000",
                "51000000",
                "55000000",
                "60000000",
                "63000000",
                "64000000",
                "65000000",
                "66000000",
                "70000000",
                "71000000",
                "72000000",
                "73000000",
                "75000000",
                "76000000",
                "77000000",
                "79000000",
                "80000000",
                "85000000",
                "90000000",
                "92000000",
                "98000000"
              ],
              "enumTitles": [
                "03 — Agriculture, farming, fishing, forestry",
                "09 — Petroleum, fuel, electricity and other energy",
                "14 — Mining, basic metals and related products",
                "15 — Food, beverages, tobacco",
                "16 — Agricultural machinery",
                "18 — Clothing, footwear, luggage",
                "19 — Leather and textile fabrics, plastic and rubber",
                "22 — Printed matter and related products",
                "24 — Chemical products",
                "30 — Office and computing machinery, equipment and supplies",
                "31 — Electrical machinery, apparatus, equipment",
                "32 — Radio, television, communication, telecommunication equipment",
                "33 — Medical equipments, pharmaceuticals and personal care",
                "34 — Transport equipment and auxiliary products",
                "35 — Security, fire-fighting, police and defence equipment",
                "37 — Musical instruments, sport goods, games, toys, handicraft",
                "38 — Laboratory, optical and precision equipments",
                "39 — Furniture, furnishings, domestic appliances, cleaning products",
                "41 — Collected and purified water",
                "42 — Industrial machinery",
                "43 — Machinery for mining, quarrying, construction",
                "44 — Construction structures and materials, auxiliary products",
                "45 — Construction work",
                "48 — Software package and information systems",
                "50 — Repair and maintenance services",
                "51 — Installation services",
                "55 — Hotel, restaurant and retail trade services",
                "60 — Transport services",
                "63 — Supporting and auxiliary transport services, travel agencies",
                "64 — Postal and telecommunications services",
                "65 — Public utilities",
                "66 — Financial and insurance services",
                "70 — Real estate services",
                "71 — Architectural, construction, engineering and inspection services",
                "72 — IT services: consulting, software development, Internet, support",
                "73 — Research and development services",
                "75 — Administration, defence and social security services",
                "76 — Services related to the oil and gas industry",
                "77 — Agricultural, forestry, horticultural, aquacultural services",
                "79 — Business services: law, marketing, consulting, recruitment, printing",
                "80 — Education and training services",
                "85 — Health and social work services",
                "90 — Sewage, refuse, cleaning and environmental services",
                "92 — Recreational, cultural and sporting services",
                "98 — Other community, social and personal services"
              ]
            },
            "default": []
          },
          "noticeTypes": {
            "title": "Notice type (TED)",
            "uniqueItems": true,
            "type": "array",
            "description": "Restrict to particular eForms notice types. Applies to TED only.",
            "items": {
              "type": "string",
              "enum": [
                "can-desg",
                "can-modif",
                "can-social",
                "can-standard",
                "can-tran",
                "cn-desg",
                "cn-social",
                "cn-standard",
                "corr",
                "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 award notice (social and other specific services) (can-social)",
                "Contract award notice (can-standard)",
                "Contract award notice (transport) (can-tran)",
                "Design contest notice (cn-desg)",
                "Contract notice (social and other specific services) (cn-social)",
                "Contract notice (cn-standard)",
                "Corrigendum (corr)",
                "Prior information notice (buyer profile) (pin-buyer)",
                "Prior information notice as call for competition (social) (pin-cfc-social)",
                "Prior information notice as call for competition (pin-cfc-standard)",
                "Prior information notice (pin-only)",
                "Prior information notice used as a call for competition (pin-rtl)",
                "Prior information notice (transport) (pin-tran)",
                "Preliminary market consultation notice (pmc)",
                "Qualification system notice (qu-sy)",
                "Subcontract notice (subco)",
                "Voluntary ex ante transparency notice (veat)"
              ]
            },
            "default": []
          },
          "contractNature": {
            "title": "Contract nature",
            "enum": [
              "",
              "works",
              "supplies",
              "services"
            ],
            "type": "string",
            "description": "Works, supplies or services. Published by TED and by both UK feeds; SAM.gov does not publish it.",
            "default": ""
          },
          "stage": {
            "title": "Stage",
            "enum": [
              "any",
              "opportunity",
              "award"
            ],
            "type": "string",
            "description": "An opportunity is something you can still bid for; an award names who won. Both are useful, and they are usually mixed together in one feed.",
            "default": "any"
          },
          "openOnly": {
            "title": "Only notices still open",
            "type": "boolean",
            "description": "Drop awards and anything whose deadline has passed. Notices with no published deadline are kept: on these feeds a missing deadline is normal for prior information notices, and dropping them would hide a whole class.",
            "default": false
          },
          "deadlineWithinDays": {
            "title": "Deadline within N days",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Keep only notices closing within this many days. Leave empty for no limit."
          },
          "deadlineFrom": {
            "title": "Deadline from",
            "type": "string",
            "description": "Keep only notices closing on or after this date, YYYY-MM-DD. Notices with no published deadline are kept."
          },
          "deadlineTo": {
            "title": "Deadline to",
            "type": "string",
            "description": "Keep only notices closing on or before this date, YYYY-MM-DD."
          },
          "minValueEur": {
            "title": "Minimum value (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Compared against value_eur_estimate, which converts the published amount at a fixed rate table dated 2026-09-11. Notices with no published value are kept, because most contract notices publish a value only at award time."
          },
          "maxValueEur": {
            "title": "Maximum value (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Upper bound on value_eur_estimate. Leave empty for no ceiling."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "publication_date_desc",
              "publication_date_asc",
              "deadline_asc",
              "value_desc"
            ],
            "type": "string",
            "description": "Order of the rows within each source. Sorting happens after filtering, so it never costs you extra rows.",
            "default": "publication_date_desc"
          },
          "outputLanguage": {
            "title": "Preferred language",
            "enum": [
              "eng",
              "deu",
              "fra",
              "spa",
              "ita",
              "pol",
              "nld",
              "por",
              "ron",
              "ces",
              "swe",
              "dan",
              "fin",
              "ell",
              "hun",
              "bul",
              "hrv",
              "slk",
              "slv",
              "lit",
              "lav",
              "est",
              "gle",
              "mlt"
            ],
            "type": "string",
            "description": "TED publishes titles and descriptions in up to 24 languages. This picks which one to put in the title and description columns; if the notice has no text in it, the next available language is used rather than leaving the row blank.",
            "default": "eng"
          },
          "maxItems": {
            "title": "Maximum notices",
            "minimum": 0,
            "type": "integer",
            "description": "Total across all selected sources. 0 means no limit. With several sources selected the limit is shared between them, so one large feed cannot eat the whole run.",
            "default": 200
          },
          "maxItemsPerSource": {
            "title": "Maximum per source",
            "minimum": 0,
            "type": "integer",
            "description": "Overrides the automatic even split. 0 leaves the split alone.",
            "default": 0
          },
          "includeDescription": {
            "title": "Include the description text",
            "type": "boolean",
            "description": "Turn off for a much smaller dataset when you only need the metadata.",
            "default": true
          },
          "compactOutput": {
            "title": "Compact output (15 fields)",
            "type": "boolean",
            "description": "Return only the fields an agent or a spreadsheet actually reads. Useful when the dataset is fed to a language model and every field costs tokens.",
            "default": false
          },
          "dropEmptyFields": {
            "title": "Drop empty fields",
            "type": "boolean",
            "description": "Omit keys whose value is null or empty instead of sending them. Not all sources publish all fields, so this removes real noise.",
            "default": false
          },
          "includeRawSource": {
            "title": "Include the raw source record",
            "type": "boolean",
            "description": "Add a raw field holding the untouched payload from the source, next to the normalised columns. Useful when you need a field this Actor does not map yet.",
            "default": false
          },
          "incrementalMode": {
            "title": "Monitor mode — only what changed",
            "type": "boolean",
            "description": "Remembers which notices were already delivered, in a named key-value store that survives between runs, and returns only new and edited ones. Each row is labelled NEW or UPDATED. This is what makes a daily schedule cheap: you pay for the dozens that changed, not for the thousands that did not.",
            "default": false
          },
          "emitUnchanged": {
            "title": "Also return unchanged notices",
            "type": "boolean",
            "description": "Only meaningful with monitor mode on. Off by default, because you already paid for those rows once.",
            "default": false
          },
          "tedExpertQuery": {
            "title": "Advanced — TED expert query",
            "type": "string",
            "description": "Replaces every generated TED clause with your own, in TED's expert search syntax, for example: publication-date>=today(-3) AND buyer-country IN (DEU) AND classification-cpv IN (72000000). When this is set the filters above still apply to the other sources."
          },
          "samMaxRowsScanned": {
            "title": "Advanced — SAM.gov rows to scan",
            "minimum": 1000,
            "type": "integer",
            "description": "SAM.gov publishes one 250 MB CSV with no date parameter, but it is sorted newest first, so this Actor stops reading as soon as the dates leave your window. This is the hard stop in case the ordering ever changes.",
            "default": 120000
          },
          "tedPageSize": {
            "title": "Advanced — TED page size",
            "minimum": 10,
            "maximum": 250,
            "type": "integer",
            "description": "Notices per TED request. 250 is the maximum the API accepts and the default; lower it only if you are hitting timeouts.",
            "default": 250
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}