POST /api/cppp/tenders
Price: 5 credits
One live tender from an Indian central or state e-procurement portal by Tender ID: organisation chain, tender type and category, form of contract, tender fee, processing fee and EMD with their payees, tender value, product category, location, bid validity and work period, every key date, pre-bid meeting, covers, payment instruments, notice and work-item documents, corrigenda and the inviting authority.
Pass the `portal` the Tender ID was listed on, because the same ID is not found on another portal.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)portal string — E-procurement portal (default: "cppp"; one of: "cppp", "cpse", "defence", "pmgsy", "coalindia", "arunachal", "assam", "chandigarh", "delhi", "goa", "haryana", "himachal", "jammu_kashmir", "jharkhand", "kerala", "ladakh", "maharashtra", "manipur", "meghalaya", "mizoram", "nagaland", "odisha", "puducherry", "punjab", "rajasthan", "sikkim", "tamil_nadu", "tripura", "uttar_pradesh", "uttarakhand", "west_bengal")id string required — Tender ID (examples: "2026_ATIRA_927296_1", "2026_MCGM_1341203_1"; minLength: 1)@type string (default: "CpppTenderDetail")id string requiredportal string requiredreference_number string nullableorganisation string nullableorganisation_chain array (default: [])tender_type string nullablecontract_form string nullablecategory string nullablecover_count integer nullableis_withdrawal_allowed boolean nullableis_general_technical_evaluation_allowed boolean nullableis_itemwise_technical_evaluation_allowed boolean nullablepayment_mode string nullableis_multi_currency_boq_allowed boolean nullableis_multi_currency_fee_allowed boolean nullableis_two_stage_bidding_allowed boolean nullabletender_fee number nullableprocessing_fee number nullableprocessing_fee_label string nullablefee_payable_to string nullablefee_payable_at string nullableis_fee_exemption_allowed boolean nullableemd_amount number nullableis_emd_exemption_allowed boolean nullableemd_fee_type string nullableemd_percentage number nullableemd_payable_to string nullableemd_payable_at string nullabledescription string nullablepre_qualification string nullableexternal_monitor_remarks string nullablevalue number nullableproduct_category string nullablesub_category string nullablecontract_type string nullablebid_validity_days integer nullablework_period_days integer nullablelocation string nullablepostal_code string nullablepre_bid_meeting_place string nullablepre_bid_meeting_address string nullablepre_bid_meeting_at integer nullablebid_opening_place string nullableis_nda_tender_allowed boolean nullableis_preferential_bidder_allowed boolean nullableis_fta_bidder_allowed boolean nullabletenderer_class string nullablepublished_at integer nullablebid_opening_at integer nullabledocument_sale_start_at integer nullabledocument_sale_end_at integer nullableclarification_start_at integer nullableclarification_end_at integer nullablebid_submission_start_at integer nullablebid_submission_end_at integer nullableauction_type string nullableauction_elapse_interval_minutes integer nullableauction_auto_extension_minutes integer nullableauction_max_seal_percentage number nullableinviting_authority_name string nullableinviting_authority_address string nullablecreated_by string nullablecreated_by_designation string nullablecreated_at integer nullableonline_banks array (default: [])offline_instruments array (default: [])covers array (default: [])@type string (default: "CpppCover")number integer nullablecover_type string nullabledescription string nullabledocument_type string nullabledocuments array (default: [])@type string (default: "CpppDocument")section string nullableposition integer nullabledocument_type string nullablename string nullabledescription string nullablesize_kb number nullablecorrigenda array (default: [])@type string (default: "CpppCorrigendum")position integer nullablecorrigendum_type string nullableoid_documents array (default: [])@type string (default: "CpppOidDocument")position integer nullablecategory string nullablesub_category string nullabledescription string nullabledocument_format string nullableother_fields array (default: [])@type string (default: "CpppDetailField")label string requiredvalue string nullable422 — The request body did not validate Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — No live tender with that Tender ID on the selected portal Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.