{
  "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.2",
    "x-build-id": "oGW3csoq66j9gKA4E"
  },
  "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. Full PDF details can exceed a two-minute Run options timeout for larger searches. Increase the timeout or explicitly turn off PDF details for listing-only bulk results.",
            "default": 1
          },
          "includePdfDetails": {
            "title": "Include Bid PDF Details",
            "type": "boolean",
            "description": "Enabled by default to preserve the existing enriched output. Turn off for faster bulk listing collection: PDF-only fields remain unknown, and detail filters/saved watchlists cannot be used. PDF downloads have a 35-second/8 MiB limit, bounded further by the selected run deadline. Evaluated reverse auctions may expose an unsupported HTML schedule index; unavailable or failed enrichment preserves the listing and marks coverage incomplete.",
            "default": true
          },
          "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}