Gov APImof.gov.ae ↗
Access current UAE federal government open tenders from mof.gov.ae. Filter by ministry or keyword, get reference numbers, dates, and issuing entities.
What is the Gov API?
The mof.gov.ae API exposes 1 endpoint — list_tenders — that returns current open procurement opportunities published on the UAE Ministry of Finance Digital Procurement Platform. Each tender record includes at least 6 fields: title, reference number, issuing entity, description, opening date, and closing date. You can filter by keyword or ministry name and retrieve results across all pages in a single call.
curl -X POST 'https://api.parse.bot/scraper/810051b8-fbf3-4b8c-aa07-526172b7ad90/list_tenders' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"page": "1"
}'Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace mof-gov-ae-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: UAE MOF Procurement SDK — bounded, re-runnable; every call capped."""
from parse_apis.mof_gov_ae_api import MofUae, Tender, ParseError
client = MofUae()
# List current open tenders, capped at 3 items total.
for tender in client.tenders.list(limit=3):
print(tender.title, tender.rfq_number, tender.entity)
# Search for a specific keyword.
result = client.tenders.list(search="Security", limit=1).first()
if result:
print(result.title, result.description, result.detail_url)
# Filter by ministry.
try:
for t in client.tenders.list(ministry="Ministry of Finance - (112/996)", limit=3):
print(t.title, t.open_date, t.close_date)
except ParseError as e:
print(f"Error: {e}")
print("exercised: tenders.list")
Retrieves current open procurement opportunities (tenders) from UAE federal government entities. Supports keyword search and ministry filtering. Results are auto-iterated across all pages. Each tender includes title, reference number, issuing entity, description, open/close dates, and a link to the official procurement portal.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (1-based). When 0 or omitted, all pages are fetched and combined. |
| search | string | Keyword to search across tender titles and descriptions. |
| ministry | string | Filter by ministry/entity name. Must match a value from the site's ministry dropdown (e.g. 'Ministry of Finance - (112/996)'). Empty string returns all ministries. |
{
"type": "object",
"fields": {
"page": "current page number (integer)",
"status": "overall category, always 'open'",
"tenders": "array of tender objects",
"has_next": "whether more pages exist (boolean)"
},
"sample": {
"data": {
"page": 1,
"status": "open",
"tenders": [
{
"title": "Security Operations Center NMA",
"entity": "National Media Authority",
"status": "Open",
"category": null,
"open_date": "29/07/2026 2:56:53 PM",
"close_date": "25/08/2026 3:15:00 PM",
"detail_url": "https://procurement.gov.ae/page.aspx/en/bpm/process_manage_extranet/11878",
"rfq_number": "11878",
"description": "The National Media Authority currently maintains a mature cybersecurity environment."
}
],
"has_next": true
},
"status": "success"
}
}About the Gov API
What the API Returns
The list_tenders endpoint returns active procurement opportunities listed on the UAE Federal Government's Digital Procurement Platform. Each object in the tenders array includes the tender title, a unique reference number, the name of the issuing government entity, a description of the procurement scope, and both the open and close dates. The top-level response also carries a status field (always 'open'), the current page number, and a has_next boolean indicating whether additional pages exist.
Filtering and Pagination
The endpoint accepts three optional inputs. The search parameter applies a keyword filter across tender titles and descriptions. The ministry parameter narrows results to a specific federal entity — the value must match an entry from the platform's official ministry dropdown (for example, 'Ministry of Finance'). Pagination is controlled via the page parameter (1-based); setting it to 0 or omitting it entirely triggers automatic iteration across all pages, returning a merged result set in one response.
Coverage and Freshness
Results reflect the current state of open tenders on the UAE Ministry of Finance procurement portal. Only tenders with status: 'open' are returned — awarded, cancelled, or closed tenders are not included in the response. Coverage is limited to federal-level procurement entities listed on the platform; emirate-level or free-zone procurement portals are outside scope.
The Gov API is a managed, monitored endpoint for mof.gov.ae — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when mof.gov.ae changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official mof.gov.ae API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor new UAE federal government tenders matching a supplier's service category using the
searchparameter - Build a procurement alert system that flags tenders from a specific ministry by filtering with the
ministryparameter - Track tender closing dates to prioritize bid submissions before deadlines
- Aggregate all open federal tenders into an internal procurement dashboard by fetching all pages in one call
- Cross-reference tender reference numbers against internal CRM records to avoid duplicate bid tracking
- Analyze which federal entities are issuing the most active procurement opportunities over time
| 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 | 100 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 mof.gov.ae provide an official developer API for procurement data?+
What does `list_tenders` return, and how do I filter results to a single ministry?+
ministry value that matches the entity name as it appears in the platform's ministry dropdown — for example, 'Ministry of Finance' or 'Ministry of Health and Prevention'. Partial or mismatched strings may return no results.Does the API return closed, awarded, or cancelled tenders?+
status field is always 'open', and only currently active tenders are returned. Historical or awarded procurement records are not exposed. You can fork this API on Parse and revise it to target the platform's closed-tender or awarded-contract pages if you need that historical data.Does the API cover emirate-level or free-zone procurement portals such as Dubai Tenders or Abu Dhabi procurement?+
How should I handle pagination when fetching all open tenders?+
page to 0 or omitting it causes the API to automatically iterate through all available pages and return a combined result. If you need incremental or page-by-page access — for example, to detect newly added tenders — pass an explicit page integer (1-based) and check the has_next boolean to determine whether subsequent pages exist.