Developer API Documentation
Comprehensive programmatic access to thousands of live government tenders, GeM contracts, historical AOC bid results, and reference datasets across 12+ 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 or result_id 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 12+ 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. |
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)
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.