{
  "openapi": "3.0.1",
  "info": {
    "title": "France BOAMP Public Tenders & Contract Awards Scraper",
    "description": "Scrape French public procurement notices and contract awards from BOAMP: title, buyer name with email and phone, contract type, CPV codes and labels, value, winning supplier, publication and deadline dates. Filter by keyword, CPV, department, buyer and date. Export to JSON, CSV or Excel.",
    "version": "0.1",
    "x-build-id": "p7wd4oNU7Dx6kBdyi"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapers_lat~france-boamp-tenders-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapers_lat-france-boamp-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/scrapers_lat~france-boamp-tenders-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapers_lat-france-boamp-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/scrapers_lat~france-boamp-tenders-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapers_lat-france-boamp-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": "Search keywords",
            "uniqueItems": true,
            "type": "array",
            "description": "One or more keywords to search across every notice (title, object, buyer, description). Each keyword runs its own search, so you can pull several topics in one run. Leave empty to browse the latest notices.",
            "items": {
              "type": "string"
            }
          },
          "maxTenders": {
            "title": "Max Tenders To Scrape",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Maximum number of notices to collect across the whole run."
          },
          "cpvCode": {
            "title": "CPV code",
            "type": "string",
            "description": "Optional. Keep only notices whose CPV codes start with this value, for example '72' for IT services or '45' for construction work."
          },
          "departments": {
            "title": "French departments",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional. Restrict to one or more French department codes, for example '75' (Paris), '69' (Rhone), '13' (Bouches-du-Rhone).",
            "items": {
              "type": "string"
            }
          },
          "buyerName": {
            "title": "Buyer name",
            "type": "string",
            "description": "Optional. Keep only notices whose contracting authority (buyer) name contains this text, for example 'metropole' or 'hopital'."
          },
          "noticeCategory": {
            "title": "Notice type",
            "enum": [
              "Avis de marché",
              "Résultat de marché",
              "Rectificatif",
              "Avis d'intention de conclure",
              "Avis informatif",
              "Modification",
              "Annulation",
              "Périodique",
              "Qualification"
            ],
            "type": "string",
            "description": "Optional. Filter by notice type."
          },
          "contractType": {
            "title": "Contract type",
            "enum": [
              "Travaux",
              "Services",
              "Fournitures"
            ],
            "type": "string",
            "description": "Optional. Filter by the type of contract."
          },
          "procedureType": {
            "title": "Procedure type",
            "enum": [
              "OUVERT",
              "RESTREINT",
              "NEGOCIE",
              "PROCEDURE_ADAPTE",
              "DIALOGUE_COMPETITIF",
              "CONCOURS_OUVERT",
              "CONCOURS_RESTREINT",
              "PARTENARIAT_INNOVATION",
              "DSP",
              "AUTRE"
            ],
            "type": "string",
            "description": "Optional. Filter by procurement procedure."
          },
          "publishedFrom": {
            "title": "Published from (YYYY-MM-DD)",
            "type": "string",
            "description": "Optional. Only notices published on or after this date."
          },
          "publishedTo": {
            "title": "Published to (YYYY-MM-DD)",
            "type": "string",
            "description": "Optional. Only notices published on or before this date."
          },
          "deadlineFrom": {
            "title": "Deadline from (YYYY-MM-DD)",
            "type": "string",
            "description": "Optional. Only notices whose response deadline is on or after this date."
          },
          "deadlineTo": {
            "title": "Deadline to (YYYY-MM-DD)",
            "type": "string",
            "description": "Optional. Only notices whose response deadline is on or before this date."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "newest",
              "oldest",
              "deadline"
            ],
            "type": "string",
            "description": "Order the notices returned.",
            "default": "newest"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}