{
  "openapi": "3.0.1",
  "info": {
    "title": "SESAMi Singapore Tender & RFQ Scraper",
    "description": "Extract live tender and RFQ opportunities from the SESAMi e-procurement business-opportunity board: buyer company, reference number, document type, description, start and closing dates. Export data, run via API, schedule and monitor runs, or integrate with other tools.",
    "version": "0.0",
    "x-build-id": "6ZOzdopGoR6FUU33p"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/publicmoney~sesami-tender-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-publicmoney-sesami-tender-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/publicmoney~sesami-tender-scraper/runs": {
      "post": {
        "operationId": "runs-sync-publicmoney-sesami-tender-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/publicmoney~sesami-tender-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-publicmoney-sesami-tender-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": {
          "maxItems": {
            "title": "🔢 Max items",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of opportunities to scrape. 0 scrapes every opportunity currently published on the board. Examples: 1, 5, 25. Default is 0.",
            "default": 0
          },
          "fetchDetails": {
            "title": "⚙️ Fetch detail page",
            "type": "boolean",
            "description": "Open each opportunity's detail page for the full description, note to supplier and participation links. Slower, but returns more fields. Default is true.",
            "default": true
          },
          "documentTypes": {
            "title": "🏷️ Document type",
            "type": "array",
            "description": "Keep only these document types. Leave empty for all. Examples: 'Tender', 'RFQ'.",
            "items": {
              "type": "string",
              "enum": [
                "Tender",
                "RFQ"
              ],
              "enumTitles": [
                "Tender",
                "RFQ"
              ]
            },
            "default": []
          },
          "hubs": {
            "title": "🏷️ Buyer hub",
            "type": "array",
            "description": "Keep only opportunities published on these SESAMi buyer hubs. Leave empty for all. Examples: 'CAG', 'SWC', 'WRS'.",
            "items": {
              "type": "string",
              "enum": [
                "CAG",
                "SWC",
                "WRS",
                "PSK",
                "PCF",
                "JRBBTC"
              ],
              "enumTitles": [
                "CAG — Changi Airport Group",
                "SWC — SESAMi World Connect",
                "WRS — Mandai / Wildlife Reserves",
                "PSK — SESAMi SourceKey",
                "PCF — PAP Community Foundation",
                "JRBBTC — Jurong-Clementi-Bukit Batok Town Council"
              ]
            },
            "default": []
          },
          "buyerCompanies": {
            "title": "🔍 Buyer company contains",
            "type": "array",
            "description": "Keep only opportunities whose buyer company contains one of these strings (case-insensitive). Leave empty for all. Examples: 'CAG'.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keyword": {
            "title": "🔍 Keyword",
            "type": "string",
            "description": "Keep only opportunities whose description, reference number or buyer company contains this text (case-insensitive). Examples: 'installation', 'accessories'."
          },
          "closingDateFrom": {
            "title": "📅 Closing date from",
            "type": "string",
            "description": "ISO date, e.g. 2026-08-20. Keep only opportunities closing on or after this moment. Examples: '2026-08-19', '2026-08-20'."
          },
          "closingDateTo": {
            "title": "📅 Closing date to",
            "type": "string",
            "description": "ISO date, e.g. 2026-09-30. Keep only opportunities closing on or before this moment. Examples: '2026-08-19', '2026-08-20'."
          },
          "startingDateFrom": {
            "title": "📅 Starting date from",
            "type": "string",
            "description": "ISO date. Keep only opportunities published on or after this moment. Examples: '2026-08-19', '2026-08-20'."
          },
          "startingDateTo": {
            "title": "📅 Starting date to",
            "type": "string",
            "description": "ISO date. Keep only opportunities published on or before this moment. Examples: '2026-08-19', '2026-08-20'."
          },
          "schemaOrg": {
            "title": "🔗 Add schema.org block",
            "type": "boolean",
            "description": "Appends a `schemaOrg` object to the end of every record, mapping it to schema.org (Demand for tenders, MonetaryGrant for grants, Invoice for payments). The record's own fields are not changed. Off by default. Charged once per run, not per record.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}