Skip to main content

Documentation Index

Fetch the complete documentation index at: https://demircancelebi.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

The portfolio entries endpoint exposes the normalized holdings data extracted from fund disclosure PDFs. The MKK dataset distinguishes between two representations of portfolio data: portfolio rows are the raw table rows extracted directly from each PDF, while portfolio entries are those rows after normalization — with numeric fields parsed, currencies resolved, and security identifiers cleaned. You should use portfolio entries for analytical work. Portfolio rows are available on the document detail endpoint when you need to inspect the raw source.

Endpoints

MethodPathDescription
GET/portfolio-entriesList normalized portfolio holdings with filtering and pagination
Base URL: https://mkk-roan.vercel.app/api

GET /portfolio-entries

Returns a paginated list of normalized portfolio entries across all documents, filtered by any combination of fund, period, section, or security.

Query parameters

fund_id
string
Filter to entries from documents belonging to the fund with this internal ID.
fund_code
string
Filter to entries from documents belonging to the fund with this fund code (e.g., OJB).
period
string
Filter to entries from documents for this reporting period in YYYY-MM format.
document_id
integer
Filter to entries from a specific document by its numeric ID.
section
string
Filter to entries belonging to a specific portfolio section label (e.g., Devlet İç Borçlanma Senetleri). This matches against the raw section label as it appears in the portfolio table.
q
string
Free-text search across security names, ISIN codes, and issuer names.
limit
integer
default:"100"
Maximum number of entries to return. Accepts values from 1 to 500.
offset
integer
default:"0"
Number of entries to skip before returning results. Use with limit to paginate through large result sets.

Response schema

total
integer
required
Total number of portfolio entries matching the applied filters.
limit
integer
required
The effective limit applied to this response.
offset
integer
required
The effective offset applied to this response.
portfolio_entries
PortfolioEntry[]
required
Array of normalized portfolio entry objects.
For numeric aggregations (totals, averages, portfolio weights), use the numeric_* fields (e.g., numeric_market_value) rather than the raw string fields. The raw string fields preserve the original format from the PDF and may contain formatting characters.

Error responses

StatusDescription
400Invalid parameter value (e.g., limit out of range).

Example requests

curl "https://mkk-roan.vercel.app/api/portfolio-entries?fund_code=OJB&limit=50"

Example response

200
{
  "total": 14320,
  "limit": 50,
  "offset": 0,
  "portfolio_entries": [
    {
      "id": "pe_00001",
      "document_id": 1042,
      "disclosure_index": "2023-TR-00012345",
      "file_name": "OJB_202306.pdf",
      "fund_code": "OJB",
      "fund_title": "Oyak Jinsi Bono Fonu",
      "period": "2023-06",
      "section": "Devlet İç Borçlanma Senetleri",
      "security": "TURKIYE CUMHURIYETI 15.03.2026",
      "isin": "TR0000000001",
      "issuer": "Hazine ve Maliye Bakanlığı",
      "bank": null,
      "maturity_date": "15.03.2026",
      "transaction_date": null,
      "price": "98,75",
      "numeric_price": 98.75,
      "transaction_value": null,
      "numeric_transaction_value": null,
      "nominal_value": "10.000.000",
      "numeric_nominal_value": 10000000.0,
      "market_value": "9.875.000",
      "numeric_market_value": 9875000.0,
      "rate": "18,50",
      "numeric_rate": 18.5,
      "amount": null,
      "numeric_amount": null,
      "currency": "TRY",
      "raw_row": { "Menkul Kıymet": "TURKIYE CUMHURIYETI 15.03.2026", "ISIN": "TR0000000001" },
      "columns": ["Menkul Kıymet", "ISIN", "Nominal Değer", "Piyasa Değeri", "Faiz Oranı"]
    }
  ]
}