{
  "openapi": "3.0.1",
  "info": {
    "title": "UK Contracts Finder Scraper — Public Tenders & Awards",
    "description": "UK public tenders and contract awards from Contracts Finder: buyer, title, CPV codes, value, deadline, region and winning supplier. Filter by keyword, CPV code, region or value, and flag notices that are new since your last run. Official API, no login.",
    "version": "0.1",
    "x-build-id": "19ANAIsMaQUQY2W8i"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/northbell~uk-contracts-finder-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-northbell-uk-contracts-finder-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/northbell~uk-contracts-finder-scraper/runs": {
      "post": {
        "operationId": "runs-sync-northbell-uk-contracts-finder-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/northbell~uk-contracts-finder-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-northbell-uk-contracts-finder-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 (optional)",
            "type": "array",
            "description": "Words to find in the notice title and description. One per line; a notice that matches any word is returned. Contracts Finder treats every word separately (OR), so \"road maintenance\" finds notices with road or maintenance. Use short single words, e.g. software, cleaning, bridge. Leave empty to skip.",
            "items": {
              "type": "string"
            }
          },
          "cpvCodes": {
            "title": "CPV codes (optional)",
            "type": "array",
            "description": "Only notices for these CPV codes (the Common Procurement Vocabulary), one per line, e.g. 72000000 for IT services or 45000000 for construction work. A code covers its whole branch: 72000000 also matches 72262000. A shorter code such as 72 is padded to 72000000. Leave empty for all.",
            "items": {
              "type": "string"
            }
          },
          "regions": {
            "title": "Delivery regions (optional)",
            "type": "array",
            "description": "Only notices delivered in one of these regions, one per line: London, Wales, Scotland, Northern Ireland, North West, North East, Yorkshire and The Humber, East Midlands, West Midlands, East of England, South East, South West (also Isle of Man, Guernsey, Jersey). Notices that apply to the whole UK are included. Leave empty for all.",
            "items": {
              "type": "string"
            }
          },
          "valueFrom": {
            "title": "Value from (GBP, optional)",
            "minimum": 0,
            "type": "integer",
            "description": "Only notices whose stated value is at least this many pounds. Many notices state no value; those are left out when you set a value range."
          },
          "valueTo": {
            "title": "Value to (GBP, optional)",
            "minimum": 0,
            "type": "integer",
            "description": "Only notices whose stated value is at most this many pounds. Many notices state no value; those are left out when you set a value range."
          },
          "noticeKind": {
            "title": "Notice kind",
            "enum": [
              "all",
              "open-calls",
              "awards",
              "planning"
            ],
            "type": "string",
            "description": "Open opportunities are live contract notices. Award results name the winning supplier and the awarded value. \"All notices\" also returns closed and withdrawn notices. Procurements started since 24 February 2025 are published on Find a Tender, not here, so Contracts Finder now carries few open opportunities (8 on 16 October 2026) and mostly award results of older procurements.",
            "default": "all"
          },
          "publishedWithinDays": {
            "title": "Published or updated within (days)",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Only notices first published or last updated in the last N days (UK time, today included). Ignored when \"Published from\" is set. Run it on a daily schedule with 7 and \"Only new\" below for a cheap feed of fresh tenders.",
            "default": 7
          },
          "publishedFrom": {
            "title": "Published from (optional)",
            "type": "string",
            "description": "First day to include, written YYYY-MM-DD, e.g. 2026-09-01. When set, it replaces \"Published or updated within\". Contracts Finder works in whole days."
          },
          "publishedTo": {
            "title": "Published to (optional)",
            "type": "string",
            "description": "Last day to include, written YYYY-MM-DD. Leave empty for today. Contracts Finder works in whole days."
          },
          "maxNotices": {
            "title": "Maximum notices",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "How many notices to return, newest first. You pay per notice returned. With \"Only new\" the Actor reads past the notices you have already seen until it has found this many new ones. Narrow the search with the filters above rather than raising this.",
            "default": 200
          },
          "output": {
            "title": "What to return",
            "enum": [
              "all",
              "new"
            ],
            "type": "string",
            "description": "With \"Only new\", notices you already got in an earlier run of the same search are skipped and not charged. The first run returns everything, because there is nothing to compare with yet.",
            "default": "all"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}