Discover/eProcurement API
live

eProcurement 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.

Endpoint health
verified 2d ago
get_tenders_closing_today
get_tender_detail
get_organisations
get_homepage_stats
get_global_tenders
8/8 passing latest checkself-healing
Endpoints
8
Updated
21d ago

What is the eProcurement 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.

Try it
Zero-based page number for pagination.
api.parse.bot/scraper/0f97d39b-53f6-419f-8445-c782f9439d13/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
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'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace eprocurement-gov-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

from parse_apis.india_eprocurement_portal_cppp_api import CPPP, Tender, Organisation, PortalStats, TenderDetail

cppp = CPPP()

# Get portal dashboard statistics
stats = cppp.portalstatses.fetch()
print(stats.active_tenders_central, stats.active_tenders_state, stats.closing_today_central)

# List active tenders (auto-paginates)
for tender in cppp.tenders.list_active(limit=5):
    print(tender.title, tender.organisation_name, tender.e_published_date, tender.detail_url)

# List high-value tenders
for tender in cppp.tenders.list_high_value(limit=3):
    print(tender.title, tender.bid_submission_closing_date, tender.corrigendum)

# List organisations
for org in cppp.organisations.list(limit=10):
    print(org.organisationname)

# Fetch a specific tender detail
detail = cppp.tenderdetails.get(url="https://eprocure.gov.in/cppp/tendersfullview/example")
print(detail.url)
All endpoints · 8 totalmissing one? ·

Fetch paginated list of active tenders from the Central Public Procurement Portal. Returns up to 10 tenders per page sorted by most recently published. Each tender includes title, organisation, key dates, and a detail URL.

Input
ParamTypeDescription
pageintegerZero-based page number for pagination.
Response
{
  "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",
    "total_pages": "integer total number of pages available"
  },
  "sample": {
    "data": {
      "page": 0,
      "total": 35048,
      "tenders": [
        {
          "slno": "1.",
          "title": "74/EE/Mumbai-IV/2026-27",
          "detail_url": "https://eprocure.gov.in/cppp/tendersfullview/MTM4MzQ5NjM=A13h1...",
          "corrigendum": "--",
          "e_published_date": "10-Jun-2026 09:32 PM",
          "organisation_name": "Central Public Works Department (CPWD)",
          "tender_opening_date": "18-Jun-2026 03:30 PM",
          "title_refno_tender_id": "74/EE/Mumbai-IV/2026-27/74/EE/Mumbai-IV/2026-27/157786",
          "bid_submission_closing_date": "18-Jun-2026 03:00 PM"
        }
      ],
      "total_pages": 3505
    },
    "status": "success"
  }
}

About the eProcurement API

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.

Reliability & maintenanceVerified

The eProcurement API is a managed, monitored endpoint for eprocurement.gov — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when eprocurement.gov changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official eprocurement.gov API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
2d ago
Latest check
8/8 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Monitor daily bid deadlines by polling get_tenders_closing_today and alerting procurement teams before cutoff.
  • Aggregate active_tenders_central and active_tenders_state from get_homepage_stats to track overall procurement volume over time.
  • Identify cross-border contracting opportunities by paginating through get_global_tenders results.
  • Screen large contracts by iterating get_high_value_tenders and extracting organisation_name and bid_submission_closing_date.
  • Build a searchable organisation directory from the get_organisations response for vendor qualification workflows.
  • Detect cancelled opportunities by periodically calling get_cancelled_tenders and reconciling against previously active tender records.
  • Fetch full tender specifications via get_tender_detail using detail_url values from any listing endpoint, with fallback logic for CAPTCHA-gated responses.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 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.

Frequently asked questions
Does eprocurement.gov have an official developer API?+
No. The Central Public Procurement Portal (eprocurement.gov.in) does not publish a documented public developer API. This Parse API provides structured programmatic access to the same public procurement data.
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`?+
When a tender detail page is CAPTCHA-gated, the response includes 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?+
The listing endpoints currently accept only an optional 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.
Does the API expose tender documents, corrigenda, or award notices?+
Not currently. The API covers tender metadata from listing pages and key-value pairs from detail pages when not CAPTCHA-gated, but does not retrieve attached documents, amendment notices, or contract award data. You can fork this API on Parse and revise it to add endpoints targeting those sections.
Page content last updated . Spec covers 8 endpoints from eprocurement.gov.
Related APIs in Government PublicSee all →
tenders.gov.in API
Search and monitor current government tenders from India's Central Public Procurement Portal and GePNIC systems, filtering by organizations and accessing detailed tender information. Stay updated on the latest procurement opportunities and bids from Indian government agencies in one centralized location.
eproc2.bihar.gov.in API
Access live tender listings from the Bihar Government e-Procurement portal to search and filter government contracts by department, status, and keywords. Get detailed tender information including specifications and deadlines, plus browse the complete directory of participating government departments.
mahatenders.gov.in API
Access Maharashtra government tenders from mahatenders.gov.in, browsing them by closing date or by organization with full tender details and pagination support. Find and review procurement opportunities across different government departments in one place.
tenders.gov.uk API
Search and access UK government public procurement notices, tenders, and contract opportunities in real-time, with the ability to retrieve detailed notice information and browse standardized classification codes. Get comprehensive procurement data in structured formats to analyze tender patterns and find relevant contracting opportunities.
evergabe-online.de API
Search and retrieve public tender opportunities from Germany's e-Vergabe platform by keywords, contract types, CPV codes, and publication dates. Access detailed tender information and discover the latest procurement opportunities across construction and other sectors.
bdtender.com API
Search and browse tender listings from Bangladesh's largest tender portal, discovering opportunities by category, organization, and location while accessing real-time tender data and site statistics. Get detailed information on individual tenders, view live postings, and see what was published today to stay updated on the latest bidding opportunities.
tenders.etimad.sa API
Browse and search all public Saudi government tenders from the Etimad platform with detailed information including tender specifications and awarding results. Stay updated on procurement opportunities by accessing tender details and award outcomes in one centralized location.
zppa.org.zm API
Search and browse open tenders in Zambia's public procurement system, view detailed tender information and procurement plans, and stay updated with the latest procurement news from the Zambia Public Procurement Authority. Get real-time access to current opportunities and historical procurement data to find relevant government contracts and bidding information.