{
  "openapi": "3.0.1",
  "info": {
    "title": "India State e-Tenders Scraper - GePNIC Portals & CPPP",
    "description": "Scrape open Indian government tenders from 10 state e-procurement portals (Maharashtra, UP, Kerala, Tamil Nadu, MP and more) and CPPP. One row per tender with buyer, deadline in India time, value, EMD, fees, category, location and document names. Daily new-only feed; JSON, CSV or Excel.",
    "version": "0.1",
    "x-build-id": "6WxZpwtQ1nSdkvhtm"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/automatic~gepnic-tenders-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-automatic-gepnic-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~gepnic-tenders-scraper/runs": {
      "post": {
        "operationId": "runs-sync-automatic-gepnic-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~gepnic-tenders-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-automatic-gepnic-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": {
          "portals": {
            "title": "Portals",
            "type": "array",
            "description": "Which portals to read, one after another: ten state portals and the central portal (CPPP).",
            "items": {
              "type": "string",
              "enum": [
                "uttarPradesh",
                "kerala",
                "tamilNadu",
                "madhyaPradesh",
                "maharashtra",
                "punjab",
                "westBengal",
                "central",
                "odisha",
                "haryana",
                "rajasthan"
              ],
              "enumTitles": [
                "Uttar Pradesh",
                "Kerala",
                "Tamil Nadu",
                "Madhya Pradesh",
                "Maharashtra",
                "Punjab",
                "West Bengal",
                "Central Public Procurement Portal (CPPP)",
                "Odisha",
                "Haryana",
                "Rajasthan"
              ]
            },
            "default": [
              "uttarPradesh"
            ]
          },
          "organisations": {
            "title": "Organisations",
            "type": "array",
            "description": "Buyer organisations, any part of the name, case ignored, e.g. 'municipal corporation' or 'public works'. Empty: every organisation. Up to 30.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Words searched in the tender title, e.g. 'road' or 'solar'. Several keywords return tenders matching any of them. Up to 20.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "tenderCategories": {
            "title": "Tender categories",
            "type": "array",
            "description": "Only works, goods or services tenders. Slower: each tender is checked on its own page (about 3 seconds each), and a run checks at most 25 tenders per maxItems (500 at most), so a rare category can return few tenders.",
            "items": {
              "type": "string",
              "enum": [
                "works",
                "goods",
                "services"
              ],
              "enumTitles": [
                "Works",
                "Goods",
                "Services"
              ]
            },
            "default": []
          },
          "minValue": {
            "title": "Minimum tender value (INR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only tenders with a published value of at least this many rupees. Tenders without a published value are left out. Slower: each tender is checked on its own page (about 3 seconds each), and a run checks at most 25 tenders per maxItems (500 at most), so a high value can return few tenders."
          },
          "publishedSince": {
            "title": "Published since",
            "type": "string",
            "description": "Only tenders published on or after this date (India time), e.g. 2026-11-01, or within a period such as 2 days."
          },
          "closingAfter": {
            "title": "Closing on or after",
            "type": "string",
            "description": "Only tenders whose bid deadline is on or after this date, e.g. 2026-11-15, or a period ahead such as 7 days."
          },
          "maxItems": {
            "title": "Max tenders",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum tenders returned, up to 5,000.",
            "default": 50
          },
          "includeDetails": {
            "title": "Include details",
            "type": "boolean",
            "description": "Add value, EMD, fees, category, tender type, location, description and document names from each tender page (about 3 seconds 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}