🇮🇳 India Government Tenders — GeM & CPPP avatar

🇮🇳 India Government Tenders — GeM & CPPP

Pricing

from $50.00 / 1,000 tender records

Go to Apify Store
🇮🇳 India Government Tenders — GeM & CPPP

🇮🇳 India Government Tenders — GeM & CPPP

India government tenders from CPPP eProcurement (incl. GeM) — title, organisation, value, dates, bid links. Watch mode for new tenders.

Pricing

from $50.00 / 1,000 tender records

Rating

0.0

(0)

Developer

NexGenData

NexGenData

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

🇮🇳 India Government Tenders — GeM & CPPP eProcurement Scraper

Live central and state government tenders from India's CPPP eProcurement portal (eprocure.gov.in) — the government-run aggregator that carries the same central/state tenders as the departmental portals and a dedicated GeM (Government e-Marketplace) bids slice. Every row comes back as a clean tender record with a decoded tender id, the organisation, published / closing / opening dates, corrigendum status, and a working detail URL. Built for contractors, bid-management teams, GovTech products, and AI agents that need structured Indian public-procurement data without driving a JavaScript portal.

Public procurement data, provided as-is for information purposes. Not affiliated with GeM, CPPP, NIC, or any government body.

📊 What you get

One record per tender (source chooses the slice):

  • tender_id — decoded numeric tender id (base64-decoded from the detail path; a stable GeM hash on the GeM slice)
  • tender_ref_no — the tender reference / GeM bid number
  • title — tender title / product category
  • organisation — issuing organisation (e.g. "Central Public Works Department (CPWD)")
  • published_date — e-published / bid-start date
  • closing_date — bid submission closing / bid-end date
  • opening_date — tender opening date (central/state slice)
  • corrigendum — corrigendum indicator
  • department — department name (GeM slice)
  • detail_url — absolute link to the full tender page on eprocure.gov.in
  • tender_value — tender value (null in this fast listing path; on the detail page)
  • source, scraped_at

Source slices

sourceSliceFeed
all (default)All active central + state tenders/cppp/latestactivetendersnew
gemGeM-branded bids/cppp/gemtender

💵 Pricing

Pay-per-result, no subscription:

EventPrice
Actor start$0.01
Tender record$0.05 each
Watch-check (per scheduled watch run)$0.05

About 20 tenders per $1.

Worked example: a pull of 50 active tenders = 1 start ($0.01) + 50 records ($2.50) = $2.51. A daily watch run that finds 4 new tenders = $0.05 watch-check + 4 × $0.05 = $0.25.

🧾 Sample output

{
"tender_id": "13956863",
"tender_ref_no": "1000460298",
"title": "PROCUREMENT OF PIPE FITTINGS FOR 131P137 SUCTION PIPING AT BPCL MUMBAI REFINERY",
"organisation": "Bharat Petroleum Corporation Limited",
"published_date": "17-Jul-2026 08:23 PM",
"closing_date": "24-Jul-2026 02:00 PM",
"opening_date": "24-Jul-2026 02:01 PM",
"corrigendum": null,
"department": null,
"detail_url": "https://eprocure.gov.in/cppp/tendersfullview/MTM5NTY4NjM=A13h1...",
"tender_value": null,
"source": "all",
"scraped_at": "2026-07-17T20:30:00Z"
}

⏰ Watch mode — new-tender alerts

Turn on watchMode and put the actor on a schedule. The first run seeds a baseline and emits nothing; every later run emits only new tenders since the last run (keyed on tender_id). Perfect for a standing "new CPWD / GeM tenders in my category" feed into Slack, a sheet, or an agent.

{ "source": "all", "keyword": "road", "watchMode": true, "watchLabel": "highway-tenders" }

🤖 Use with AI agents

Returns clean JSON, so an agent can call it directly. Example task: "Pull today's active CPWD tenders closing this month and summarize the ones over ₹1 crore." Works with MCP tool-calling and agentic (x402) payment flows — no API key required.

API

curl -X POST "https://api.apify.com/v2/acts/nexgendata~gem-tenders-india/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"source":"all","keyword":"software","maxResults":25}'

CLI

$apify call nexgendata/gem-tenders-india --input '{"source":"gem","maxResults":100}'
  • singapore-gebiz-tenders — the same government-tender play for Singapore's GeBIZ (APAC sibling).
  • India Six — the India public-data suite:
    • nse-bse-announcements — NSE/BSE corporate announcements & filings.
    • mca-company-registry — India company master data (CIN, directors, capital, status).
    • india-startup-funding-tracker — India startup funding rounds.
    • india-trademark-search — Indian trademark records.
    • india-gst-verification — GSTIN verification & taxpayer details.
    • india-court-cases — Indian court case records.

❓ FAQ

Where does the data come from? India's CPPP eProcurement portal (eprocure.gov.in), run by NIC — the central aggregator of government tenders, which includes a GeM-bids slice. To be clear: this is sourced from CPPP eProcurement (which carries GeM bids), not scraped from GeM's own portal (gem.gov.in) directly.

Why CPPP instead of GeM directly? GeM's own portal is browser/CSRF-gated and resets connections from datacenters. CPPP serves the same tenders as server-rendered HTML that is reachable reliably, so you get stable structured data.

How fresh is it? Real-time — tenders appear as CPPP publishes them; published_date is on every record.

Does a blocked source bill me? No. If CPPP is unreachable the run fails loud and charges nothing — you never pay for an empty "success". Reaching the end of the tender list is a clean empty result, not a failure.

Can I filter? Use the keyword filter (matched against title + organisation) and the source slice; maxResults caps the pull.


Data sourced from public CPPP eProcurement (eprocure.gov.in) government-tender listings, which include GeM bids. This actor is not affiliated with or endorsed by GeM, CPPP, NIC, or any government body. Public procurement data, provided as-is.