ssh.autos

Catalog / Tenders & public contracts

TENDERS & PUBLIC CONTRACTS · INDIA

GeM India Government Tenders | Bids & PDF Details

Find Indian government tenders on GeM by keyword, ministry, buyer or delivery state, and deadline.

PER CALL · X402 / MPP From $0.01 per call 1 endpoint at api.ssh.autos. Pay in USDC, no account. See the endpoint
APIFY STORE Public actor Run it with your Apify account: bulk runs, schedules and exports. Open on Apify

About this data

Find Indian government tenders on GeM by keyword, ministry, buyer or delivery state, and deadline. Export bids and reverse auctions with document links; add PDF details for EMD, eligibility, estimated value and published grievance emails. Build daily tender alerts in JSON, CSV or Excel.

From the actor’s Apify Store listing. The per-call endpoint may return a bounded subset; its own description is below.

Buy per call over x402

One endpoint at api.ssh.autos. Each call is one JSON POST, paid in USDC with no account or API key, and answered in the same HTTP response.

POST /v1/in/gem/global-tenders

Read the first page of open Global Tender Enquiry (GTE) bids, up to 10 records, optionally narrowed by keyword.

PRICE$0.01 per call, in USDC
RESULTUp to 10 per call
PAYMENTx402 or MPP · no account

This endpoint covers only GeM international bids and leaves out domestic tenders.

Records include bid numbers and IDs, titles, quantities, ministries, departments, start/end times and document URLs.

No later pages, ministry/consignee filter lookups, PDF downloads, technical specifications or buyer/contact enrichment are requested.

Input

Send a JSON body to POST https://api.ssh.autos/v1/in/gem/global-tenders.

FieldTypeRequiredNotes
keywordstringoptionalup to 150 characters
maxResultsintegeroptional1–10; default 5

Returned fields

The answer is JSON: records, a list of up to 10, and summary, the run status and counts. Each record has these 48 fields; a field the source does not publish comes back null.

48 fields per record
FieldTypeNotes
buyerEmailstringBuyer grievance-redressal email published in the bid document; with details on.
hodEmailstringHead-of-department grievance-redressal email published in the bid document; with details on.
bidKeystringUnique key: source:bid:bidNumber (e.g. bidplus.gem.gov.in:bid:GEM/2026/B/8123845). One row per bid. Falls back to source:id:numericId when the bid number is missing.
bidNumberstringGeM bid or RA number, e.g. 'GEM/2026/B/8123845' (B = bid, R = reverse auction). Null when GeM supplies only a numeric bid id.
bidIdintegerGeM numeric bid id (used in the document URL).
bidKindstring'bid', 'reverseAuction' (an RA run after a bid) or 'directReverseAuction'.
parentBidNumberstringFor a reverse auction, the number of the bid it came from.
parentBidIdintegerFor a reverse auction, the numeric id of the bid it came from.
itemsstringItems or services being bought, as listed by the buyer (comma-separated for bunch bids).
boqTitlestringBill-of-quantities title for BOQ bids, e.g. 'MEDICINE'.
quantityintegerTotal quantity across the bid's items.
ministrystringBuyer's ministry, e.g. 'Ministry of Railways'. Empty for many state-government buyers.
departmentstringBuyer's department, e.g. 'Indian Railways' or a state department.
startAtstringBid start (publication) time, ISO 8601 with the India offset (+05:30).
endAtstringBid end (submission deadline) time, ISO 8601 (+05:30).
statusstring'open' (end time still ahead), 'closed' or 'cancelled'.
isOpenForBidsbooleanTrue while the bid is not cancelled and its end time is in the future.
evaluationStagestringBuyer's evaluation stage: 'Not evaluated', 'Technical evaluation', 'Financial evaluation' or 'Awarded'.
isHighValuebooleanTrue when the buyer declared an estimated value of Rs 2 crore or more.
isRateContractbooleanTrue for a rate-contract bid.
isGlobalTenderbooleanTrue for a global tender.
isLimitedTenderbooleanTrue for a limited tender.
isSinglePacketbooleanTrue for a single-packet bid (technical and financial offers together).
isBoqbooleanTrue for a bill-of-quantities bid.
categoryIdstringGeM category id of the bid, e.g. 'home_boq_boql_boql_boq'.
urlstringBid document link on bidplus.gem.gov.in (the PDF the bid card links to; an RA schedule list for scheduled RAs).
parentBidUrlstringFor a reverse auction, the parent bid's document link.
bidOpeningAtstringBid opening time, ISO 8601 (+05:30). Details only.
offerValidityDaysintegerOffer validity from the end date, in days. Details only.
organisationstringBuyer organisation from the bid document, e.g. 'Central Railway'. Details only.
officestringBuyer office from the bid document. Details only.
estimatedBidValuenumberEstimated bid value in INR, when the buyer declared one. Details only.
emdRequiredbooleanTrue when an earnest money deposit (EMD) is required. Details only.
emdAmountnumberEMD amount in INR. Details only.
epbgRequiredbooleanTrue when a performance bank guarantee (ePBG) is required. Details only.
epbgPercentnumberePBG as a percentage of the contract value. Details only.
minimumTurnovernumberMinimum average annual turnover asked of bidders, in INR (lakh and crore converted). Details only.
pastExperienceYearsintegerYears of past experience required for the same or similar items. Details only.
pastPerformancePercentnumberPast-performance criterion, percent of the bid quantity. Details only.
bidToRaEnabledbooleanTrue when the bid can move to a reverse auction. Details only.
typeOfBidstring'Single Packet Bid' or 'Two Packet Bid'. Details only.
evaluationMethodstringe.g. 'Total value wise evaluation' or 'Item wise evaluation'. Details only.
primaryProductCategorystringPrimary product category from the bid document. Details only.
detailsErrorstringWhy the bid document could not be read, when details are on; null otherwise.
detailsParsedbooleanTrue when the bid document was read and its detail fields filled. Only these rows carry the bid-details charge; false when details are off or the document failed, is missing or could not be read.
sourceQuerystringThe filters this row was collected with, e.g. 'status=open'.
sourcestringAlways 'bidplus.gem.gov.in'.
scrapedAtstringWhen the row was collected, ISO 8601 UTC.

Example call

TERMINAL · $0.01 PER RUN
npx agentcash@latest fetch https://api.ssh.autos/v1/in/gem/global-tenders -m POST -b '{"maxResults": 5}'

The example values come from the API spec or the actor’s own sample input. Running it is a paid call.

What is and isn’t charged

Free

  • Invalid input (422), busy (503), source failure (502), timeout (504) and calls whose client hung up are never charged.
  • Invalid input and source failures are not charged.

Prefer a subscription? Run it on Apify

This data source is a public actor on the Apify Store: GeM India Government Tenders Scraper | Bids & PDF Details. Run it with your Apify account and plan for larger, scheduled or exported runs; it may offer more input options than the per-call endpoint.

Open on Apify

How x402 payment works

  1. Your client sends the request. The API answers 402 Payment Required with the price and where to pay.
  2. The client pays from its own wallet: USDC on Base or Solana over x402, or over MPP on Tempo. No account, sign-up or API key.
  3. The client retries with the payment attached and gets the JSON answer in the same call. You are only charged for answers.

The AgentCash CLI in the example does all three steps for you and pays from your AgentCash wallet. Any x402 or MPP client works the same way.

Machine-readable: openapi.json · llms.txt

Some links to Apify are affiliate links. We may earn a commission if you sign up and become a paying customer.