Developer API Documentation
Comprehensive programmatic access to thousands of live government tenders, GeM contracts, historical AOC bid results, and reference datasets across 100+ public procurement portals.
Introduction & Capabilities
Welcome to the Tender Procure Distribution API. This API provides programmatic access to a comprehensive, continually updated database of Indian government tenders, concluded bid results (Award of Contract records), BOQ item specifications, criteria, exemptions, and origin documents.
Engineered with an ID-first query pipeline and an in-memory caching engine, the API delivers fast response times for client dashboards, automatic alert pipelines, and internal ERP procurement integrations.
Base URL & Environments
All requests must target the production endpoint over HTTPS:
Supported Procurement Portals (12)
Filter by any portal using the portal parameter (comma-separated for multi-portal searches).
Authentication & Security Scopes
Every request (except the public /health endpoint) must include two authentication headers. The server verifies both credentials on each request; invalid or missing credentials return HTTP 401 Unauthorized.
| Header | Type | Required | Description |
|---|---|---|---|
| X-API-Key | string | Required | Your unique client API key. |
| X-API-Secret | string | Required | Your confidential API secret key. Verified using timing-safe comparison. |
IP & Domain Whitelisting
Client keys can optionally be restricted to specific server IP addresses or authorized Origin domains. Calls from non-whitelisted sources return 403 Forbidden.
Keyword & State Scoping
If your client key has configured state boundaries (allowed_states) or keyword boundaries (allowed_keywords), the API automatically restricts responses accordingly.
Rate Limits & Response Headers
The API applies a sliding 60-second window and a daily quota that resets at midnight UTC. Standard limits are 60 requests per minute and 10,000 requests per day.
| Header | Type | Description |
|---|---|---|
| X-RateLimit-Limit-Minute | integer | Maximum requests permitted per rolling 60-second window (default: 60). |
| X-RateLimit-Remaining-Minute | integer | Remaining calls available before rate throttling is enforced. |
| X-RateLimit-Limit-Day | integer | Maximum daily calls assigned to your license tier (default: 10,000). |
| X-RateLimit-Remaining-Day | integer | Calls remaining today. Resets automatically at 00:00:00 UTC. |
| Retry-After | integer | Returned on HTTP 429. Number of seconds to wait before repeating request. |
Handling HTTP 429 (Too Many Requests)
When rate limits are exceeded, the API responds with HTTP 429 and includes a Retry-After header indicating the number of seconds to wait. We recommend using exponential backoff before retrying.
Standard Response Envelope & Error Format
All endpoints return a consistent JSON envelope with success, a unique requestId for tracking, the response payload in data, and execution metadata in meta.
HTTP Status Codes
| Code | Status | Meaning / Action |
|---|---|---|
| 200 | OK | Request completed successfully. Results returned in standardized envelope. |
| 400 | Bad Request | Invalid parameters, malformed ISO date, or parameter out of bounds. |
| 401 | Unauthorized | Missing or incorrect X-API-Key or X-API-Secret credentials. |
| 403 | Forbidden | Client inactive, subscription expired, unauthorized IP/domain, or blocked state/scope. |
| 404 | Not Found | The requested tender_id, result_id, or contract_no does not exist. |
| 429 | Too Many Requests | Exceeded 60 req/min or daily quota. Follow Retry-After header. |
| 500 | Internal Server Error | Transient server error. Share requestId with engineering team. |
| 503 | Service Unavailable | Database health check failed or maintenance window in progress. |
API Request Playground
Select an endpoint, customize query parameters, and inspect the real-time cURL command ready to run in your terminal.
curl -X GET "https://tenderprocure.com/api/dist/v1/tenders?portal=GEM%2CRailway&state=gujarat&status=live&min_value=500000&search_keywords=solar&sort_by=closing_date&sort_order=asc&limit=15" \
-H "X-API-Key: your_api_key_here" \
-H "X-API-Secret: your_api_secret_here"Endpoints Reference
Full reference documentation for all active distribution API endpoints, with query parameters, sample responses, and code examples.
Health Check
Public status endpoint designed for uptime monitoring tools, CI/CD checks, and status dashboards. Requires no API keys.
List & Search Tenders
Search and filter live, closed, or archived tenders across 100+ government procurement portals. Features sub-100ms fulltext searching, value and quantity bounds, dates, exemption flags, and field projection.
Query Parameters32 parameters available
Required Headers
| Header | Type | Description |
|---|---|---|
| X-API-Key | string | Your unique API client key. |
| X-API-Secret | string | Your API secret key. |
Get Tender Details
Fetch full tender record by its canonical Tender Procure ID (e.g., 'TP-2026-88192'). Returns criteria, exemptions, origin document links, tender fee details, BOQ line items, and computed lifecycle status.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| tender_id | string | REQUIRED | Tender Procure ID (e.g., 'TP-2026-88192'). |
Required Headers
| Header | Type | Description |
|---|---|---|
| X-API-Key | string | Your API key. |
| X-API-Secret | string | Your API secret. |
List Tender Results (AOC)
Browse concluded bids, contract award dates, winning sellers, qualified bidders, and finalized pricing (Award of Contract records).
Query Parameters19 parameters available
Required Headers
| Header | Type | Description |
|---|---|---|
| X-API-Key | string | Your API key. |
| X-API-Secret | string | Your API secret. |
Get Result Details
Fetch comprehensive result dossier by TPRI ID (e.g., 'TPRI-99120'). Includes full bidder lists, price breakdowns, and related tender parameters.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| result_id | string | REQUIRED | Tender Procure Result ID (e.g. 'TPRI-99120'). |
Required Headers
| Header | Type | Description |
|---|---|---|
| X-API-Key | string | Your API key. |
| X-API-Secret | string | Your API secret. |
List & Search GeM Contracts
Search and filter verified Government e-Marketplace (GeM) executed purchase orders and contract awards. Filter by date range, contract value bounds, issuing department/organisation, seller company name, or full-text keywords. Returns core summary records. Administrative buyer metadata (organization_type, ministry, office_zone, buyer_designation, buying_mode) and supplier/specification details (gem_seller_id, contact_no, email, brand, model) are provided exclusively in GET /gem-contracts/:contract_no.
Query Parameters10 parameters available
Required Headers
| Header | Type | Description |
|---|---|---|
| X-API-Key | string | Your API key. |
| X-API-Secret | string | Your API secret. |
Get GeM Contract Details
Fetch comprehensive details of a single GeM contract by its official contract number (e.g., 'GEMC-511687712345678'). Returns buyer designation, office zone, seller details, itemized product, brand, model, unit price, quantity, and verified purchase order download link.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| contract_no | string | REQUIRED | GeM Contract Number (e.g., 'GEMC-511687712345678'). URL-encoded if containing slashes or special characters. |
Query Parameters1 parameters available
Required Headers
| Header | Type | Description |
|---|---|---|
| X-API-Key | string | Your API key. |
| X-API-Secret | string | Your API secret. |
Get Departments
Search and auto-complete government departments across Central and State ministries. Default returns 30 departments.
Query Parameters1 parameters available
Required Headers
| Header | Type | Description |
|---|---|---|
| X-API-Key | string | Your API key. |
| X-API-Secret | string | Your API secret. |
Get Organizations
Search and auto-complete public sector enterprises (PSUs), government boards, autonomous institutions, and corporations. Default returns 30 organizations.
Query Parameters1 parameters available
Required Headers
| Header | Type | Description |
|---|---|---|
| X-API-Key | string | Your API key. |
| X-API-Secret | string | Your API secret. |
Field Reference & Data Dictionary
Field catalog of attributes returned across tender records, criteria, exemptions, origin documents, and BOQ item specifications. You can use the fields parameter on GET /tenders to select only the fields needed.
Code Examples & SDKs
Integration examples in Node.js and Python for querying live tenders and concluded bid outcomes.
Fetch Tenders with Pagination (Node.js Axios)
Search GeM Contracts by Department & Value (Node.js Axios)
Frequently Asked Questions
Answers to common questions regarding pagination, in-memory caching, rate scaling, and parameter filtering.
Ready to integrate Tender Procure Distribution API?
To request API credentials, customized query boundaries, or higher rate limits, contact our developer operations team.