Discover/Gov API
live

Gov APIekapv2.kik.gov.tr

Search 2 million Turkish public tenders on EKAP, retrieve full tender details, notices, CPV items, and filter vocabularies for all 81 provinces.

Endpoint health
verified 3h ago
search_tenders
get_tender_details
list_filter_options
3/3 passing latest checkself-healing
Endpoints
3
Updated
3h ago

What is the Gov API?

This API exposes Turkey's EKAP public procurement platform across 3 endpoints, covering roughly 2 million tenders dating back to 2002. Use search_tenders to filter the catalogue by province, status, free-text query, or tender registration number (IKN), then call get_tender_details to retrieve the full record including CPV classifications, published notices with full text, contracting authority contacts, and signed contracts.

This call costs3 credits / call— charged only on success
Try it
Exact tender registration number (İhale Kayıt Numarası) in the form YYYY/NNNNNN, as returned in results[*].ikn.
1-based page number.
Result ordering.
Free-text search matched against tender titles (e.g. bilgisayar).
Results per page; values above 100 are clamped to 100.
Comma-separated tender status ids from list_filter_options.statuses[*].id (e.g. 2,3). The scraper splits on commas — do NOT pass an array. Omitted = all statuses.
Procurement category filter. Omitted = all categories.
Comma-separated province ids from list_filter_options.provinces[*].id (e.g. 251,284). The scraper splits on commas — do NOT pass an array. Omitted = all provinces.
Latest notice publication date, ISO date YYYY-MM-DD, inclusive.
Latest tender (bid opening) date, ISO date YYYY-MM-DD, inclusive.
Earliest notice publication date, ISO date YYYY-MM-DD, inclusive.
Earliest tender (bid opening) date, ISO date YYYY-MM-DD, inclusive.
api.parse.bot/scraper/6a305a6d-0eb9-4eea-b9e7-df88af84fd81/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/6a305a6d-0eb9-4eea-b9e7-df88af84fd81/search_tenders?sort=tender_date_desc&query=bilgisayar&tender_type=goods' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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 ekapv2-kik-gov-tr-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: EKAP public tenders — search, drill into details, list filters."""
from parse_apis.ekapv2_kik_gov_tr_api import (
    Ekap, SortOrder, TenderType, TenderNotFound,
)

client = Ekap()

# Search for goods tenders matching a keyword, newest first.
for summary in client.tender_summaries.search(
    query="bilgisayar",
    tender_type=TenderType.GOODS,
    sort=SortOrder.TENDER_DATE_DESC,
    limit=5,
):
    print(summary.ikn, summary.title, summary.province)

# Drill into the first result's full details.
hit = client.tender_summaries.search(query="bilgisayar", limit=1).first()
if hit is not None:
    try:
        tender = hit.details()
    except TenderNotFound:
        print("Tender expired or not found:", hit.ikn)
    else:
        print(tender.title, tender.tender_datetime)
    print("Electronic:", tender.is_electronic, "Partial bids:", tender.allows_partial_bids)
    print("Authority:", tender.contracting_authority.name, tender.contracting_authority.province)
    for cpv in tender.cpv_items:
        print("  CPV", cpv.code, cpv.name)
    for notice in tender.notices:
        print("  Notice:", notice.title, notice.published_date)

# List available filter vocabularies for building richer searches.
filters = client.filter_options.get()
for status in filters.statuses[:3]:
    print(status.id, status.name, status.name_en)
for province in filters.provinces[:3]:
    print(province.id, province.name)

print("exercised: tender_summaries.search / details / filter_options.get")
All endpoints · 3 totalmissing one? ·

Searches the EKAP tender catalogue (about 2 million tenders since 2002) and returns one page of tender summaries plus the total match count. Every filter is optional; with none given the whole catalogue is returned sorted by tender date, newest first. Free-text query matches tender titles as typed. Filters can be combined (type, status, province, tender-date window, notice-date window, exact IKN). Paging is caller-controlled through page (1-based, default 1) and page_size (default 20, values above 100 are clamped to 100); has_more tells whether a further page exists. Labels (status, procedure, tender_type) are returned in Turkish. tender_id values are opaque site tokens that are valid for the detail lookup; they are re-minted on each search, so do not compare them across calls — use ikn as the stable tender identity. One round trip plus a short human-verification handshake per call.

Input
ParamTypeDescription
iknstringExact tender registration number (İhale Kayıt Numarası) in the form YYYY/NNNNNN, as returned in results[*].ikn.
pageinteger1-based page number.
sortstringResult ordering.
querystringFree-text search matched against tender titles (e.g. bilgisayar).
page_sizeintegerResults per page; values above 100 are clamped to 100.
status_idsstringComma-separated tender status ids from list_filter_options.statuses[*].id (e.g. 2,3). The scraper splits on commas — do NOT pass an array. Omitted = all statuses.
tender_typestringProcurement category filter. Omitted = all categories.
province_idsstringComma-separated province ids from list_filter_options.provinces[*].id (e.g. 251,284). The scraper splits on commas — do NOT pass an array. Omitted = all provinces.
advert_date_tostringLatest notice publication date, ISO date YYYY-MM-DD, inclusive.
tender_date_tostringLatest tender (bid opening) date, ISO date YYYY-MM-DD, inclusive.
advert_date_fromstringEarliest notice publication date, ISO date YYYY-MM-DD, inclusive.
tender_date_fromstringEarliest tender (bid opening) date, ISO date YYYY-MM-DD, inclusive.
Response
{
  "type": "object",
  "fields": {
    "page": "integer, the page returned",
    "total": "integer, total tenders matching the filters across all pages",
    "results": "array of tender summaries: tender_id (opaque detail key), ikn (stable registration number), title, tender_type_code/tender_type (1 Mal=goods, 2 Yapım=works, 3 Hizmet=services), procedure, procedure_sub_clause, exception_procedure, status_code/status, contracting_authority, province, tender_datetime (DD.MM.YYYY HH:MM, Turkey local time), has_notice, document_count",
    "has_more": "boolean, whether page+1 exists",
    "page_size": "integer, effective page size after clamping"
  },
  "sample": {
    "data": {
      "page": 1,
      "total": 13454,
      "results": [
        {
          "ikn": "2026/1637364",
          "title": "Makine-Teçhizat, Laboratuvar Cihazları ile Bilgisayar ve Diğer Ekipmanların Alınımı",
          "status": "İhale İlanı Yayımlanmış, Katılıma Açık",
          "province": "NİĞDE",
          "procedure": "İhale Usulü: Açık",
          "tender_id": "f67201be58c9522a8be57548730d7b9d0477b754b9ed17db9052a16b77b36a29",
          "has_notice": true,
          "status_code": "2",
          "tender_type": "Mal",
          "document_count": 0,
          "tender_datetime": "02.10.2026 10:30",
          "tender_type_code": "1",
          "exception_procedure": null,
          "procedure_sub_clause": null,
          "contracting_authority": "NİĞDE ÖMER HALİSDEMİR ÜNİVERSİTESİ REKTÖRLÜĞÜ İDARİ VE MALİ İŞLER DAİRE BAŞKANLIĞI"
        }
      ],
      "has_more": true,
      "page_size": 5
    },
    "status": "success"
  }
}

About the Gov API

What the API covers

The EKAP API surfaces Turkey's central public procurement registry, operated by the Public Procurement Authority (KİK). The search_tenders endpoint queries roughly 2 million tenders since 2002 and returns paginated summaries — each result includes an ikn (İhale Kayıt Numarası in YYYY/NNNNNN format), title, tender_type, status, and an opaque tender_id used to fetch full records. Page size is capped at 100 per request.

Filtering and vocabularies

Filters on search_tenders are all optional and combinable: query matches tender titles, province_ids accepts comma-separated integers from the provinces array in list_filter_options, and status_ids narrows by tender lifecycle stage. The list_filter_options endpoint returns every vocabulary the search accepts in one call: 81 provinces with their IDs, tender statuses with Turkish and English labels, offer types, advert (notice) types, sort keys, and the three top-level tender_types. Resolve IDs here before constructing search requests.

Tender detail records

get_tender_details takes the tender_id from a search result and returns the complete public record. Key fields include procedure, legal_scope (e.g. "4734 Kapsamında"), cpv_items (CPV/OKAS classification codes and names), a notices array with each notice's title, published_date, notice_text, and notice_html, a features array of flag keys such as TENDER_DETAIL.E_IHALE, and a contracts array that populates once a contract is signed. Cancellation information is included when the tender status reflects cancellation.

Coverage notes

All data reflects what is publicly published on EKAP. Tender records span procurement under Turkish law 4734 and related legislation. Notice text is available in Turkish as rendered on the platform. The status_code field in detail responses matches the id values in list_filter_options.statuses, making it straightforward to map statuses across endpoints.

Reliability & maintenanceVerified

The Gov API is a managed, monitored endpoint for ekapv2.kik.gov.tr — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ekapv2.kik.gov.tr 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 ekapv2.kik.gov.tr 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.

Last verified
3h ago
Latest check
3/3 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Monitor newly published tenders in a specific province by polling search_tenders with province_ids filtered to a target region.
  • Build a tender alert system that checks for status changes on tracked ikn values using get_tender_details.
  • Aggregate CPV/OKAS category data from cpv_items to analyze procurement spending patterns by sector.
  • Retrieve full notice texts from the notices array in get_tender_details to track amendments or cancellation notices.
  • Cross-reference signed contract records from contracts with original tender data to study award outcomes.
  • Populate a localized UI with Turkish and English status labels sourced from list_filter_options.statuses.
  • Identify e-tender opportunities by filtering features for the TENDER_DETAIL.E_IHALE flag across search results.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does EKAP have an official developer API?+
KİK does not publish a documented public developer API for EKAP. The platform at ekapv2.kik.gov.tr is intended for browser-based use; no officially documented REST or SOAP API for third-party integration is listed on their site.
What does `get_tender_details` return beyond what `search_tenders` includes?+
search_tenders returns summary fields: ikn, title, tender_type, status, and tender_id. get_tender_details adds CPV/OKAS items (cpv_items), the full notices array (each with notice_text and notice_html), procedure, legal_scope, contracting authority contact details, a features flag array, signed contracts, and cancellation information when applicable.
Can I retrieve tender documents or attached files through this API?+
Not currently. The API returns notice text and HTML as published in the EKAP record, but binary attachments or downloadable tender document files are not exposed as fields. You can fork this API on Parse and revise it to add an endpoint targeting document download references if they appear in the notice records.
How does pagination work in `search_tenders`?+
Results are returned one page at a time. The page parameter is 1-based, page_size values above 100 are clamped to 100, and the response includes a total count of all matching tenders and a has_more boolean indicating whether a next page exists. With no filters applied, results are sorted newest-first by tender date.
Does the API cover tenders under all Turkish procurement laws, including defence or concession contracts outside law 4734?+
The API reflects what EKAP publishes publicly. The legal_scope field in get_tender_details indicates the applicable legal framework (e.g. "4734 Kapsamında"), but procurement processes conducted outside EKAP's public registry — such as certain defence or utilities contracts — are not represented. You can fork this API on Parse and revise it to target any supplementary KİK data sources that cover those categories.
Page content last updated . Spec covers 3 endpoints from ekapv2.kik.gov.tr.
Related APIs in Government PublicSee all →
zakazky.gov.cz API
Search and access detailed information about Czech public procurement tenders from Zakázky GOV, including AI-generated summaries of tender documentation to quickly understand project requirements and opportunities. Find the right procurement opportunities by browsing aggregated tenders and reviewing their complete details all in one place.
evergabe-online.de API
Search and retrieve public tender opportunities from Germany's e-Vergabe platform by keywords, contract types, CPV codes, and publication dates. Access detailed tender information and discover the latest procurement opportunities across construction and other sectors.
tenders.gov.uk API
Search and access UK government public procurement notices, tenders, and contract opportunities in real-time, with the ability to retrieve detailed notice information and browse standardized classification codes. Get comprehensive procurement data in structured formats to analyze tender patterns and find relevant contracting opportunities.
eprocurement.gov API
Monitor India's public procurement opportunities by accessing active tenders, bids closing today, global tenders, high-value contracts, and cancelled tenders from the Central Public Procurement Portal. Search tender details, browse participating organizations, and track real-time procurement statistics to stay informed on government contracting opportunities.
tenders.etimad.sa API
Browse and search all public Saudi government tenders from the Etimad platform with detailed information including tender specifications and awarding results. Stay updated on procurement opportunities by accessing tender details and award outcomes in one centralized location.
eproc2.bihar.gov.in API
Access live tender listings from the Bihar Government e-Procurement portal to search and filter government contracts by department, status, and keywords. Get detailed tender information including specifications and deadlines, plus browse the complete directory of participating government departments.
licitacoes-e.com API
Search and analyze Brazilian public tenders from Banco do Brasil, including filtering by buyer and tender status to find procurement opportunities. Get detailed information about specific tenders to track bids, deadlines, and procurement details.
tenders.gov.in API
Search and monitor current government tenders from India's Central Public Procurement Portal and GePNIC systems, filtering by organizations and accessing detailed tender information. Stay updated on the latest procurement opportunities and bids from Indian government agencies in one centralized location.