{
  "openapi": "3.0.1",
  "info": {
    "title": "Open Tender and RFP Finder",
    "description": "Find open public tenders and RFPs by keyword, CPV code, and country. One row per notice with buyer, deadline, estimated value, codes, and link, from UK Contracts Finder, UK Find a Tender, EU TED, and CanadaBuys. No API key. Only new notices on a schedule. Clay ready.",
    "version": "0.1",
    "x-build-id": "0vfpY8Bbh3YH34AOa"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/mambalabs~open-tender-rfp-finder/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-mambalabs-open-tender-rfp-finder",
        "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/mambalabs~open-tender-rfp-finder/runs": {
      "post": {
        "operationId": "runs-sync-mambalabs-open-tender-rfp-finder",
        "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/mambalabs~open-tender-rfp-finder/run-sync": {
      "post": {
        "operationId": "run-sync-mambalabs-open-tender-rfp-finder",
        "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 or phrases to find in the notice title or description, any case, one per line. A notice is returned when it matches any of them. EU TED matches them over the full notice text in every language. Empty: every open notice in the window. Up to 25.",
            "items": {
              "type": "string"
            }
          },
          "exclude_keywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Drop a notice whose title or description contains any of these, for example cleaning or catering.",
            "items": {
              "type": "string"
            }
          },
          "cpv_prefixes": {
            "title": "CPV codes",
            "type": "array",
            "description": "Keep only notices with a CPV code (the EU and UK procurement category code) that starts with one of these, for example 72 (IT services) or 48000000 (software packages). CanadaBuys publishes UNSPSC codes, not CPV, so a CPV filter leaves CanadaBuys out.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Buyer countries",
            "type": "array",
            "description": "Two letter country codes of the buying body, for example GB, DE, FR, CA. A portal that publishes none of these countries is not searched. Empty: every country.",
            "items": {
              "type": "string"
            }
          },
          "portals": {
            "title": "Portals",
            "type": "array",
            "description": "Which public notice portals to read. Empty: all four, plus US SAM.gov when you give a sam_gov_api_key.",
            "items": {
              "type": "string",
              "enum": [
                "uk_contracts_finder",
                "uk_find_a_tender",
                "eu_ted",
                "canada_buys",
                "us_sam_gov"
              ],
              "enumTitles": [
                "UK Contracts Finder",
                "UK Find a Tender",
                "EU TED (Tenders Electronic Daily)",
                "CanadaBuys",
                "US SAM.gov (needs your free API key)"
              ]
            }
          },
          "published_within_days": {
            "title": "Published within (days)",
            "type": "string",
            "description": "Only notices published in the last this many days, today included. A whole number; text such as \"10\" is accepted.",
            "default": "14"
          },
          "only_open": {
            "title": "Only open notices",
            "type": "string",
            "description": "Drop notices whose response deadline has passed. A notice with no published deadline is kept. true or false; yes, no, 1, and 0 are accepted.",
            "default": "true"
          },
          "min_value": {
            "title": "Minimum estimated value",
            "type": "string",
            "description": "Drop notices with an estimated value below this number, in the notice's own currency. A notice that publishes no value is kept."
          },
          "max_notices": {
            "title": "Max notices",
            "type": "string",
            "description": "Notice rows per run, newest first. Each notice row is one notice-row charge. A whole number; text such as \"10\" is accepted.",
            "default": "100"
          },
          "only_new": {
            "title": "Only new results",
            "type": "string",
            "description": "For scheduled runs. Skip notices an earlier run with the same state key already returned. Skipped notices are free. The seen list is kept in a key-value store in your account. true or false; yes, no, 1, and 0 are accepted.",
            "default": "false"
          },
          "sam_gov_api_key": {
            "title": "SAM.gov API key (optional)",
            "type": "string",
            "description": "Your own free SAM.gov public API key, from your sam.gov account (Account Details, Public API Key). With it, US federal contract opportunities are searched. Without it, SAM.gov is skipped and the run says so."
          },
          "state_key": {
            "title": "State key",
            "type": "string",
            "description": "Names the seen list for Only new results. Use one key per schedule. Empty: a key made from the input."
          },
          "max_charge_usd": {
            "title": "Max charge per run (USD)",
            "type": "string",
            "description": "Stop before a row would push this run past this amount. Empty: no limit beyond the one you set in Apify."
          },
          "source_tag": {
            "title": "Source tag",
            "type": "string",
            "description": "Internal attribution tag for published tasks. Leave empty."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}