# TEFAS API, KAP API and EVDS: Turkish fund and macro data

URL: https://fincodelabs.com/en/blog/tefas-kap-evds-data-apis · Publisher: Fincode (Fincode Yazılım ve Teknoloji A.Ş.), Istanbul, Turkey · Category: Fintech development · Published: 2026-10-25 · Updated: 2026-11-05

Is there a TEFAS API? Official access to Turkish fund, KAP disclosure and central bank EVDS data: endpoints, API keys, terms of use and data-quality traps.

**Short answer:** **TEFAS** has no public API: Takasbank's TEFAS FAQ says no API is shared and refers questions about the data Borsa Istanbul distributes to the exchange. KAP disclosures are available programmatically through the KAP Data Dissemination Services REST API of the Central Registry Agency (MKK), documented for data broadcasting organizations, and through Borsa Istanbul's licensed distributors, while the central bank's EVDS offers a documented web service with a free personal API key, as of October 2026.

Turkish fund prices, company disclosures and macroeconomic series come from three institutions with three access models. Searches for a TEFAS API, a KAP API or EVDS in Python mostly surface unofficial libraries; this guide maps the routes the operators themselves publish, with their terms and the data-quality issues that matter in production.

Everything here was checked on the operators' own sites on 25 October 2026. Scraping sites that offer no API is not covered as a method, because the operators do not offer it as one.

## Turkish fund, disclosure and macro data at a glance

Each source has a different owner and access model, so plan one adapter per source.

**Official access routes, as of October 2026**

| Source | Operator | Content | Programmatic access | Key terms |
| --- | --- | --- | --- | --- |
| TEFAS (tefas.gov.tr) | Takasbank | Fund prices, returns and portfolio data | No API; fund data products through Borsa Istanbul distributors | Published for financial literacy, accuracy not guaranteed |
| KAP (kap.org.tr) | MKK | Company, fund and regulator disclosures | MKK's KAP Data Dissemination Services REST API; KAP data in Borsa Istanbul packages | MKK-issued key, blocked disclosures must not be shown |
| EVDS (evds3.tcmb.gov.tr) | Central Bank of the Republic of Türkiye (TCMB) | Rates, exchange rates, prices, monetary and financial statistics | Web service with a personal API key | Cite the source, no extra fee to your users for the data |

## Is there a TEFAS API?

No: the TEFAS FAQ states that the platform's data is shared under its disclaimer to improve financial literacy and that no API is provided.

The same answer refers questions about data that Borsa Istanbul distributes to the exchange's marketing and sales directorate. Borsa Istanbul's data products include Takasbank content: investment fund, pension fund and investment trust holdings, TEFAS fund, founder and member information, and daily fund analyses of portfolio values, trading values and custody balances, delivered through licensed distributors under the agreement described in [Borsa Istanbul API and market data](https://fincodelabs.com/en/blog/borsa-istanbul-api-market-data).

The website itself is not built as a feed. Its FAQ says fund data is updated at intervals during the day, not in real time, and its disclaimer says Takasbank does not guarantee that the information is accurate, complete or current. For a product, budget for a licensed fund data feed; for funds' official documents and notices, use KAP.

## KAP API: MKK's KAP Data Dissemination Services

KAP has an official REST API: MKK's developer portal lists KAP Data Dissemination Services, documented for data broadcasting organizations, in addition to the KAP data carried in Borsa Istanbul's packages.

As published on the MKK API Portal in October 2026 (product last modified 10 September 2026):

- **Access:** open a portal account and, once it is approved, create an application, which generates an API key, and subscribe to the product; the portal lists a free plan throttled to 6 calls per minute. The documentation is written against a test host that needs no token, and it notes that the data returned is past-dated production data that can differ from the current KAP record.
- **Production:** exchange the API key MKK issues to you for a token with generateToken; each token is valid for 24 hours, and calls from an IP address MKK has not registered are refused (error ER003).
- **Services:** disclosures (the first 50 disclosures from a given disclosureIndex), disclosureDetail, downloadAttachment, lastDisclosureIndex, members, memberDetail, funds, fundDetail, memberSecurities, blockedDisclosures and caEventStatus for corporate action processes.
- **Classes:** financial reports (FR), material event disclosures (ODA), other disclosures (DG) and regulatory notices (DUY), with fund (FON) and corporate action (CA) types.

Two obligations stand out. Attachment links need a token and are closed to outside users, so attachments you show must be stored and served from your own system. And broadcasters must query blockedDisclosures regularly, show the stated reason and stop publishing those disclosures, which are generally closed under Turkey's personal data protection law. For occasional manual work, the KAP website exports up to 150 listed disclosures at a time to Word or Excel.

## EVDS API: the central bank's web service

EVDS, the central bank's Electronic Data Delivery System, has a documented web service: register on evds3.tcmb.gov.tr, copy your personal API key from your profile and send it in an HTTP header named `key`.

**EVDS web service parameters, as documented in October 2026**

| Parameter | Meaning |
| --- | --- |
| series | One or more series codes joined with a hyphen |
| startDate, endDate | Dates as dd-mm-yyyy; start on the first day of the target frequency |
| type | csv, xml or json |
| aggregationTypes | avg, min, max, first, last or sum, one per series |
| formulas | 0 level, 1 percentage change, 2 difference, 3 annual percentage change, through 8 moving total |
| frequency | 1 daily, 2 business day, 3 weekly, 4 bi-weekly, 5 monthly, 6 quarterly, 7 semi-annual, 8 annual |

A request returns at most 1,000 observations, counted back from the end date, and data is typically updated daily, so one pull a day is enough. Other services return all series in a data group, topic and data group metadata, and series lists. A request without the key header returned 403 Forbidden on 25 October 2026, as the guide describes, and the old evds2 address now redirects to EVDS3 (system version EVDS3-1.2.1). Inflation and interest rate series such as those behind the [Turkish lira inflation rate](https://fincodelabs.com/en/blog/turkish-lira-inflation-rate) are typical EVDS use cases.

The EVDS terms let third parties use and publish the data with the source cited; when it is used in another product, commercial or not, no additional fee may be charged to that product's users for it. Translations into languages other than Turkish and English must be marked as unofficial, and TCMB may set query or connection limits without notice. EVDS also runs an MCP service for AI clients under its own conditions.

## Python example: KAP disclosures and an EVDS request

The sketch processes a saved sample shaped like the documented KAP API fields, then builds an EVDS request without sending it, because both live calls need your own credentials.

```python
import json, os

# Saved sample: records combining documented fields of the KAP API's
# disclosures and disclosureDetail responses (synthetic values)
sample = json.loads("""[
 {"disclosureIndex": "1500001", "disclosureType": "ODA", "title": "SAMPLE HOLDING A.S.",
  "DisclosureReason": "NEW"},
 {"disclosureIndex": "1500002", "disclosureType": "FON", "title": "SAMPLE PORTFOY A.S.",
  "fundCode": "XYZ", "DisclosureReason": "NEW"},
 {"disclosureIndex": "1500001", "disclosureType": "ODA", "title": "SAMPLE HOLDING A.S.",
  "DisclosureReason": "NEW"},
 {"disclosureIndex": "1500003", "disclosureType": "ODA", "title": "SAMPLE HOLDING A.S.",
  "DisclosureReason": "CORR", "relatedDisclosureIndex": "1500001"}
]""")
blocked = {"1500002"}                  # ids returned by blockedDisclosures

store = {}
for d in sample:
    if d["disclosureIndex"] in blocked or int(d["disclosureIndex"]) in store:
        continue                       # never show blocked items or duplicates
    store[int(d["disclosureIndex"])] = d

for idx, d in sorted(store.items()):
    link = f" -> corrects {d['relatedDisclosureIndex']}" if "relatedDisclosureIndex" in d else ""
    print(idx, d["disclosureType"], d["DisclosureReason"] + link)
last_seen = max(int(d["disclosureIndex"]) for d in sample)
print("next call: disclosureIndex =", last_seen + 1)

def evds_request(series, start, end, fmt="json"):
    url = ("https://evds3.tcmb.gov.tr/igmevdsms-dis/"
           f"series={'-'.join(series)}&startDate={start}&endDate={end}&type={fmt}")
    return url, {"key": os.environ.get("EVDS_API_KEY", "")}   # key goes in the header

url, headers = evds_request(["TP.DK.USD.A.YTL"], "01-10-2026", "23-10-2026")
print(url)
# requests.get(url, headers=headers, timeout=30)  -> needs your own EVDS key
```

Output:

```
1500001 ODA NEW
1500003 ODA CORR -> corrects 1500001
next call: disclosureIndex = 1500004
https://evds3.tcmb.gov.tr/igmevdsms-dis/series=TP.DK.USD.A.YTL&startDate=01-10-2026&endDate=23-10-2026&type=json
```

The KAP part skips blocked and duplicate disclosures, links a correction to the disclosure it corrects through relatedDisclosureIndex, and takes the next disclosureIndex from the highest index seen, even when that item was skipped. The EVDS part reads the key from an environment variable and sends it as a header, never in the URL or in logs. The KAP production gateway and credentials come with your MKK portal account, so they are not shown.

## Data quality: price dates, valör, corrections and revisions

Each source has its own traps, and most production bugs come from dates rather than prices.

- **TEFAS prices come from fund founders.** Until a founder reports to Takasbank, the platform shows a price of 0, and its FAQ suggests checking after 10:30. Treat zero as missing, never as a value.
- **Valör, the settlement lag.** Each fund's buy and sell value dates are set by its founder; TEFAS offers a valör calculator and KAP carries every fund's settlement terms, so returns by price date can differ from an investor's cash flows.
- **Reclassification.** The TEFAS disclaimer says historical analyses use each fund's current title, category and type, which may differ from earlier periods; store classifications with effective dates.
- **KAP corrections.** DisclosureReason distinguishes new (NEW), update (UPD), correction (CORR) and process cancellation (CANC) notices, linked by relatedDisclosureIndex, and DisclosureDelayStatus flags deferred disclosures. Disclosures numbered below 538004 predate KAP 4.0 and come only as HTML.
- **EVDS revisions.** Data group metadata from the datagroups service includes a revision policy link, so re-pull recent history instead of only appending the newest point.

> **Example from the EVDS guide:** annual averages of the US dollar selling rate (series TP.DK.USD.S.YTL) requested from 01-01-2005 include 2005, but the same request from 02-01-2005 starts with 2006, because a converted period is only returned when the start date is its first day.

The [Fiva fund return estimate platform](https://fincodelabs.com/en/projects/fiva-fund-return-estimate-platform) case study describes the engineering behind daily fund data, and the [KAP disclosure alert bot](https://fincodelabs.com/en/projects/kap-disclosure-alert-bot) scenario covers deduplication and corrections in an alerting product.

## Terms of use: what each operator allows

Use the published channels, keep the attribution and treat each operator's terms as part of the specification.

- **TEFAS:** no API, information published for financial literacy, no accuracy guarantee; licensed fund data comes through Borsa Istanbul.
- **KAP:** production access through MKK's portal with an MKK-issued key, attachments served from your own store, blocked disclosures removed; KAP data inside Borsa Istanbul packages follows the Data Distribution Agreement.
- **EVDS:** free with registration, source citation, no extra fee to your users for the data, a translation notice for other languages, limits that can change without notice.

Scraping pages that offer no API, or redistributing data outside these terms, ignores rights the operators reserve and breaks without warning when pages change. None of the three operators guarantees its data or presents it as investment advice, so products built on it need their own disclaimers. [Fiva](https://fincodelabs.com/en/fiva) is one example of an app that combines fund, disclosure and macro data.

## Frequently asked questions

### Does TEFAS have an official API?

No. The TEFAS FAQ says no API is shared because the data is published to improve financial literacy, and it refers questions about data distributed by Borsa Istanbul to the exchange's marketing and sales directorate.

### Is there an official KAP API?

Yes. MKK's API portal lists KAP Data Dissemination Services, a REST API with a test environment and token-based production access using an MKK-issued API key. KAP data is also included in Borsa Istanbul's licensed data packages.

### How do I get an EVDS API key?

Register as a member on evds3.tcmb.gov.tr, open your profile and copy the API key. Send it in the HTTP header named key; requests without it return 403 Forbidden.

### Can I use EVDS data in a commercial app?

The EVDS terms allow third parties to use and publish the data with the source cited, but no additional fee may be charged to a product's users for it. Check the current terms before launch.

### Why does a TEFAS fund price show as zero?

The fund founder has not yet reported the price to Takasbank. The TEFAS FAQ suggests checking again after 10:30, and software should treat zero as missing data.

## Sources

- [TEFAS: Frequently asked questions, including API access (Turkish)](https://www.tefas.gov.tr/tr/sss)
- [Borsa Istanbul: Data publication products, including Takasbank and MKK content (Turkish)](https://www.borsaistanbul.com/veriler/veri-yayini/veri-yayin-urunleri)
- [MKK API Portal: API list](https://apiportal.mkk.com.tr/products)
- [MKK API Portal: KAP Data Dissemination Services documentation (Turkish)](https://apiportal.mkk.com.tr/products/6765bc408e6d51715bccf5a5/detail)
- [MKK API Portal: FAQ](https://apiportal.mkk.com.tr/faq)
- [MKK: Fintech Catalog (September 2025), KAP data distribution channels](https://www.mkk.com.tr/sites/default/files/2025-09/MKK-Fintech-Catalog.pdf)
- [KAP: Website guide, bulk download of listed disclosures (Turkish)](https://www.kap.org.tr/tr/api/about/content-file/402832a195b3017d0195bd17e2e07e9a)
- [CBRT EVDS: Web Service and API Usage guide](https://evds3.tcmb.gov.tr/igmevdsms-dis/documents/showDocument?docId=16)
- [CBRT EVDS: Python guide](https://evds3.tcmb.gov.tr/igmevdsms-dis/documents/showDocument?docId=13)
- [CBRT EVDS: Terms of Use](https://evds3.tcmb.gov.tr/igmevdsms-dis/documents/showDocument?docId=21)
- [CBRT: EVDS3 Electronic Data Delivery System](https://evds3.tcmb.gov.tr/)

> This guide is general information about software and markets, not investment, legal or tax advice. Automated trading can lose money, past or backtested performance does not guarantee future results, and the rules that apply depend on your jurisdiction and your exchange's terms. Sources, checks and corrections: see the [editorial policy](https://fincodelabs.com/en/editorial-policy).

---

Published by Fincode (Fincode Yazılım ve Teknoloji A.Ş.), a software company in Istanbul, Turkey: https://fincodelabs.com/en/blog/tefas-kap-evds-data-apis

Cite as: Fincode, "TEFAS API, KAP API and EVDS: Turkish fund and macro data", updated November 5, 2026, https://fincodelabs.com/en/blog/tefas-kap-evds-data-apis
