Catalog / Tenders & public contracts
TENDERS & PUBLIC CONTRACTS · INDIA
India State e-Tenders (GePNIC & CPPP)
Open government tenders from India's state e-procurement portals (UP, Kerala, Tamil Nadu, MP, Maharashtra and more) and CPPP: buyer, dates in India time, value, EMD, fees, category and…
About this data
Open government tenders from India's state e-procurement portals (UP, Kerala, Tamil Nadu, MP, Maharashtra and more) and CPPP: buyer, dates in India time, value, EMD, fees, category and document names. Filter by organisation, keyword, value and date.
From the actor’s Apify Store listing. The per-call endpoint may return a bounded subset; its own description is below.
Buy per call over x402
One endpoint at api.ssh.autos. Each call is one JSON POST, paid in USDC with no account or API key, and answered in the same HTTP response.
India State e-Tenders (GePNIC)
POST /v1/in/gepnic/tenders
Open government tenders from one Indian state e-procurement portal (GePNIC): buyer, dates, value and category.
Input
Send a JSON body to POST https://api.ssh.autos/v1/in/gepnic/tenders.
| Field | Type | Required | Notes |
|---|---|---|---|
keywords | array of strings | optional | up to 10 items |
maxItems | integer | optional | 1–10; default 5 |
portals | array of strings | optional | exactly 1 item; default ["maharashtra"] |
Returned fields
The answer is JSON: records, a list of up to 10, and summary, the run status and counts. Each record has these 39 fields; a field the source does not publish comes back null.
39 fields per record
| Field | Type | Notes |
|---|---|---|
tenderId | string | Tender ID on the portal, e.g. 2026_NNAMC_1203798_1. One row per tender. |
tenderReference | string | The buyer's own tender reference number, e.g. 33/CE/18/DA/2026. |
buyer | object | Buying public organisation. |
organisationChain | array of strings | Full organisation chain, top level first. |
country | string | Always IN. |
region | string | Indian state of the portal; null for the central portal (CPPP). |
portal | string | Portal key, e.g. uttarPradesh or central. |
portalName | string | Portal name, e.g. Uttar Pradesh. |
publishedAt | string | When the tender was published (ISO 8601, India time +05:30). |
deadline | string | Bid submission closing date and time (ISO 8601, +05:30). |
bidOpeningAt | string | Tender opening date and time (ISO 8601, +05:30). |
procurementMethod | string | Tender type, e.g. Open Tender, Limited, Global Tenders. Details only. |
tenderCategory | string | Works, Goods or Services. Details only. |
formOfContract | string | Form of contract, e.g. Item Rate, Percentage, Lump-sum. Details only. |
primaryProductCategory | string | The portal's product category, e.g. Civil Works, Electrical Works, Consultancy. Details only. |
productSubCategory | string | The portal's product sub-category, when given. Details only. |
estimatedBidValue | number | Published tender value in rupees; null when the buyer did not publish one. Details only. |
emdAmount | number | Earnest money deposit (EMD) in rupees. Details only. |
tenderFee | number | Tender document fee in rupees. Details only. |
processingFee | number | Processing fee in rupees, when charged. Details only. |
bidSubmissionStartAt | string | Bid submission start (ISO 8601, +05:30). Details only. |
documentDownloadEndAt | string | Last date to download the tender documents (ISO 8601, +05:30). Details only. |
offerValidityDays | integer | Bid validity in days. Details only. |
periodOfWorkDays | integer | Period of work in days. Details only. |
location | string | Work location as given by the buyer. Details only. |
pincode | string | 6-digit PIN code of the work location. Details only. |
descriptionExcerpt | string | Work description as published, up to 600 characters; null when empty. Details only. |
documents | array of objects | Tender documents listed on the tender page (names, type and size only; downloading them needs the portal's captcha). Details only, otherwise empty. |
corrigendumCount | integer | Number of corrigenda (amendments) listed on the tender page. Details only. |
currency | string | Always INR. |
status | string | open while the bid submission deadline is in the future. one of open, closed |
isOpenForBids | boolean | True while bids can still be submitted. |
daysUntilDeadline | integer | Whole days from today (India time) to the deadline; 0 when it closes today. |
url | string | The portal's official Tenders by Organisation page, where the tender is listed under its organisation; search the tender ID there. |
detailsParsed | boolean | True when the tender page was read and its fields filled. |
detailsError | string | Why the tender page could not be read for this row; null otherwise. |
sourceQuery | string | Summary of the search that found the row. |
source | string | Always GePNIC (NIC e-procurement). |
scrapedAt | string | When the row was saved (ISO 8601, UTC). |
Example call
npx agentcash@latest fetch https://api.ssh.autos/v1/in/gepnic/tenders -m POST -b '{"maxItems": 3}'
The example values come from the API spec or the actor’s own sample input. Running it is a paid call.
What is and isn’t charged
You pay the call price for
- An answer, including a definitive “not found” or an empty result.
- Confirmed no matches returns records: [] (charged: it is an answer).
Free
- Invalid input (422), busy (503), source failure (502), timeout (504) and calls whose client hung up are never charged.
- Invalid input and source failures are not charged.
Prefer a subscription? Run it on Apify
This data source is a public actor on the Apify Store: India State e-Tenders Scraper (GePNIC & CPPP). Run it with your Apify account and plan for larger, scheduled or exported runs; it may offer more input options than the per-call endpoint.
How x402 payment works
- Your client sends the request. The API answers
402 Payment Requiredwith the price and where to pay. - The client pays from its own wallet: USDC on Base or Solana over x402, or over MPP on Tempo. No account, sign-up or API key.
- The client retries with the payment attached and gets the JSON answer in the same call. You are only charged for answers.
The AgentCash CLI in the example does all three steps for you and pays from your AgentCash wallet. Any x402 or MPP client works the same way.
Machine-readable: openapi.json · llms.txt