bdtender.com APIbdtender.com ↗
Access live tender listings, categories, organizations, and locations from BDTender.com via 8 endpoints. Filter by date, type, district, and category.
curl -X POST 'https://api.parse.bot/scraper/7d257fbc-af8e-4f78-8464-7c2e39b12b26/search_tenders' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"page": 1,
"query": "road"
}'Search for tenders using keywords and filters. Returns a paginated list of tenders with basic details including tender code, work description, dates, source, and advertisement types. Organization, location, and category names are restricted to authenticated users on the target site.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination |
| query | string | Search keyword or tender ID |
| date_to | string | Filter to date in DD/MM/YYYY format |
| adv_type | string | Advertisement type: 'Goods', 'Works', or 'Services' |
| category | string | Category ID from get_categories endpoint (e.g. 'T1', 'T2') |
| location | string | Location ID from get_locations endpoint (e.g. 'DDist-02') |
| date_from | string | Filter from date in DD/MM/YYYY format |
| organization | string | Organization ID from get_organizations endpoint (e.g. 'DG62') |
{
"type": "object",
"fields": {
"data": "array of tender objects with tendercode, workdesc, issudate, tsubmissiondate, status, tendersource, advertisement_types, categories, organizations, locations",
"total": "integer total number of matching tenders",
"last_page": "integer total number of pages",
"current_page": "integer current page number"
},
"sample": {
"data": {
"data": [
{
"status": "",
"issudate": "07/05/2026",
"workdesc": "A# Widening and Strengthening of Road. B# Rehabilitation of Road by RCC.",
"locations": [
"Login to view"
],
"categories": [
"Login to view"
],
"tendercode": "11517365",
"tendersource": "The Daily Dinkal",
"organizations": [
"Login to view"
],
"tsubmissiondate": "04/06/2026",
"advertisement_types": [
"Works"
]
}
],
"total": 8316,
"last_page": 832,
"current_page": 1
},
"status": "success"
}
}About the bdtender.com API
The BDTender API exposes 8 endpoints covering tender listings, categories, organizations, locations, and site statistics from Bangladesh's largest tender portal. The search_tenders endpoint accepts filters for advertisement type, category ID, location ID, organization ID, and date range, returning paginated results with tender codes, work descriptions, issue dates, submission deadlines, and source publications.
Tender Search and Filtering
The search_tenders endpoint is the primary way to query the tender database. It accepts a query string for keyword or tender ID lookup, a date_from and date_to range in DD/MM/YYYY format, and discrete filter parameters — adv_type (one of Goods, Works, or Services), category (a category ID such as T1), location (a district ID such as DDist-02), and organization (an org ID such as DG62). Each result in the data array includes tendercode, workdesc, issudate, tsubmissiondate, status, tendersource, and advertisement_types. Pagination is handled via the page parameter; the response always includes total, last_page, and current_page.
Reference Data Endpoints
Three hierarchy endpoints provide the valid ID values needed for filtering. get_categories returns a tree of category objects, each with id, parent, and text fields. get_organizations returns the same structure for government departments and procuring entities. get_locations returns the same structure for districts and divisions. Passing these IDs directly into search_tenders narrows results to a specific sector, agency, or geographic area.
Live Tenders and Daily Feed
get_live_tenders returns all currently open tenders in the same paginated format as search_tenders but with no query filter applied — useful for building a full snapshot of active opportunities. get_tenders_published_today further narrows to tenders issued on the current calendar date in Bangladesh time (UTC+6). get_site_statistics returns four headline counts: Live Tenders, Private Tenders, Corrigendum, and Published Today — suitable for dashboards or alerting pipelines.
Data Availability Notes
Organization names, location names, and category names are restricted to authenticated users on BDTender.com and are not returned by this API. The get_tender_detail endpoint retrieves basic listing data for a single tender by tender_id and includes a note field confirming that full descriptions and document attachments require site authentication. The available fields — tendercode, workdesc, issudate, tsubmissiondate, status, tendersource, and advertisement_types — are sufficient for tracking, deduplication, and routing workflows.
- Monitor all tenders published today in Bangladesh using
get_tenders_published_todayto trigger daily email digests. - Filter open tenders by district using location IDs from
get_locationsto surface region-specific procurement opportunities. - Track live tender counts and corrigendum volumes over time using
get_site_statisticsfor procurement analytics dashboards. - Narrow tender searches to a specific government department by passing organization IDs from
get_organizationsintosearch_tenders. - Build a sector-specific tender feed by filtering
search_tenderswith category IDs fromget_categoriesandadv_typeset toWorksorGoods. - Deduplicate or cross-reference tender records by looking up individual entries via
get_tender_detailusing their uniquetendercode. - Aggregate submission deadline distributions from
tsubmissiondatefields acrossget_live_tenderspages for procurement lead-time analysis.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does BDTender.com have an official developer API?+
What does `get_tender_detail` return, and why is some data missing?+
tendercode, workdesc, issudate, tsubmissiondate, status, tendersource, and advertisement_types — plus a note field explaining authentication restrictions. Full tender descriptions, document attachments, and named organization/location labels require a logged-in session on BDTender.com and are not available through this API.How do I use category, organization, and location filters correctly?+
search_tenders requires an ID value, not a plain name. Call get_categories, get_organizations, or get_locations first to retrieve the tree of objects with id, parent, and text fields. Pass the id value (e.g. T1, DG62, DDist-02) into the corresponding parameter.Does the API return the names of organizations and locations in search results?+
data array in search_tenders and get_live_tenders results includes IDs and codes but not resolved display names for those fields. You can fork this API on Parse and revise it to add name resolution if you have authenticated access.Are corrigendum (amendment) notices returned as separate tender records?+
get_site_statistics endpoint reports a Corrigendum count, but search_tenders and get_live_tenders do not currently expose a dedicated corrigendum filter or a separate corrigendum listing endpoint. You can fork this API on Parse and revise it to add a corrigendum-specific endpoint if that data is required.