{
  "openapi": "3.0.1",
  "info": {
    "title": "Turkey EKAP Tenders Scraper | Turkish Public Tenders",
    "description": "Search Turkish public tenders on EKAP by keyword, province, tender type, status or IKN. One row per tender with procuring entity, tender date, status and documents; add details for announcement text, OKAS codes, lots, estimated value and contract result. Daily new-only feed.",
    "version": "0.1",
    "x-build-id": "RnzdjmJOPVZAW5Xh4"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/automatic~turkey-ekap-tenders-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-automatic-turkey-ekap-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/automatic~turkey-ekap-tenders-scraper/runs": {
      "post": {
        "operationId": "runs-sync-automatic-turkey-ekap-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/automatic~turkey-ekap-tenders-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-automatic-turkey-ekap-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": {
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Words to look for, as typed on EKAP. Turkish characters are fine. Leave empty to search without a keyword; the other filters still apply, so the default lists open tenders with the nearest tender date first.",
            "default": ""
          },
          "keywordScope": {
            "title": "Where to look for the keyword",
            "enum": [
              "title",
              "announcement",
              "specification",
              "all"
            ],
            "type": "string",
            "description": "Which part of a tender the keyword is searched in. EKAP's own search page offers the same choice.",
            "default": "title"
          },
          "ikn": {
            "title": "Tender number (IKN)",
            "type": "string",
            "description": "One exact tender registration number, for example 2026/271215. Overrides nothing else; leave empty to search."
          },
          "province": {
            "title": "Province",
            "type": "string",
            "description": "Turkish province name, for example Ankara or Istanbul, or an EKAP province id."
          },
          "tenderType": {
            "title": "Tender type",
            "enum": [
              "all",
              "goods",
              "works",
              "service",
              "consultancy"
            ],
            "type": "string",
            "description": "Goods (Mal), works (Yapım), service (Hizmet) or consultancy (Danışmanlık).",
            "default": "all"
          },
          "status": {
            "title": "Tender status",
            "uniqueItems": true,
            "type": "array",
            "description": "Where the tender stands on EKAP. The default follows open tenders: preliminary announcements and tenders open for participation. Select All statuses (or leave the list empty) to search every status.",
            "items": {
              "type": "string",
              "enum": [
                "all",
                "preliminaryAnnouncement",
                "announced",
                "closed",
                "evaluated",
                "resultPublished",
                "contractSigned",
                "canceled",
                "canceledBeforeAnnouncement",
                "approvalNotGiven"
              ],
              "enumTitles": [
                "All statuses",
                "Preliminary announcement published",
                "Tender announcement published (open for participation)",
                "Tender closed, offers evaluated",
                "Offer evaluation completed",
                "Result announcement published",
                "Contract signed",
                "Tender canceled",
                "Canceled before the announcement",
                "Approval not given"
              ]
            },
            "default": [
              "preliminaryAnnouncement",
              "announced"
            ]
          },
          "announcementFrom": {
            "title": "Announcement date from",
            "type": "string",
            "description": "Earliest announcement date, YYYY-MM-DD."
          },
          "announcementTo": {
            "title": "Announcement date to",
            "type": "string",
            "description": "Latest announcement date, YYYY-MM-DD."
          },
          "tenderDateFrom": {
            "title": "Tender date from",
            "type": "string",
            "description": "Earliest tender (bid opening) date, YYYY-MM-DD. When ordered by tender date, searches start at the run start (Turkey time) by default so the nearest tenders still ahead come first; set this to look earlier."
          },
          "tenderDateTo": {
            "title": "Tender date to",
            "type": "string",
            "description": "Latest tender (bid opening) date, YYYY-MM-DD."
          },
          "sort": {
            "title": "Order",
            "enum": [
              "tenderDateAsc",
              "newestAnnouncement",
              "tenderDateDesc"
            ],
            "type": "string",
            "description": "Nearest tender date first (the default), newest announcement first, or tender date latest first.",
            "default": "tenderDateAsc"
          },
          "maxItems": {
            "title": "Maximum tenders",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "How many tenders to save, from 1 to 5000. With tender details on, the run stops at 2000 tenders.",
            "default": 50
          },
          "includeDetails": {
            "title": "Include tender details",
            "type": "boolean",
            "description": "Open each tender for the announcement text, work location, OKAS codes, lots, estimated value and contract result. Slower: one extra request per tender.",
            "default": false
          },
          "onlyNewSinceLastRun": {
            "title": "Only new or changed since the last run",
            "type": "boolean",
            "description": "Return only tenders this search has not delivered before, or whose title, deadline, status, value or documents changed since the last run. Keep the same input and schedule to get a clean daily feed.",
            "default": false
          },
          "stateKey": {
            "title": "Feed state key",
            "type": "string",
            "description": "Optional name for the saved feed state. Leave empty to derive it from the input, so different searches keep separate histories. Set a new name to start the feed over.",
            "default": ""
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}