Discover/CFA Institute API
live

CFA Institute APIcfainstitute.org

Access structured CFA Program curriculum data for Levels I, II, and III — topics, modules, Learning Outcome Statements, and exam weights via 3 endpoints.

Endpoint health
monitored
get_curriculum
get_topics_overview
search_los
0/3 passing latest checkself-healing
Endpoints
3
Updated
26d ago

What is the CFA Institute API?

The CFA Institute curriculum API exposes structured exam content across all three CFA Program levels through 3 endpoints, returning topics, learning modules, Learning Outcome Statements (LOS), and exam weight ranges. The get_curriculum endpoint delivers the full hierarchy for a given level and year, including every LOS with its action verb, while search_los lets you run keyword queries across one or all levels to find specific learning objectives.

Try it
Curriculum year (2025 or 2026)
CFA exam level: I, II, or III
api.parse.bot/scraper/cc5cbe41-2541-4331-b45a-83b407066316/<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/cc5cbe41-2541-4331-b45a-83b407066316/get_curriculum?year=2025&level=I' \
  -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 cfainstitute-org-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.

from parse_apis.cfa_curriculum_api import CFACurriculum, Level, Year

cfa = CFACurriculum()

# Fetch the full Level I curriculum for 2026
curriculum = cfa.curriculums.get(level=Level.I, year=Year.Y2026)
print(curriculum.level, curriculum.year, curriculum.total_topics, curriculum.total_los)

# Browse topics and their modules
for topic in curriculum.topics:
    print(topic.topic_name, topic.module_count, topic.pathway)
    for module in topic.modules:
        print(module.module_name, module.los_count)

# Get lightweight topic overviews with exam weights
for overview in curriculum.topic_overviews.list():
    print(overview.topic_name, overview.exam_weight, overview.session)

# Search LOS within this curriculum level
for match in curriculum.los_matches.search(query="risk"):
    print(match.topic, match.module, match.los, match.action_verb)
All endpoints · 3 totalmissing one? ·

Get the full CFA curriculum for a specific level, including all topics, modules within each topic, and every Learning Outcome Statement (LOS). Each LOS starts with an action verb (explain, describe, calculate, etc.). Level III includes three pathways: Portfolio Management, Private Markets, and Private Wealth.

Input
ParamTypeDescription
yearstringCurriculum year (2025 or 2026)
levelrequiredstringCFA exam level: I, II, or III
Response
{
  "type": "object",
  "fields": {
    "year": "string - curriculum year",
    "level": "string - CFA level requested",
    "topics": "array of Topic objects with modules and LOS",
    "total_los": "integer - total number of Learning Outcome Statements",
    "total_topics": "integer - number of topics",
    "total_modules": "integer - total number of modules across all topics",
    "action_verbs_used": "array of strings - unique action verbs found in LOS"
  },
  "sample": {
    "data": {
      "year": "2026",
      "level": "I",
      "topics": [
        {
          "modules": [
            {
              "los_count": 5,
              "module_name": "Rates and Returns",
              "learning_outcome_statements": [
                "interpret interest rates as required rates of return..."
              ]
            }
          ],
          "pathway": null,
          "total_los": 38,
          "topic_name": "Quantitative Methods",
          "module_count": 11
        }
      ],
      "total_los": 365,
      "total_topics": 10,
      "total_modules": 93,
      "action_verbs_used": [
        "analyze",
        "calculate",
        "compare"
      ]
    },
    "status": "success"
  }
}

About the CFA Institute API

What the API covers

The API surfaces the official CFA Program curriculum for Levels I, II, and III. Each level is organized into topics, which contain modules, which contain individual Learning Outcome Statements. Level III includes three distinct pathways — Portfolio Management, Private Wealth, and Private Markets — so LOS response objects include a pathway field to distinguish them. The get_curriculum endpoint accepts a level parameter (I, II, or III) and an optional year parameter (2025 or 2026), and returns the full nested structure along with aggregate counts: total_topics, total_modules, total_los, and the array action_verbs_used listing unique verbs like "explain", "calculate", or "describe" found across all LOS in that level.

Topic overviews and LOS search

If you only need high-level topic data, get_topics_overview returns topic names, session numbers, and exam weight percentage ranges for a given level without the full module and LOS detail. This is the lighter-weight option when you're building a study planner that just needs to weight topic coverage. For deeper queries, search_los accepts a query string and performs case-insensitive substring matching against the full text of every LOS. You can optionally filter by level; omitting it searches all three levels simultaneously. Each match in the matches array includes the level, pathway, topic, module, the full los text, and the extracted action_verb.

Response shape and data fidelity

Response fields are consistent across endpoints. Topic objects include names and associated modules; module objects nest their LOS arrays. The action_verbs_used field in get_curriculum gives a quick fingerprint of the cognitive complexity distribution across a level — useful when comparing how Level I (heavy on "describe" and "explain") differs from Level III (more "evaluate" and "recommend"). Year coverage is currently limited to 2025 and 2026 curricula.

Reliability & maintenance

The CFA Institute API is a managed, monitored endpoint for cfainstitute.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when cfainstitute.org 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 cfainstitute.org 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.

Latest check
0/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
  • Build a CFA flashcard app seeded with real LOS text and action verbs from get_curriculum
  • Generate a topic-weighted study schedule using exam weight percentages from get_topics_overview
  • Search for all LOS mentioning 'duration' across Levels I, II, and III using search_los to map concept progression
  • Compare the distribution of action verbs (calculate vs. evaluate) between Level I and Level II to calibrate question difficulty
  • Extract Level III pathway-specific LOS to build separate study tracks for Portfolio Management vs. Private Wealth candidates
  • Audit curriculum changes between 2025 and 2026 by diffing get_curriculum responses across both year values
  • Populate a course mapping tool that aligns internal training modules to official CFA LOS by keyword
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 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.

Frequently asked questions
Does CFA Institute provide an official developer API for curriculum data?+
CFA Institute does not publish a public developer API for structured curriculum or LOS data. The curriculum content is available on cfainstitute.org for candidates but there is no documented REST or GraphQL API for programmatic access.
What does `get_curriculum` return for Level III compared to Levels I and II?+
For Level III, each module and LOS object includes a pathway field identifying whether the content belongs to the Portfolio Management, Private Wealth, or Private Markets pathway. Levels I and II are not split by pathway, so that field is not relevant for those responses.
Does `search_los` support filtering by action verb or topic, not just keyword?+
The search_los endpoint currently supports filtering by level and year, with keyword matching against the full LOS text. It does not accept dedicated filters for action_verb or topic. You can fork the API on Parse and revise it to add those filter parameters.
Does the API cover historical curriculum years beyond 2025 and 2026?+
The API currently supports the 2025 and 2026 curriculum years via the optional year parameter. Earlier editions are not covered. You can fork the API on Parse and revise it to add support for additional historical curriculum years if the source material is accessible.
Are mock exam questions or practice problems included in the response?+
The API covers curriculum structure — topics, modules, and Learning Outcome Statements — not practice questions or mock exam content. LOS text describes what candidates should be able to do, but no question bank data is returned. You can fork the API on Parse and revise it to add an endpoint targeting any publicly accessible practice problem resources.
Page content last updated . Spec covers 3 endpoints from cfainstitute.org.
Related APIs in EducationSee all →
globallearning.fintelligents.com API
Learn about the Chartered Alternative Investment Analyst (CAIA®) program by accessing comprehensive program details, curriculum information, and frequently asked questions all in one place. Quickly find the specific information you need about CAIA certification, coursework, and common inquiries to make informed decisions about your investment education.
openstax.org API
Access learning outcomes, table of contents, and metadata from 60+ free OpenStax textbooks spanning Business, Science, Math, Social Sciences, Humanities, Computer Science, and Nursing. Search and retrieve structured content from any of these textbooks.
boslive.icai.org API
Access the ICAI Board of Studies Knowledge Portal, including announcements, examination updates, Live Virtual Class (LVC) and Live Virtual Revisionary Class (LVRC) schedules, and study materials. Browse available courses, languages, and papers, and retrieve direct PDF links for any portal page.
theodinproject.com API
Access The Odin Project's complete curriculum structure including paths, courses, lessons, resources, and projects, plus search lessons and view detailed changelogs. Browse course outlines, find specific lessons and their learning materials all in one place.
garp.org API
Access comprehensive information about GARP's FRM, SCR, and RAI certifications including exam schedules, fees, logistics, and program details to plan your risk professional certification journey. Explore membership options, industry insights, and events to stay informed about professional development opportunities in risk management.
isc2.org API
Discover ISC2 cybersecurity certifications, compare exam pricing, and search training courses to plan your professional development path. Find upcoming events and self-study resources to prepare for your desired certification.
allaboutcircuits.com API
Access educational electronics content from All About Circuits, including technical articles, circuit diagrams, textbook volumes, and forum discussions organized by category. Search and browse the latest resources, view detailed articles, explore engineering tools, and find answers across their community forums.
qconcursos.com API
Search and explore thousands of Brazilian public exam questions filtered by discipline, examining board, and subject to help prepare for concursos. Access detailed information about specific questions and browse the complete catalog of available exam topics and institutions.