Discover/Gov API
live

Gov APIeprocure.gov.in

Access live central government tender notices from India's eProcurement portal. Filter by keyword, list type, and page. Returns tender IDs, orgs, dates, and more.

Endpoint health
verified 3h ago
search_tenders
1/1 passing latest checkself-healing
Endpoints
1
Updated
3h ago

What is the Gov API?

The eprocure.gov.in API exposes central government tender notices from India's Central Public Procurement Portal through a single endpoint, search_tenders, returning up to 15 fields per notice including tender ID, title, inviting organisation, reference number, and bid-closing dates. It covers five distinct listing types — active, high-value, global, closing-today, and corrigendum — and supports keyword filtering and paginated traversal across the full live dataset.

This call costs10 credits / call— charged only on success
Try it
1-based listing page to start scanning from (10 tenders per portal page). Pass the previous response's next_page to continue.
Case-insensitive substring matched locally against title, reference number, tender id and organisation name of the scanned rows (e.g. one shape: 'medical'). Omitted or blank = no filtering.
Which central-government listing to read.
Maximum number of consecutive listing pages scanned in this call; values above 20 are clamped to 20.
api.parse.bot/scraper/29570b37-410d-4b85-a51b-07d0c266c6d9/<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/29570b37-410d-4b85-a51b-07d0c266c6d9/search_tenders?list_type=active' \
  -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 eprocure-gov-in-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.

"""Walkthrough: browse active tenders on India's Central Public Procurement Portal."""
from parse_apis.eprocure_gov_in_api import Eprocure, ListType, InputFormatInvalid

client = Eprocure()

# List active tenders (newest first), capped at 5 items.
for tender in client.tenders.search(list_type=ListType.ACTIVE, limit=5):
    print(tender.title, "|", tender.organisation, "|", tender.published_at)

# Keyword-filtered search across corrigendum tenders — grab the first match.
hit = client.tenders.search(
    keyword="medical",
    list_type=ListType.CORRIGENDUM,
    limit=1,
).first()

if hit is not None:
    print(hit.tender_id, hit.reference_no)
    print("Bid closes:", hit.bid_submission_closing_at)
    print("Has corrigendum:", hit.has_corrigendum)

# Browse high-value tenders, scanning at most 2 portal pages.
try:
    for tender in client.tenders.search(
        list_type=ListType.HIGH_VALUE,
        max_pages=2,
        limit=10,
    ):
        print(tender.tender_id, tender.title[:80])
except InputFormatInvalid as e:
    # Raised when the portal rejects the supplied list_type or page value.
    print("Invalid input:", e.message)

print("exercised: tenders.search (active / corrigendum / high_value)")
All endpoints · 1 totalmissing one? ·

Returns tender notices from one of the portal's central-government tender listings (newest first as the portal orders them), optionally filtered by a keyword. Each row is one tender notice with its tender_id, title, reference number, inviting organisation, publish / bid-closing / opening timestamps (India Standard Time, 'YYYY-MM-DD HH:MM') and whether a corrigendum is attached. The portal serves 10 rows per listing page; one call reads the listing pages starting at `page` and scans at most `max_pages` consecutive pages (each page is one round trip), so a call costs between 1 and max_pages requests. The keyword filter is applied by this API to the scanned rows only (case-insensitive substring match on title, reference number, tender id and organisation name), not by the portal, so a filtered call may legitimately return an empty `tenders` array while `next_page` still advances; continue with `page = next_page` to scan further. `next_page` is null once the listing has been exhausted. `total_tenders` is the portal's own live count for the whole listing, independent of any keyword. Important invariant: the portal's own paging is not stable for notices that share the same publish timestamp, so adjacent portal pages can repeat or skip such notices; rows are de-duplicated by tender_id within one call, but the same tender may still appear again in a later call and a small number of notices may be missed. Detailed tender views (documents, EMD, tender value) are not available through this API because the portal gates them behind an image verification.

Input
ParamTypeDescription
pageinteger1-based listing page to start scanning from (10 tenders per portal page). Pass the previous response's next_page to continue.
keywordstringCase-insensitive substring matched locally against title, reference number, tender id and organisation name of the scanned rows (e.g. one shape: 'medical'). Omitted or blank = no filtering.
list_typestringWhich central-government listing to read.
max_pagesintegerMaximum number of consecutive listing pages scanned in this call; values above 20 are clamped to 20.
Response
{
  "type": "object",
  "fields": {
    "page": "first listing page scanned",
    "keyword": "keyword applied locally, or null when none",
    "tenders": "array of distinct tender notices (de-duplicated by tender_id) matching the keyword, or all scanned rows when no keyword",
    "list_type": "listing that was read",
    "next_page": "listing page to pass as `page` to continue, or null when the listing is exhausted",
    "pages_scanned": "number of listing pages read in this call",
    "total_tenders": "portal's live count of tenders in the whole listing (unfiltered); may be null if the portal omits it",
    "tenders[].title": "tender title",
    "tenders[].tender_id": "portal tender identifier, e.g. shape 2026_ORG_123456_1",
    "tenders[].organisation": "tender inviting organisation name",
    "tenders[].published_at": "e-publish timestamp, IST, 'YYYY-MM-DD HH:MM'",
    "tenders[].reference_no": "organisation's tender reference number",
    "tenders[].has_corrigendum": "true when the portal shows a corrigendum attached to the notice",
    "tenders[].tender_opening_at": "tender opening timestamp, IST",
    "tenders[].bid_submission_closing_at": "bid submission closing timestamp, IST"
  },
  "sample": {
    "data": {
      "page": 1,
      "keyword": "medical",
      "tenders": [
        {
          "title": "Providing additional feeder for backup supply to NINE Auditorium, PGIMER, Chandigarh",
          "tender_id": "2026_PGIME_926037_1",
          "organisation": "Postgraduate Institute of Medical and Education and Research Chandigarh",
          "published_at": "2026-09-14 18:00",
          "reference_no": "PGI/Engg./Elect./2026-27/29",
          "has_corrigendum": true,
          "tender_opening_at": "2026-09-23 11:00",
          "bid_submission_closing_at": "2026-09-22 11:00"
        }
      ],
      "list_type": "corrigendum",
      "next_page": 6,
      "pages_scanned": 5,
      "total_tenders": 2602
    },
    "status": "success"
  }
}

About the Gov API

What the API Returns

The search_tenders endpoint reads tender listings from India's Central Public Procurement Portal (eprocure.gov.in) and returns structured records for each tender notice. Each item in the tenders array includes tender_id (in the canonical portal shape, e.g. 2026_ORG_123456_1), title, organisation (the inviting authority), reference number, and key dates such as publish date and bid-closing date. The response also surfaces total_tenders, which reflects the portal's live unfiltered count for the chosen listing — useful for estimating dataset size before paginating.

List Types and Filtering

The list_type parameter selects which central-government listing to read. Accepted values map to the portal's own groupings: active tenders, high-value tenders, global tenders, tenders closing today, and corrigendum notices. The keyword parameter applies a case-insensitive substring match across title, reference number, tender_id, and organisation — the filtering happens against the scanned pages, not a search index, so results reflect what is visible in the listing at call time. Setting max_pages (capped at 20) controls how many consecutive listing pages (10 tenders each) are read in a single call.

Pagination

The response includes page (the first listing page scanned), pages_scanned (how many were read in this call), and next_page — the value to pass as page in the next request to continue where the previous call left off. When next_page is null, the listing is exhausted. De-duplication by tender_id is applied within each response, so repeated entries from the portal are collapsed automatically.

Coverage Scope

This API covers central government listings only, as published on the portal's main tender board. State government portals, department-specific procurement systems, and tender detail pages (bid documents, corrigendum attachments, evaluation results) are outside the current scope.

Reliability & maintenanceVerified

The Gov API is a managed, monitored endpoint for eprocure.gov.in — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when eprocure.gov.in 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 eprocure.gov.in 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
3h ago
Latest check
1/1 endpoint 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 tenders closing today by polling the closing_today list type and filtering by organisation name
  • Build a procurement alert system that scans the active listing for new tenders matching a product or service keyword
  • Track high-value central government contracts using the high_value list type and storing tender_id records over time
  • Aggregate corrigendum notices to flag amendments to previously published tenders your team is tracking
  • Identify global tenders open to international bidders by querying the global list type
  • Export tender metadata (title, organisation, dates) to a spreadsheet for procurement research or vendor analysis
  • Cross-reference total_tenders counts across list types to measure procurement activity trends over time
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does eprocure.gov.in have an official developer API?+
No. The Central Public Procurement Portal does not publish a documented public developer API or data feed. The eprocure.gov.in API on Parse provides structured programmatic access to the portal's central tender listings.
What does `list_type` control, and which listings are available?+
The list_type parameter selects the specific central-government tender board to read. The available options correspond to the portal's own groupings: active tenders, high-value tenders, global tenders, tenders closing today, and corrigendum notices. Each call reads only one list type at a time. To cover multiple listings, make a separate request per list type.
Does the keyword filter search the entire portal, or only the pages scanned?+
The keyword filter applies only to the listing pages actually scanned in the call, controlled by the page and max_pages parameters. It is not a portal-wide full-text search. To scan more of the listing, increase max_pages (up to the 20-page cap per call) or paginate using next_page across multiple calls.
Does the API return tender detail pages, bid documents, or evaluation results?+
Not currently. The API returns listing-level fields: tender_id, title, organisation, reference number, publish date, and bid-closing date. Bid documents, technical specifications, corrigendum attachments, and award/evaluation results are not included. You can fork this API on Parse and revise it to add an endpoint that fetches individual tender detail pages.
Are state government tenders included?+
Not currently. The API covers central government listings on the main eprocure.gov.in portal. State-level procurement portals (e.g. state e-procurement systems hosted separately) are not included. You can fork this API on Parse and revise it to target a specific state procurement portal.
Page content last updated . Spec covers 1 endpoint from eprocure.gov.in.
Related APIs in Government PublicSee all →
eprocurement.gov API
Monitor India's public procurement opportunities by accessing active tenders, bids closing today, global tenders, high-value contracts, and cancelled tenders from the Central Public Procurement Portal. Search tender details, browse participating organizations, and track real-time procurement statistics to stay informed on government contracting opportunities.
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.
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.
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.
bidsandtenders.com API
Search and discover public bid opportunities across Canada and the USA to find relevant procurement projects for your business. Access real-time tender data from the bids&tenders eProcurement platform to identify and pursue new contract opportunities.
esupply.dubai.gov.ae API
Access published government tender opportunities directly from Dubai's official eSupply procurement portal to discover and monitor active bidding projects. Stay informed about public procurement contracts available through Dubai's government sourcing platform.
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.