ilovepsxAPI
Build with the API / Choose with evidence

Pakistan Mutual Fund Data APIs Compared: Access, Coverage and Limits

Compare Pakistan fund APIs and datasets using documented access, prices, NAV dates, portfolio depth and a reproducible evaluation checklist.

On this page

A Pakistan mutual fund API should fit the research or product you are building. A NAV chart, a portfolio research screen and an AI evidence layer need different facts. Comparing providers by a single price or fund count can hide the differences that determine whether an integration actually works.

This comparison is written by ILovePSX, one of the services discussed. Public provider documentation was reviewed on 9 October 2026; authenticated competitor requests, uptime benchmarks and complete production coverage audits were not performed. The tables distinguish documented offers from questions that still need a test or a quotation.

The useful part, upfront.

  • Compare the required fields, reporting periods and identity rules before comparing price.
  • A documented capability is evidence of an offer, not proof of complete available data.
  • Free access, open-source software and permission to redistribute source data are separate questions.

Start with the task and disclose the evidence#

Write a short requirement before opening a pricing page. Specify the fund cohort, needed NAV dates, report periods, portfolio sections and whether the output stays internal or is shown in a customer product. This turns an attractive headline into a testable integration decision.

Our review uses ILovePSX's public contract and current access policy, Capital Stake's product pages and general REST quickstart, PakDataHub's fund guide and pricing, and the Saad Salman API and dataset repositories. Provider descriptions are their own claims. A failed documentation fetch is a review limitation, not proof that a provider lacks the associated data.

For Capital Stake, the mutual-fund introduction linked from its site returned 404 during this review, while the general quickstart and product pages were available. Ask for the current fund endpoint reference before implementing. We do not turn that link issue into a claim about the service's reliability.

References: ILovePSX public endpoint reference · Capital Stake mutual-fund data offering · Capital Stake REST quickstart · PakDataHub mutual-fund integration guide · Saad Salman self-hosted fund API repository · Saad Salman public fund dataset

Compare hosted APIs, self-hosting and files separately#

ILovePSX provides hosted, scoped REST access to canonical fund profiles, source-dated NAV and available promoted FMR facts. Its complete reports can include reported performance, holdings, asset and sector allocations, credit-quality rows, fees, ratings and source context. Coverage must be checked for the selected fund and period.

Capital Stake advertises NAV history, AUM, holdings and allocations, and its general quickstart specifies Bearer authentication. PakDataHub documents keyed fund endpoints, including NAV, payouts, expenses, allocations and analytics. The Saad Salman project offers self-hosted software plus public data files, with its own collection and return conventions. These are different operating models, not interchangeable responses.

OptionAccess modelDocumented emphasisEvidence
ILovePSXActivated account; X-API-KeyProfiles, NAV and available structured FMR sectionsPublic API reference
Capital StakeHosted REST; Bearer tokenNAV, AUM, holdings, allocation and related market dataProduct page; REST quickstart
PakDataHubHosted REST; X-API-KeyFund history, payouts, expenses, portfolio and computed analyticsFund guide; fund API docs
Saad Salman projectSelf-hosted API or public filesNAV collection, metadata and separate performance datasetAPI README; dataset README
Documented access models reviewed 2026-10-09. This is not a live availability or performance benchmark.

References: ILovePSX public endpoint reference · Capital Stake mutual-fund data offering · Capital Stake REST quickstart · PakDataHub mutual-fund integration guide · PakDataHub fund API documentation · Saad Salman self-hosted fund API repository · Saad Salman public fund dataset

Read the allowance alongside the price#

The current ILovePSX offer is free with unlimited monthly usage and 600 weighted units per minute of burst protection. Complete FMR requests cost more than standard reads, and request bounds still apply. This describes the current release, not an unlimited request rate or a permanent pricing commitment.

PakDataHub's reviewed pricing lists a $0 plan with 500 monthly calls and paid plans at $19, $49 and $199 per month. Its page distinguishes history, support and product-display rights by plan. Those are published offer details, not a quote for a particular workload. Capital Stake directs quota questions to support; no comparable fixed fund-data price was verified here. Self-hosted software still needs operating resources and maintenance.

OptionPrice or access reviewedCheck before choosing
ILovePSXCurrent free release; monthly usage unlimitedWeighted burst costs, scopes and bounded operations
Capital StakeComparable fund-data quotation not verifiedRequest price, quota, permitted use and exact scope
PakDataHub$0 / $19 / $49 / $199 monthly plansHistory entitlement, display rights and request allowance
Self-hosted projectSoftware available under its project licenceHosting, collection, monitoring and upstream data terms
Pricing snapshot checked 9 October 2026. Recheck the linked sources before purchase or public release.

References: ILovePSX current access policy and limits · Capital Stake REST quickstart · PakDataHub pricing and plan distinctions · Saad Salman self-hosted fund API repository

Ask for the whole fund, not just a portfolio label#

Portfolio depth has several independent dimensions. A holding list identifies disclosed positions. Asset allocation groups investments by asset class; sector allocation groups a different universe. Credit quality describes rating buckets under a stated basis. A separate fund rating is neither a position weight nor a return percentage.

Ask each candidate to supply one permitted example with the exact fields your interface needs. Check raw labels, denominators, report dates, partial top-holdings status, nulls and source references. Capital Stake's published offering already includes holdings and allocation, so those capabilities should not be described as exclusive to ILovePSX. A credible comparison explains field-level fit rather than claiming every alternative lacks a broad feature.

Research needAcceptance questionReject this shortcut
Full profileCanonical identity and report-dated terms distinguished?Treating a monthly label as a unique fund identifier
Reported performancePeriod, basis and annualization supplied?Comparing unlike intervals
HoldingsComplete book or partial disclosure, with percentage basis?Calling a top list the entire portfolio
AllocationsAsset, sector and credit-quality views labelled separately?Adding unrelated percentages together
EvidenceSource page, date and available revision context retained?Inventing a document link when it is absent
Application acceptance questions, not asserted competitor test results.

References: ILovePSX public endpoint reference · Capital Stake mutual-fund data offering

Verify the dates and return methodology#

A recently retrieved response can contain an older valuation. Compare the observation's NAV date, the report date and the application's retrieval time separately. The Saad Salman scraper README explicitly distinguishes its collection timestamp from a source NAV date on the fund-directory page. Its dataset has additional history and performance conventions that deserve their own review.

Likewise, a computed return and a published FMR return can answer different questions. PakDataHub documents computed fund analytics; ILovePSX serves reported return rows where available and does not advertise a published computed-risk analytics endpoint. Ask how payouts, reinvestment, missing observations and annualization are handled before combining results in one chart. Longer advertised history still needs a fund-specific entitlement and availability check.

References: Saad Salman self-hosted fund API repository · Saad Salman public fund dataset · PakDataHub mutual-fund integration guide · ILovePSX public endpoint reference

Use a fictional evaluation sheet to design your test#

The table below is entirely synthetic. Example Service A and Example Service B are invented providers, not aliases for any named service above. It demonstrates how the same required report period can produce different acceptance outcomes even when both services can return a price.

For this fictional project, the application needs September holdings with a documented percentage basis and a clear missing-section state. Service A meets those sample requirements. Service B's missing basis requires investigation; it does not justify an invented zero exposure or a declaration that the real provider is inferior. Replace these examples with permitted observed results when conducting your own evaluation.

Fictional candidateRequested / returned reportHoldings basisEvaluation
Example Service A2026-09-30 / 2026-09-30Total assets; partial list disclosedPasses this narrow fixture
Example Service B2026-09-30 / 2026-09-30UnavailableNeeds basis verification
Example Service C2026-09-30 / 2026-08-31Total assetsWrong period for this task
Mock acceptance matrix. No entry is a real provider measurement, rating or customer result.
Keep the scope of a pass narrow

One successful fixture establishes only that test's result. It does not establish complete coverage, accuracy, latency, uptime or investment suitability.

Include permitted use in the requirements#

Decide whether you need a private notebook, an internal research export or a customer-facing application. Check the chosen service terms and applicable source conditions for that use. MUFAP's terms describe restrictions on commercial and public reuse; the existence of a public page does not itself settle redistribution permission.

An open-source software licence concerns the software, while the collected financial material can have separate conditions. A free hosted account is also not a blanket transfer of every upstream document's rights. Keep the permitted-use decision and any required provider confirmation alongside the technical evaluation so a later public release does not rely on a guess made during prototyping.

References: MUFAP terms of use · PakDataHub pricing and plan distinctions · ILovePSX service terms · Saad Salman self-hosted fund API repository

Run a small, reproducible integration trial#

Select a bounded cohort with an ordinary fund, an ambiguous plan name and an unavailable requested period. Test discovery, history pagination, a complete dated report and an empty portfolio section. Record the selection, safe request ID, observation dates and the returned evidence. Keep credentials out of exports, screenshots, prompts and comparison notes.

Include a deliberately mixed-period comparison and a revised report fixture. Confirm that your application reports the mismatch and preserves missing values. Measure the real workflow you intend to run rather than repeating one easy latest-price request and calling it a portfolio benchmark. For an AI application, verify that the answer carries evidence and dates rather than merely sounding confident.

References: ILovePSX public endpoint reference · ILovePSX current access policy and limits

Choose the fit and keep the comparison current#

ILovePSX is a useful starting point when you need the current free hosted offer and available structured FMR facts with explicit dates and section states. A broader market-data service, a computed-analytics product or a self-hosted dataset can be a better fit for a different requirement. Choose using the required facts, operating model and permitted use you have actually verified.

Retain one evaluation note with its review date, source links, unresolved questions and observed results. Recheck pricing and documentation before deployment, and refresh the note when a meaningful contract change occurs. A defensible choice is one another developer can reproduce, including the limitations that kept an appealing option from fitting this particular task.

References: ILovePSX public endpoint reference · ILovePSX current access policy and limits · Capital Stake mutual-fund data offering · PakDataHub mutual-fund integration guide · Saad Salman self-hosted fund API repository

MOCK DATA / REAL RESPONSE STRUCTURE

Try a complete example.

Use these fictional records to prototype a full fund view: profile, reported returns, holdings, asset and sector allocations, credit quality, fees and ratings. Every name, identifier and number is invented. This is educational mock data, with no connection to a real fund, source document or agency opinion.

The JSON mirrors the public response structure. The complete FMR example includes all supported expansions; empty arrays and nulls demonstrate valid missing-data states. Your live integration must still request the sections it needs and check the returned coverage.

Inspect the complete FMR model
Complete synthetic FMR response · fictional data
{
  "success": true,
  "data": {
    "id": "00000000-0000-4000-8000-000000000101",
    "report_ids": [
      "00000000-0000-4000-8000-000000000101"
    ],
    "fund": {
      "id": "00000000-0000-4000-8000-000000000201",
      "slug": "example-research-fund",
      "name": "Example Research Fund",
      "mufap_fund_id": null,
      "amc": {
        "id": "00000000-0000-4000-8000-000000000301",
        "slug": "example-asset-management",
        "name": "Example Asset Management"
      }
    },
    "report_date": "2026-09-30",
    "currency": "PKR",
    "data_version": 1,
    "identity": {
      "fund_name_as_reported": "Example Research Fund",
      "fund_short_name_as_reported": "ERF",
      "parent_fund_name_as_reported": null,
      "plan_name_as_reported": null,
      "fund_type_as_reported": "Open-end",
      "category_as_reported": "Illustrative mixed-asset category",
      "risk_profile_as_reported": "Illustrative higher-risk profile",
      "is_shariah_compliant": false,
      "is_plan": false,
      "is_pension_scheme": false,
      "is_etf": false
    },
    "fund_size": {
      "nav_per_unit": "100.500000",
      "nav_date": "2026-09-30",
      "offer_price": "100.500000",
      "redemption_price": "100.500000",
      "repurchase_price": "100.500000",
      "market_price": null,
      "net_assets_pkr": "1005000000.0000",
      "fund_size_pkr": "1005000000.0000",
      "fund_size_including_fof_pkr": "1005000000.0000",
      "fund_size_excluding_fof_pkr": "1005000000.0000",
      "amount_invested_by_fof_pkr": "0.0000",
      "units_outstanding": "10000000.000000"
    },
    "profile": {
      "launch_date": "2025-01-01",
      "inception_date": "2025-01-01",
      "maturity_date": null,
      "benchmark": "Example composite benchmark",
      "old_benchmark": null,
      "new_benchmark": null,
      "benchmark_effective_date": null,
      "risk_of_principal_erosion": "Principal may fluctuate; synthetic disclosure.",
      "pricing_mechanism": "Forward pricing — illustrative",
      "dealing_days": "Monday to Friday — illustrative",
      "dealing_time": "09:00 to 14:00 Pakistan time — illustrative",
      "cutoff_time": "14:00 Pakistan time — illustrative",
      "settlement_period": "T+2 — illustrative, not an actual dealing policy",
      "minimum_initial_investment_pkr": "5000.0000",
      "minimum_subsequent_investment_pkr": "1000.0000",
      "minimum_redemption_pkr": "1000.0000",
      "unit_classes": [
        "Illustrative standard units"
      ],
      "leverage": "None in this synthetic example"
    },
    "report_fragments": [
      {
        "id": "00000000-0000-4000-8000-000000000101",
        "page_number": 1,
        "schema_version": "fmr_page_v3",
        "data_version": 1,
        "promoted_at": "2026-10-08T08:00:00Z",
        "report_date": "2026-09-30",
        "report_month": "September 2026",
        "page_type": "FUND_REPORT",
        "extraction_mode": "PROFILE_PERFORMANCE_PORTFOLIO",
        "amc_name_raw": "Example Asset Management",
        "fund_name_raw": "Example Research Fund",
        "fund_short_name_raw": "ERF",
        "parent_fund_name_raw": null,
        "plan_name_raw": null,
        "fund_type_raw": "Open-end",
        "category_raw": "Illustrative mixed-asset category",
        "risk_profile_raw": "Illustrative higher-risk profile",
        "risk_of_principal_erosion_raw": "Principal may fluctuate; synthetic disclosure.",
        "is_shariah_compliant": false,
        "is_plan": false,
        "is_pension_scheme": false,
        "is_etf": false,
        "launch_date": "2025-01-01",
        "inception_date": "2025-01-01",
        "maturity_date": null,
        "benchmark_raw": "Example composite benchmark",
        "old_benchmark_raw": null,
        "new_benchmark_raw": null,
        "benchmark_effective_date": null,
        "par_value": "100.000000",
        "listing_raw": null,
        "leverage_raw": "None in this synthetic example",
        "nav_per_unit": "100.500000",
        "nav_date": "2026-09-30",
        "offer_price": "100.500000",
        "redemption_price": "100.500000",
        "repurchase_price": "100.500000",
        "market_price": null,
        "net_assets": "1005000000.0000",
        "fund_size": "1005000000.0000",
        "fund_size_including_fof": "1005000000.0000",
        "fund_size_excluding_fof": "1005000000.0000",
        "amount_invested_by_fof": "0.0000",
        "units_outstanding": "10000000.000000",
        "currency": "PKR",
        "pricing_mechanism_raw": "Forward pricing — illustrative",
        "dealing_days_raw": "Monday to Friday — illustrative",
        "dealing_time_raw": "09:00 to 14:00 Pakistan time — illustrative",
        "cutoff_time_raw": "14:00 Pakistan time — illustrative",
        "settlement_period_raw": "T+2 — illustrative, not an actual dealing policy",
        "minimum_initial_investment": "5000.0000",
        "minimum_subsequent_investment": "1000.0000",
        "minimum_redemption": "1000.0000",
        "unit_classes": [
          "Illustrative standard units"
        ]
      }
    ],
    "sub_funds": [],
    "reported_returns": [
      {
        "sub_fund_key": null,
        "sub_fund_name_raw": null,
        "row_order": 1,
        "report_id": "00000000-0000-4000-8000-000000000101",
        "page_number": 1,
        "period_label_raw": "1 year",
        "period_key": "1Y",
        "fund_return_percent": "12.00000000",
        "benchmark_return_percent": "10.00000000",
        "peer_return_percent": null,
        "return_type": "ABSOLUTE",
        "is_annualized": false,
        "is_since_inception": false,
        "calculation_basis_raw": "Synthetic cumulative return for the stated period"
      },
      {
        "sub_fund_key": null,
        "sub_fund_name_raw": null,
        "row_order": 2,
        "report_id": "00000000-0000-4000-8000-000000000101",
        "page_number": 1,
        "period_label_raw": "Month to date",
        "period_key": "MTD",
        "fund_return_percent": "0.50000000",
        "benchmark_return_percent": "0.40000000",
        "peer_return_percent": null,
        "return_type": "ABSOLUTE",
        "is_annualized": false,
        "is_since_inception": false,
        "calculation_basis_raw": "Synthetic cumulative September return"
      }
    ],
    "allocations": [
      {
        "sub_fund_key": null,
        "sub_fund_name_raw": null,
        "row_order": 1,
        "report_id": "00000000-0000-4000-8000-000000000101",
        "page_number": 1,
        "allocation_type": "ASSET_ALLOCATION",
        "label_raw": "Equities",
        "label_normalized": null,
        "percent_of_total_assets": "60.000000",
        "percent_of_net_assets": null,
        "percent_of_gross_assets": null,
        "amount": "603000000.0000",
        "current_period": null,
        "previous_period": null,
        "change_percent": null,
        "bucket_start_days": null,
        "bucket_end_days": null,
        "bucket_start_years": null,
        "bucket_end_years": null
      },
      {
        "sub_fund_key": null,
        "sub_fund_name_raw": null,
        "row_order": 2,
        "report_id": "00000000-0000-4000-8000-000000000101",
        "page_number": 1,
        "allocation_type": "ASSET_ALLOCATION",
        "label_raw": "Cash",
        "label_normalized": null,
        "percent_of_total_assets": "20.000000",
        "percent_of_net_assets": null,
        "percent_of_gross_assets": null,
        "amount": "201000000.0000",
        "current_period": null,
        "previous_period": null,
        "change_percent": null,
        "bucket_start_days": null,
        "bucket_end_days": null,
        "bucket_start_years": null,
        "bucket_end_years": null
      },
      {
        "sub_fund_key": null,
        "sub_fund_name_raw": null,
        "row_order": 3,
        "report_id": "00000000-0000-4000-8000-000000000101",
        "page_number": 1,
        "allocation_type": "ASSET_ALLOCATION",
        "label_raw": "Government securities",
        "label_normalized": null,
        "percent_of_total_assets": "15.000000",
        "percent_of_net_assets": null,
        "percent_of_gross_assets": null,
        "amount": "150750000.0000",
        "current_period": null,
        "previous_period": null,
        "change_percent": null,
        "bucket_start_days": null,
        "bucket_end_days": null,
        "bucket_start_years": null,
        "bucket_end_years": null
      },
      {
        "sub_fund_key": null,
        "sub_fund_name_raw": null,
        "row_order": 4,
        "report_id": "00000000-0000-4000-8000-000000000101",
        "page_number": 1,
        "allocation_type": "ASSET_ALLOCATION",
        "label_raw": "Other assets",
        "label_normalized": null,
        "percent_of_total_assets": "5.000000",
        "percent_of_net_assets": null,
        "percent_of_gross_assets": null,
        "amount": "50250000.0000",
        "current_period": null,
        "previous_period": null,
        "change_percent": null,
        "bucket_start_days": null,
        "bucket_end_days": null,
        "bucket_start_years": null,
        "bucket_end_years": null
      },
      {
        "sub_fund_key": null,
        "sub_fund_name_raw": null,
        "row_order": 5,
        "report_id": "00000000-0000-4000-8000-000000000101",
        "page_number": 1,
        "allocation_type": "SECTOR_ALLOCATION",
        "label_raw": "Technology",
        "label_normalized": null,
        "percent_of_total_assets": "25.000000",
        "percent_of_net_assets": null,
        "percent_of_gross_assets": null,
        "amount": "251250000.0000",
        "current_period": null,
        "previous_period": null,
        "change_percent": null,
        "bucket_start_days": null,
        "bucket_end_days": null,
        "bucket_start_years": null,
        "bucket_end_years": null
      },
      {
        "sub_fund_key": null,
        "sub_fund_name_raw": null,
        "row_order": 6,
        "report_id": "00000000-0000-4000-8000-000000000101",
        "page_number": 1,
        "allocation_type": "SECTOR_ALLOCATION",
        "label_raw": "Fertilizer",
        "label_normalized": null,
        "percent_of_total_assets": "20.000000",
        "percent_of_net_assets": null,
        "percent_of_gross_assets": null,
        "amount": "201000000.0000",
        "current_period": null,
        "previous_period": null,
        "change_percent": null,
        "bucket_start_days": null,
        "bucket_end_days": null,
        "bucket_start_years": null,
        "bucket_end_years": null
      },
      {
        "sub_fund_key": null,
        "sub_fund_name_raw": null,
        "row_order": 7,
        "report_id": "00000000-0000-4000-8000-000000000101",
        "page_number": 1,
        "allocation_type": "SECTOR_ALLOCATION",
        "label_raw": "Banks",
        "label_normalized": null,
        "percent_of_total_assets": "15.000000",
        "percent_of_net_assets": null,
        "percent_of_gross_assets": null,
        "amount": "150750000.0000",
        "current_period": null,
        "previous_period": null,
        "change_percent": null,
        "bucket_start_days": null,
        "bucket_end_days": null,
        "bucket_start_years": null,
        "bucket_end_years": null
      },
      {
        "sub_fund_key": null,
        "sub_fund_name_raw": null,
        "row_order": 8,
        "report_id": "00000000-0000-4000-8000-000000000101",
        "page_number": 1,
        "allocation_type": "CREDIT_QUALITY",
        "label_raw": "Government securities — illustrative bucket",
        "label_normalized": null,
        "percent_of_total_assets": "15.000000",
        "percent_of_net_assets": null,
        "percent_of_gross_assets": null,
        "amount": null,
        "current_period": null,
        "previous_period": null,
        "change_percent": null,
        "bucket_start_days": null,
        "bucket_end_days": null,
        "bucket_start_years": null,
        "bucket_end_years": null
      },
      {
        "sub_fund_key": null,
        "sub_fund_name_raw": null,
        "row_order": 9,
        "report_id": "00000000-0000-4000-8000-000000000101",
        "page_number": 1,
        "allocation_type": "CREDIT_QUALITY",
        "label_raw": "Unrated / no rating assigned in this example",
        "label_normalized": null,
        "percent_of_total_assets": "85.000000",
        "percent_of_net_assets": null,
        "percent_of_gross_assets": null,
        "amount": null,
        "current_period": null,
        "previous_period": null,
        "change_percent": null,
        "bucket_start_days": null,
        "bucket_end_days": null,
        "bucket_start_years": null,
        "bucket_end_years": null
      }
    ],
    "holdings": [
      {
        "sub_fund_key": null,
        "sub_fund_name_raw": null,
        "row_order": 1,
        "report_id": "00000000-0000-4000-8000-000000000101",
        "page_number": 1,
        "holding_group": "TOP_HOLDINGS",
        "rank": 1,
        "name_raw": "Example Technology Company",
        "holding_type": "EQUITY",
        "asset_class": "Equities",
        "issuer_name_raw": "Example Technology Company",
        "security_name_raw": "Example Technology Company ordinary shares",
        "symbol_raw": "EXTECH",
        "sector_raw": "Technology",
        "percent_of_total_assets": "18.000000",
        "percent_of_net_assets": null,
        "percent_of_gross_assets": null,
        "percent_held": null,
        "market_value": "180900000.0000",
        "value_before_provisioning": null,
        "provisioning_amount": null,
        "value_after_provisioning": null,
        "quantity": "1000000.000000",
        "units": "shares",
        "credit_rating": null,
        "rating_agency": null,
        "instrument_type_raw": "Ordinary shares",
        "coupon_rate": null,
        "yield_percent": null,
        "ytm_percent": null,
        "issue_date": null,
        "maturity_date": null,
        "listed_or_unlisted": "Listed — illustrative",
        "secured_or_unsecured": null,
        "is_shariah_compliant": null,
        "is_top_holding": true,
        "is_non_compliant": null
      },
      {
        "sub_fund_key": null,
        "sub_fund_name_raw": null,
        "row_order": 2,
        "report_id": "00000000-0000-4000-8000-000000000101",
        "page_number": 1,
        "holding_group": "TOP_HOLDINGS",
        "rank": 2,
        "name_raw": "Example Fertilizer Company",
        "holding_type": "EQUITY",
        "asset_class": "Equities",
        "issuer_name_raw": "Example Fertilizer Company",
        "security_name_raw": "Example Fertilizer Company ordinary shares",
        "symbol_raw": "EXFERT",
        "sector_raw": "Fertilizer",
        "percent_of_total_assets": "12.000000",
        "percent_of_net_assets": null,
        "percent_of_gross_assets": null,
        "percent_held": null,
        "market_value": "120600000.0000",
        "value_before_provisioning": null,
        "provisioning_amount": null,
        "value_after_provisioning": null,
        "quantity": "800000.000000",
        "units": "shares",
        "credit_rating": null,
        "rating_agency": null,
        "instrument_type_raw": "Ordinary shares",
        "coupon_rate": null,
        "yield_percent": null,
        "ytm_percent": null,
        "issue_date": null,
        "maturity_date": null,
        "listed_or_unlisted": "Listed — illustrative",
        "secured_or_unsecured": null,
        "is_shariah_compliant": null,
        "is_top_holding": true,
        "is_non_compliant": null
      },
      {
        "sub_fund_key": null,
        "sub_fund_name_raw": null,
        "row_order": 3,
        "report_id": "00000000-0000-4000-8000-000000000101",
        "page_number": 1,
        "holding_group": "TOP_HOLDINGS",
        "rank": 3,
        "name_raw": "Example Banking Company",
        "holding_type": "EQUITY",
        "asset_class": "Equities",
        "issuer_name_raw": "Example Banking Company",
        "security_name_raw": "Example Banking Company ordinary shares",
        "symbol_raw": "EXBANK",
        "sector_raw": "Banks",
        "percent_of_total_assets": "8.000000",
        "percent_of_net_assets": null,
        "percent_of_gross_assets": null,
        "percent_held": null,
        "market_value": "80400000.0000",
        "value_before_provisioning": null,
        "provisioning_amount": null,
        "value_after_provisioning": null,
        "quantity": "500000.000000",
        "units": "shares",
        "credit_rating": null,
        "rating_agency": null,
        "instrument_type_raw": "Ordinary shares",
        "coupon_rate": null,
        "yield_percent": null,
        "ytm_percent": null,
        "issue_date": null,
        "maturity_date": null,
        "listed_or_unlisted": "Listed — illustrative",
        "secured_or_unsecured": null,
        "is_shariah_compliant": null,
        "is_top_holding": true,
        "is_non_compliant": null
      }
    ],
    "metrics": [
      {
        "sub_fund_key": null,
        "sub_fund_name_raw": null,
        "row_order": 1,
        "report_id": "00000000-0000-4000-8000-000000000101",
        "page_number": 1,
        "metric_key": "NUMBER_OF_HOLDINGS",
        "label_raw": "Illustrative number of equity holdings",
        "value": "12.00000000",
        "unit": "count",
        "period": "September 2026",
        "benchmark_value": null
      }
    ],
    "fees": [
      {
        "sub_fund_key": null,
        "sub_fund_name_raw": null,
        "row_order": 1,
        "report_id": "00000000-0000-4000-8000-000000000101",
        "page_number": 1,
        "fee_type": "TOTAL_EXPENSE_RATIO",
        "label_raw": "Illustrative annualized total expense ratio",
        "value_percent": "2.000000",
        "value_amount": null,
        "currency": "PKR",
        "period": "September 2026 — annualized illustration",
        "with_government_levies": true,
        "government_levy_percent": null,
        "secp_fee_percent": null,
        "is_actual_charged": true,
        "is_maximum_allowed": false
      }
    ],
    "ratings": [
      {
        "sub_fund_key": null,
        "sub_fund_name_raw": null,
        "row_order": 1,
        "report_id": "00000000-0000-4000-8000-000000000101",
        "page_number": 1,
        "rating_type": "ILLUSTRATIVE",
        "rating_raw": "Illustrative rating — not an agency opinion",
        "rating_agency": "Example agency (fictional)",
        "rating_date": null,
        "outlook_raw": null
      }
    ],
    "parties": [
      {
        "sub_fund_key": null,
        "sub_fund_name_raw": null,
        "row_order": 1,
        "report_id": "00000000-0000-4000-8000-000000000101",
        "page_number": 1,
        "role": "FUND_MANAGER",
        "name_raw": "Example Research Team",
        "designation_raw": "Illustrative fund-management team",
        "organization_raw": "Example Asset Management"
      }
    ],
    "special_terms": [
      {
        "sub_fund_key": null,
        "sub_fund_name_raw": null,
        "row_order": 1,
        "report_id": "00000000-0000-4000-8000-000000000101",
        "page_number": 1,
        "term_type": "INVESTMENT_OBJECTIVE",
        "label_raw": "Illustrative investment objective",
        "value_raw": "A fictional mixed-asset portfolio used only to demonstrate the response model.",
        "value_numeric": null,
        "value_percent": null,
        "value_amount": null,
        "value_date": null,
        "currency": "PKR"
      }
    ],
    "compliance": [
      {
        "sub_fund_key": null,
        "sub_fund_name_raw": null,
        "row_order": 1,
        "report_id": "00000000-0000-4000-8000-000000000101",
        "page_number": 1,
        "compliance_type": "ILLUSTRATIVE_DISCLOSURE",
        "name_raw": "Synthetic compliance disclosure",
        "limit_type_raw": null,
        "regulatory_limit_percent": null,
        "actual_exposure_percent": null,
        "excess_percent": null,
        "gross_assets_percent": null,
        "net_assets_percent": null,
        "status_raw": "Illustrative only — no regulatory assessment has been performed"
      }
    ],
    "notes": [
      {
        "sub_fund_key": null,
        "sub_fund_name_raw": null,
        "row_order": 1,
        "report_id": "00000000-0000-4000-8000-000000000101",
        "page_number": 1,
        "note_kind": "NOTE",
        "section_type": "PORTFOLIO",
        "note_type": "ILLUSTRATIVE",
        "text": "All figures and entities are synthetic. The three reported top holdings are a partial list. Sector percentages use total assets. Credit-quality labels and rating text are not agency opinions."
      }
    ],
    "source": [
      {
        "report_id": "00000000-0000-4000-8000-000000000101",
        "page_number": 1,
        "document": null,
        "promoted_at": "2026-10-08T08:00:00Z",
        "data_version": 1
      }
    ],
    "sections": {
      "sub_funds": {
        "status": "NOT_REPORTED",
        "row_count": 0
      },
      "reported_returns": {
        "status": "AVAILABLE",
        "row_count": 2
      },
      "allocations": {
        "status": "AVAILABLE",
        "row_count": 9
      },
      "holdings": {
        "status": "AVAILABLE",
        "row_count": 3
      },
      "metrics": {
        "status": "AVAILABLE",
        "row_count": 1
      },
      "fees": {
        "status": "AVAILABLE",
        "row_count": 1
      },
      "ratings": {
        "status": "AVAILABLE",
        "row_count": 1
      },
      "parties": {
        "status": "AVAILABLE",
        "row_count": 1
      },
      "special_terms": {
        "status": "AVAILABLE",
        "row_count": 1
      },
      "compliance": {
        "status": "AVAILABLE",
        "row_count": 1
      },
      "notes": {
        "status": "AVAILABLE",
        "row_count": 1
      },
      "source": {
        "status": "AVAILABLE",
        "row_count": 1
      }
    },
    "available_expansions": [
      "allocations",
      "compliance",
      "fees",
      "holdings",
      "metrics",
      "notes",
      "parties",
      "ratings",
      "reported_returns",
      "source",
      "special_terms",
      "sub_funds"
    ]
  },
  "meta": {
    "request_id": "00000000000040008000000000000401",
    "generated_at": "2026-10-08T08:00:00Z",
    "data_as_of": "2026-09-30",
    "data_freshness_days": 8
  }
}
Inspect the latest NAV model
Synthetic latest NAV response · fictional data
{
  "success": true,
  "data": [
    {
      "fund_id": "00000000-0000-4000-8000-000000000201",
      "fund_slug": "example-research-fund",
      "fund_name": "Example Research Fund",
      "mufap_fund_id": null,
      "nav_date": "2026-09-30",
      "nav": "100.500000",
      "offer_price": "100.500000",
      "repurchase_price": "100.500000",
      "market_price": null,
      "front_end_load_pct": "0.000000",
      "back_end_load_pct": "0.000000",
      "contingent_load_pct": null,
      "nav_change_abs": null,
      "nav_change_pct": null,
      "currency": "PKR"
    }
  ],
  "meta": {
    "request_id": "00000000000040008000000000000402",
    "generated_at": "2026-10-08T08:00:00Z",
    "data_as_of": "2026-09-30",
    "data_freshness_days": 8
  }
}
TRACE THE EVIDENCE

Sources & further reading

Check the published contract for current fields and limits. Source documents describe reported facts; API availability still depends on promoted production coverage.

  1. ILovePSX public endpoint reference

    Fields and published operations reviewed against the local public contract on 9 October 2026; not a live coverage audit.

  2. ILovePSX current access policy and limits
  3. ILovePSX service terms
  4. Capital Stake mutual-fund data offering

    Provider-advertised scope; no authenticated benchmark was run.

  5. Capital Stake REST quickstart

    General Bearer authentication and quota guidance. The linked fund introduction returned 404 during the review; confirm the current fund reference with the provider.

  6. PakDataHub mutual-fund integration guide
  7. PakDataHub fund API documentation
  8. PakDataHub pricing and plan distinctions

    Public prices reviewed 9 October 2026; recheck before purchase or release.

  9. Saad Salman self-hosted fund API repository
  10. Saad Salman public fund dataset
  11. MUFAP terms of use

Put the guide to work.

Start with the documented contract, keep your key server-side, and make dates and missing data visible in your product.

Evaluate the documented ILovePSX API