Catalog / Tenders & public contracts
TENDERS & PUBLIC CONTRACTS
World Bank Tenders | Procurement Notices
Find World Bank-funded tenders in 120+ countries: invitations for bids, expressions of interest and prequalification notices with buyer, sector, selection method, deadline in local time…
About this data
Find World Bank-funded tenders in 120+ countries: invitations for bids, expressions of interest and prequalification notices with buyer, sector, selection method, deadline in local time, contacts and document links. Contract awards on request. Export JSON, CSV or Excel; build daily tender alerts.
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/worldbank/tenders
World Bank-funded tenders, worldwide: invitations for bids and requests for expressions of interest, with buyer, country and deadline.
Input
Send a JSON body to POST https://api.ssh.autos/v1/worldbank/tenders.
| Field | Type | Required | Notes |
|---|---|---|---|
keywords | string | optional | up to 200 characters |
maxItems | integer | optional | 1–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 38 fields; a field the source does not publish comes back null.
38 fields per record
| Field | Type | Notes |
|---|---|---|
tenderId | string | World Bank notice id, e.g. OP00478609. One row per notice. |
url | string | Official notice page on projects.worldbank.org. |
noticeType | string | Invitation for Bids, Request for Expression of Interest, Invitation for Prequalification, General Procurement Notice or Contract Award. |
status | string | open (deadline still ahead), closed (deadline passed) or awarded (contract award notice); null for notices without a deadline. one of open, closed, awarded |
referenceNumber | string | The buyer's bid or contract reference number. |
projectId | string | World Bank project id, e.g. P176594. |
projectName | string | Name of the World Bank-financed project. |
projectUrl | string | Project page on projects.worldbank.org. |
buyerName | string | Implementing agency that runs the procurement. |
buyerCountry | string | Country of the implementing agency. |
buyerContactName | string | Agency contact name as published in the notice. |
buyerEmail | string | Agency contact e-mail as published in the notice. |
buyerPhone | string | Agency contact phone as published in the notice. |
buyerAddress | string | Agency contact address as published in the notice. |
buyerWebsite | string | Website the agency gives on the notice. |
countryCode | string | Project country, ISO 3166-1 alpha-2; null for regional projects. |
countryName | string | Project country or region as the World Bank names it. |
region | string | World Bank region of the project. |
procurementCategory | string | goods, works, consulting-services or non-consulting-services. one of goods, works, consulting-services, non-consulting-services |
procurementCategoryCode | string | World Bank category code: GO, CW, CS or NC. |
procurementMethod | string | Selection method, e.g. Request for Bids. |
procurementMethodCode | string | World Bank method code, e.g. RFB, RFQ, QCBS, INDV. |
sectors | array of strings | Sectors of the financing project (World Bank sector names). |
sectorCodes | array of strings | World Bank sector codes matching sectors. |
language | string | Language of the notice. |
publishedAt | string | Publication date, YYYY-MM-DD. |
deadline | string | Bid or expression-of-interest deadline, ISO 8601 with the local UTC offset; null when the time or the time zone is not known. |
deadlineDate | string | Deadline date as published, YYYY-MM-DD (local). |
deadlineLocalTime | string | Deadline clock time as published, HH:MM local time. |
deadlineTimezone | string | Time zone used for deadline (IANA name). |
descriptionExcerpt | string | Opening of the published notice text, including public contact, awardee and beneficial-owner information; with details on only. |
documentLinks | array of strings | Web links quoted in the notice (bidding documents, terms of reference, e-procurement pages); with details on only. |
awardValue | number | Signed contract value on award notices (summed when several contracts share one currency). |
awardCurrency | string | Currency of awardValue (ISO 4217). |
awardedSuppliers | array of strings | Published awarded supplier names, including companies, consulting firms and individual consultants (award notices). |
sourceQuery | string | The run's filters, for telling runs apart. |
source | string | Always worldbank.org. |
scrapedAt | string | When the row was collected, ISO 8601 UTC. |
Example call
npx agentcash@latest fetch https://api.ssh.autos/v1/worldbank/tenders -m POST -b '{"maxItems": 3}'
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
You pay the call price for
- An answer, including a definitive “not found” or an empty result.
- Confirmed no matches returns records: [] (charged: it is an answer).
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: World Bank Tenders Scraper | Procurement Notices. 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.
How x402 payment works
- Your client sends the request. The API answers
402 Payment Requiredwith the price and where to pay. - 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.
- 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