eprocurement.gov APIeprocurement.gov ↗
Access active tenders, closing-today bids, global tenders, high-value contracts, and procurement stats from India's Central Public Procurement Portal via API.
curl -X GET 'https://api.parse.bot/scraper/0f97d39b-53f6-419f-8445-c782f9439d13/get_active_tenders?page=0' \ -H 'X-API-Key: $PARSE_API_KEY'
Fetch paginated list of active tenders from the Central Public Procurement Portal. Returns up to 10 tenders per page sorted by most recently published.
| Param | Type | Description |
|---|---|---|
| page | integer | Zero-based page number for pagination. |
{
"type": "object",
"fields": {
"page": "integer current page number",
"total": "integer total number of active tenders",
"tenders": "array of tender objects with slno, title, organisation_name, e_published_date, bid_submission_closing_date, tender_opening_date, detail_url, title_refno_tender_id, corrigendum"
},
"sample": {
"data": {
"page": 0,
"total": 27301,
"tenders": [
{
"slno": "1.",
"title": "06/EE/P-DIVN/2026-27",
"detail_url": "https://eprocure.gov.in/cppp/tendersfullview/MTM3MjUwNTY=...",
"corrigendum": "--",
"e_published_date": "07-May-2026 02:47 PM",
"organisation_name": "Central Public Works Department (CPWD)",
"tender_opening_date": "14-May-2026 03:30 PM",
"title_refno_tender_id": "06/EE/P-DIVN/2026-27/06/EE/P-DIVN/2026-27/151795",
"bid_submission_closing_date": "14-May-2026 03:00 PM"
}
]
},
"status": "success"
}
}About the eprocurement.gov API
The eProcurement.gov API provides structured access to India's Central Public Procurement Portal across 8 endpoints, covering active tenders, tenders closing today, global and high-value contracts, cancelled tenders, organisation listings, and live dashboard statistics. The get_tender_detail endpoint fetches parsed key-value data from individual tender pages, and get_homepage_stats returns real-time counts split by central and state government categories.
Tender Listings and Pagination
Five endpoints — get_active_tenders, get_tenders_closing_today, get_global_tenders, get_high_value_tenders, and get_cancelled_tenders — return paginated tender lists with up to 10 results per page. All accept an optional zero-based page integer. Each response includes a total count and a page field alongside the tenders array. Tender objects carry fields including slno, title, organisation_name or state_name (depending on the endpoint), e_published_date, bid_submission_closing_date, tender_opening_date, and a detail_url for linking to the full record. The get_cancelled_tenders endpoint may return an empty tenders array when no tenders are currently marked cancelled on the portal.
Tender Detail and CAPTCHA Behavior
get_tender_detail accepts a required url parameter — the full detail URL from the detail_url field returned by any listing endpoint. When the portal's detail page is not gated, the response contains parsed key-value pairs from the page's data tables. When a CAPTCHA is present, the response returns status: "CAPTCHA_GATED" and a message field explaining the gate. Callers should handle both response shapes in their code, as CAPTCHA gating is common on this portal.
Organisations and Dashboard Statistics
get_organisations returns a flat array of objects each containing an organisationname field, covering all procuring bodies registered on the portal. No pagination parameter is accepted. get_homepage_stats returns six integer fields — active_tenders_central, active_tenders_state, opening_today_central, opening_today_state, closing_today_central, and closing_today_state — reflecting the live counts shown on the portal dashboard at time of request.
- Monitor daily bid deadlines by polling
get_tenders_closing_todayand alerting procurement teams before cutoff. - Aggregate
active_tenders_centralandactive_tenders_statefromget_homepage_statsto track overall procurement volume over time. - Identify cross-border contracting opportunities by paginating through
get_global_tendersresults. - Screen large contracts by iterating
get_high_value_tendersand extractingorganisation_nameandbid_submission_closing_date. - Build a searchable organisation directory from the
get_organisationsresponse for vendor qualification workflows. - Detect cancelled opportunities by periodically calling
get_cancelled_tendersand reconciling against previously active tender records. - Fetch full tender specifications via
get_tender_detailusingdetail_urlvalues from any listing endpoint, with fallback logic for CAPTCHA-gated responses.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does eprocurement.gov have an official developer API?+
What does `get_tenders_closing_today` return, and how is it different from `get_active_tenders`?+
get_tenders_closing_today filters specifically to tenders whose bid_submission_closing_date falls on the current date, and returns state_name in the tender objects rather than organisation_name. get_active_tenders covers all currently open tenders regardless of closing date and includes organisation_name. Both are paginated with the same zero-based page parameter.How should I handle the CAPTCHA gate in `get_tender_detail`?+
status: "CAPTCHA_GATED" and a message field instead of parsed table data. Your integration should check for the presence of status in the response before attempting to read detail fields. CAPTCHA gating is common on this portal, so treating both response shapes as expected cases is necessary for reliable operation.Can I filter tenders by category, keyword, or state within the listing endpoints?+
page parameter — there are no built-in filters for keyword, tender category, issuing state, or ministry. You can fork this API on Parse and revise it to add filtered search endpoints.