Discover/Gov API
live

Gov APIbidplus.gem.gov.in ↗

Search ongoing government bids and reverse auctions on India's GeM portal. Returns notice titles, org names, deadlines, and source URLs via one endpoint.

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

What is the Gov API?

The bidplus.gem.gov.in API exposes 1 endpoint — search_notices — that queries the Government e-Marketplace bid portal for active bids and reverse auctions. Each call returns up to 10 notice records per page, including reference numbers, organization names, submission deadlines, and direct source URLs. Results are paginated and ordered by bid end date, oldest first, matching the portal's default sort.

This call costs2 credits / call— charged only on success
Try it
1-based result page over the matching notices; page N returns notices (N-1)*limit+1 .. N*limit. Must be a positive integer.
Number of notices per page, an integer from 1 to 10 (10 is the portal's maximum page size; larger values are rejected).
Full-text keyword searched against bid titles, item categories and bid numbers (e.g. laptop).
→ api.parse.bot/scraper/e6207810-c4da-45c4-b6ea-024de7f6b7de/<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/e6207810-c4da-45c4-b6ea-024de7f6b7de/search_notices?query=laptop' \
  -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 bidplus-gem-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: GeM Bid Listings API — search public procurement notices."""
from parse_apis.bidplus_gem_gov_in_api import GemBids, InputFormatInvalid

client = GemBids()

# Search for laptop procurement notices, capped at 5 results.
for notice in client.notices.search(query="laptop", limit=5):
    print(notice.reference_number, "-", notice.description_title)
    print("  Org:", notice.organization_name)
    print("  Deadline:", notice.submission_deadline)

# Drill into the first result's document links.
first = client.notices.search(query="computer", limit=1).first()
if first is not None:
    print("\nNotice:", first.description_title)
    print("Source:", first.source_url)
    for doc in first.document_links:
        print(f"  [{doc.format}] {doc.url}")

# Demonstrate error handling for an invalid page value.
try:
    client.notices.search(query="printer", page_size=0, limit=1).first()
except InputFormatInvalid as e:
    print("Validation error:", e.message)

print("\nexercised: notices.search / DocumentLink fields / InputFormatInvalid")
All endpoints · 1 totalmissing one? ·

Searches the portal's public list of ongoing bids and reverse auctions (RAs) by full-text keyword and returns one record per notice, ordered by bid end date (oldest first), the portal's default order. Results are paginated by the caller's page and limit as a true offset over the result stream: a call returns at most 10 notices and costs one or two upstream requests. total_count is the portal's reported number of matching notices (0 when the portal reports no match for the keyword; null only if the portal gives no count for a page past the end); has_more is true while more notices exist beyond this page. Every scalar in a notice is a string or null. reference_number is the official GeM bid/RA number; description_title is the item/category list of the notice; organization_name joins ministry and department with ' / ' when both are present; publication_date (bid start) and submission_deadline (bid end) are ISO-8601 UTC timestamps exactly as the portal stores and displays them. source_url is the official notice document URL on the portal (a PDF for bids and RAs; a schedule page for evaluated RAs), and document_links lists the PDF document URLs (the RA's own document plus its parent bid's document when the RA derives from a bid); it is an empty array when no PDF URL is known. A keyword that matches nothing is a successful empty result; invalid page or limit values are rejected with a validation error; a blocked or failed upstream request is reported as an error, never as empty data.

Input
ParamTypeDescription
pageinteger1-based result page over the matching notices; page N returns notices (N-1)*limit+1 .. N*limit. Must be a positive integer.
limitintegerNumber of notices per page, an integer from 1 to 10 (10 is the portal's maximum page size; larger values are rejected).
queryrequiredstringFull-text keyword searched against bid titles, item categories and bid numbers (e.g. laptop).
Response
{
  "type": "object",
  "fields": {
    "page": "integer page echoed from the request",
    "limit": "integer page size echoed from the request",
    "query": "the keyword that was searched",
    "notices": "array of notice objects: reference_number, description_title, organization_name, publication_date, submission_deadline, source_url (all string or null) and document_links (array of {format, url})",
    "has_more": "boolean, true when further pages exist",
    "total_count": "integer number of matching notices reported by the portal, or null when unknown"
  },
  "sample": {
    "data": {
      "page": 3,
      "limit": 4,
      "query": "laptop",
      "notices": [
        {
          "source_url": "https://bidplus.gem.gov.in/showbidDocument/9770540",
          "document_links": [
            {
              "url": "https://bidplus.gem.gov.in/showbidDocument/9770540",
              "format": "pdf"
            }
          ],
          "publication_date": "2026-09-15T11:29:13+00:00",
          "reference_number": "GEM/2026/B/7930056",
          "description_title": "High End Laptop - Notebook",
          "organization_name": "Ministry of Communications / Department of Posts",
          "submission_deadline": "2026-10-01T16:00:00+00:00"
        },
        {
          "source_url": "https://bidplus.gem.gov.in/showradocumentPdf/9963601",
          "document_links": [
            {
              "url": "https://bidplus.gem.gov.in/showradocumentPdf/9963601",
              "format": "pdf"
            },
            {
              "url": "https://bidplus.gem.gov.in/showbidDocument/9727279",
              "format": "pdf"
            }
          ],
          "publication_date": "2026-09-30T16:00:00+00:00",
          "reference_number": "GEM/2026/R/743692",
          "description_title": "Entry and Mid Level Laptop - Notebook,All in One PC (V2),Entry and Mid Level Desktop Computer,A4 and Legal Size Multifunction Printer (MFP)",
          "organization_name": "Planning and Convergence Department Odisha",
          "submission_deadline": "2026-10-01T16:00:00+00:00"
        }
      ],
      "has_more": true,
      "total_count": 591
    },
    "status": "success"
  }
}

About the Gov API

What the API Returns

The search_notices endpoint accepts a required query string matched against bid titles, item categories, and bid numbers on the GeM portal. Each notice object in the notices array carries: reference_number (the portal's unique bid identifier), description_title (the bid or RA title), organization_name (the procuring government body), publication_date, submission_deadline, and source_url (a direct link to the official notice on bidplus.gem.gov.in). The response also echoes back page, limit, and query for easy request tracking.

Pagination Behavior

Results are paginated using page (1-based) and limit (1–10, capped at the portal's maximum page size of 10). Page N covers notices (N-1)*limit+1 through N*limit in the full result set. The has_more boolean indicates whether additional pages exist, and total_count reports the portal's own count of matching notices (or null when the portal does not expose it). Callers should check has_more to determine whether to fetch the next page rather than relying solely on total_count.

Coverage Scope

The API covers publicly listed, ongoing bids and reverse auctions on the GeM portal. Notices are ordered by bid end date ascending. Only active, open notices are indexed — closed, cancelled, or archived bids are not included in results. The query field performs full-text matching, so both broad category terms (e.g. "laptop") and specific bid numbers are valid inputs.

Reliability & maintenanceVerified

The Gov API is a managed, monitored endpoint for bidplus.gem.gov.in — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when bidplus.gem.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 bidplus.gem.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 new government procurement tenders matching a product category keyword like "solar panel" or "laptop"
  • Aggregate submission deadlines from submission_deadline fields to build a procurement calendar
  • Track which government organizations (organization_name) are actively tendering in a given sector
  • Build alerting systems that poll for new notices matching a vendor's product keywords
  • Cross-reference reference_number values against internal bid management systems
  • Compile lists of source_url links for compliance teams to review official tender documents
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 bidplus.gem.gov.in have an official developer API?+
No public developer API is documented by the Government e-Marketplace for external programmatic access to bid listings. The GeM portal's procurement data is available to buyers and sellers through its web portal at gem.gov.in, but no official REST API with public keys or documentation is currently published for this endpoint.
What does the `search_notices` endpoint return for each notice?+
Each object in the notices array includes: reference_number, description_title, organization_name, publication_date, submission_deadline, and source_url. The response also includes top-level page, limit, query, has_more, and total_count fields for navigating paginated results.
Does the API return closed, cancelled, or archived bids?+
Not currently. The API covers only publicly listed, ongoing bids and reverse auctions visible on the GeM portal. Closed or cancelled notices are not included. You can fork this API on Parse and revise it to add an endpoint targeting archived or historical bid data.
Can I filter notices by organization name, state, or bid category independently of a keyword search?+
Not currently. The single search_notices endpoint accepts only a free-text query string, page, and limit. Structured filters by geography, ministry, or category are not exposed as separate parameters. You can fork this API on Parse and revise it to add dedicated filter parameters if the portal supports them.
How does pagination work when `total_count` is null?+
When the portal does not report a total count, total_count is returned as null. In that case, use the has_more boolean to determine whether to request the next page. Incrementing page while has_more is true will continue returning results until the final page, at which point has_more becomes false.
Page content last updated . Spec covers 1 endpoint from bidplus.gem.gov.in.
Related APIs in Government PublicSee all →
eprocure.gov.in API
Access data from eprocure.gov.in.
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.
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.
ted.europa.eu API
Access data from ted.europa.eu.
opportunities.bidsandtenders.com API
Search and filter public bid opportunities by keywords, status, organization, publish date, and bid type, then retrieve comprehensive details including descriptions, key dates, meetings, and related documents for any listing. Access a complete view of available tender opportunities with sorting and pagination to easily find the bids most relevant to your business.
bidsandtenders.ca API
Access data from bidsandtenders.ca.
procurement-portal.novascotia.ca API
Access data from procurement-portal.novascotia.ca.
biddingo.com API
Search and filter government procurement bids and RFPs across different regions and categories to find relevant opportunities. Access detailed project descriptions and bid information to help you discover and evaluate contracting opportunities that match your business needs.