{
  "openapi": "3.0.1",
  "info": {
    "title": "NL & EU Government Tenders Scraper | TenderNed + TED",
    "description": "Get fresh NL and EU public procurement notices as structured leads. Filter by CPV code, deadline, value and country. MCP-ready.",
    "version": "0.1",
    "x-build-id": "q2e8ovQF1vrkwducy"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/codeclouds~nl-eu-tenders-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-codeclouds-nl-eu-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/codeclouds~nl-eu-tenders-scraper/runs": {
      "post": {
        "operationId": "runs-sync-codeclouds-nl-eu-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/codeclouds~nl-eu-tenders-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-codeclouds-nl-eu-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": {
          "source": {
            "title": "Source",
            "enum": [
              "tenderned",
              "ted",
              "both"
            ],
            "type": "string",
            "description": "Which tender platform(s) to fetch from.",
            "default": "both"
          },
          "cpvCodes": {
            "title": "CPV Codes",
            "type": "array",
            "description": "Filter by CPV codes, e.g. [\"45000000\", \"72000000\"]. Leave empty for all.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries (TED only)",
            "type": "array",
            "description": "ISO country codes, e.g. [\"NL\", \"BE\"]. Leave empty for all.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "publishedAfter": {
            "title": "Published After",
            "type": "string",
            "description": "Only tenders published on or after this date (YYYY-MM-DD), e.g. \"2026-01-01\"."
          },
          "deadlineAfter": {
            "title": "Deadline After",
            "type": "string",
            "description": "Only tenders with submission deadline on or after this date (YYYY-MM-DD), e.g. \"2026-07-01\"."
          },
          "minValue": {
            "title": "Min. Contract Value (EUR)",
            "type": "integer",
            "description": "Skip tenders with estimated value below this amount, e.g. 100000."
          },
          "maxResults": {
            "title": "Max Results",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum number of tenders to return (1–5000).",
            "default": 100
          },
          "incrementalMode": {
            "title": "Incremental Mode",
            "type": "boolean",
            "description": "When enabled, only fetches tenders newer than the previous run. Ideal for scheduled monitoring.",
            "default": false
          },
          "bedrijfCpvCodes": {
            "title": "Company CPV Codes (profile matching)",
            "type": "array",
            "description": "Optional: your company's own CPV codes/prefixes, e.g. [\"45213000\", \"72000000\"]. Each result gets a relevantieScore (0/40/70/100) and relevantieMatchedCpv based on how closely its CPV codes match yours. Note: TenderNed results have no CPV data, so their score is always null. Leave empty to disable.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "alleenRelevanteTenders": {
            "title": "Only Relevant Tenders",
            "type": "boolean",
            "description": "When enabled together with Company CPV Codes, skips (and doesn't charge for) tenders with a relevantieScore of 0. Has no effect if Company CPV Codes is empty.",
            "default": false
          },
          "webhookUrl": {
            "title": "Notification Webhook URL",
            "type": "string",
            "description": "Optional: POST a run summary (total tender count + top 5 by relevantieScore) to this URL once the run finishes. Only charged (notification-sent) if the POST succeeds; a failing webhook never fails the run itself."
          },
          "verrijkTenderNedCpv": {
            "title": "Enrich TenderNed results with CPV codes",
            "type": "boolean",
            "description": "Optional: makes an extra detail-call per TenderNed result to fetch its CPV codes (the list API doesn't include them). Only charged (tender-cpv-enrichment) when the detail-call succeeds and returns at least 1 CPV code.",
            "default": false
          },
          "verrijkMetLocatie": {
            "title": "Enrich NL tenders with location (gemeente/provincie)",
            "type": "boolean",
            "description": "Optional: geocodes the buyer name of NL tenders to a gemeente/provincie via PDOK. Only works reliably when the buyer name literally contains a municipality name (e.g. \"Gemeente Amsterdam\"). Only charged (location-enrichment) on a real PDOK match. Also applies to NL buyers found via the TED source (the check is on the tender's country, not its source), so NL results from either source can be enriched.",
            "default": false
          },
          "deadlineWithinDays": {
            "title": "Deadline Within Days",
            "minimum": 1,
            "type": "integer",
            "description": "Optional: only keep tenders whose submission deadline is within this many days from today (using the already-computed daysUntilDeadline field). Tenders with no known deadline, or a deadline that has already passed, are skipped. Lowers the number of tender-result charges for runs that enable it."
          },
          "verrijkDocumenten": {
            "title": "Enrich TenderNed results with a document PDF link",
            "type": "boolean",
            "description": "Optional: makes an extra detail-call per TenderNed result to fetch the official announcement's PDF link (reuses the same detail-call as CPV enrichment if both are enabled). Only charged (document-enrichment) when the detail-call succeeds and returns a PDF link. TED results already include their PDF link for free, without this flag.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}