{
  "openapi": "3.0.1",
  "info": {
    "title": "India Government Tenders Scraper - GeM Leads",
    "description": "Search public GeM tender listings and enrich bids from public PDFs. Reuse named watchlists for newly observed bids and evidenced deadline or field changes. Incomplete scans preserve baselines. CPPP extraction is not supported.",
    "version": "1.0",
    "x-build-id": "Hr05n5HSaLYWkWdfd"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fascinating_lentil~india-government-tenders-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fascinating_lentil-india-government-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/fascinating_lentil~india-government-tenders-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fascinating_lentil-india-government-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/fascinating_lentil~india-government-tenders-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fascinating_lentil-india-government-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",
        "required": [
          "source",
          "keywords"
        ],
        "properties": {
          "source": {
            "title": "Tender Source",
            "enum": [
              "gem",
              "cppp",
              "both"
            ],
            "type": "string",
            "description": "Use gem: the supported source. Legacy cppp returns no records; both can return only GeM records. CPPP extraction is not implemented, even without CAPTCHA. Run-start and applicable platform usage charges can still apply.",
            "default": "gem"
          },
          "keywords": {
            "title": "Search Keywords",
            "maxItems": 5,
            "type": "array",
            "description": "Tender search keywords. Up to 5 keywords are processed sequentially to keep runs cost-safe. Start with one keyword.",
            "default": [
              "laptop"
            ],
            "items": {
              "type": "string"
            }
          },
          "department": {
            "title": "Department / Ministry",
            "type": "string",
            "description": "Optional department or ministry text filter."
          },
          "state": {
            "title": "State",
            "type": "string",
            "description": "Optional state filter from enriched GeM detail PDFs when available."
          },
          "minValue": {
            "title": "Minimum Tender Value (INR)",
            "minimum": 0,
            "type": "number",
            "description": "Optional minimum tender value. Records with unknown value are excluded when this filter is used."
          },
          "maxValue": {
            "title": "Maximum Tender Value (INR)",
            "minimum": 0,
            "type": "number",
            "description": "Optional maximum tender value. Records with unknown value are excluded when this filter is used."
          },
          "dateFrom": {
            "title": "Date From",
            "type": "string",
            "description": "Optional published-date filter applied after GeM detail PDF enrichment."
          },
          "dateTo": {
            "title": "Date To",
            "type": "string",
            "description": "Optional published-date filter applied after GeM detail PDF enrichment."
          },
          "status": {
            "title": "Tender Status",
            "enum": [
              "active",
              "closed",
              "all"
            ],
            "type": "string",
            "description": "Tender status filter. Current limitation: all uses the same ongoing GeM listing as active; it does not combine active and closed tenders.",
            "default": "active"
          },
          "maxResults": {
            "title": "Max Results Per Keyword",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum tender records per keyword, up to 50. Start with 1 for a low-cost test.",
            "default": 1
          },
          "watchlistName": {
            "title": "Saved GeM Watchlist Name (Optional)",
            "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]{0,49}$",
            "minLength": 1,
            "maxLength": 50,
            "type": "string",
            "description": "Enable persistent GeM comparison on the Apify platform by reusing this name. Use 1–50 letters, numbers, underscores or hyphens, starting with a letter or number. The first safe result window initializes a baseline; later runs publish GEM-CHANGES for newly observed bids or evidenced material changes. Every clean tender still saves to the Dataset and charges each run, including unchanged bids. Omit for the ordinary scrape. CPPP-only watchlists are unsupported."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}