Blog · 2026-10-08

CUSIP Lookup API: Resolve CUSIPs to Tickers and CIKs

CUSIP Lookup API: Resolve CUSIPs to Tickers and CIKs
The official CUSIP database is licensed. The CUSIP-to-ticker answer is free from SEC data.

You have a CUSIP. You need the ticker. That sounds trivial, until you find out the official CUSIP database is licensed, copyrighted, and has been sued over its fees.

A CUSIP lookup API turns a CUSIP into the security it identifies: the ticker, the SEC CIK, the company name, and the exchange. Instead of licensing the official CUSIP database or hopping through a second identifier, you pass the 9-character code and get the issuer back in one call. The free route is SEC data, which maps US-listed equity CUSIPs to tickers. The honest limit is that bonds and foreign issues are not in that map.

Key takeaway: A CUSIP lookup API resolves a CUSIP, the 9-character security identifier, into the company it belongs to: ticker, SEC CIK, name, and exchange. The official CUSIP database is licensed and fee-gated, but for US-listed equities the same answer is free, derived from public SEC filings (company_tickers, submissions, and 13F holdings). Edgrapi's /v1/resolve takes a ?cusip=, ?ticker=, or ?cik= and returns the company on one key. The honest limit: US equities only, not bonds or foreign issues.

What does a CUSIP lookup API return?

A CUSIP lookup API takes a CUSIP and returns the security it points to as JSON: the issuer name, the SEC CIK, the ticker, the exchange, and usually extra context like the SIC industry code and state of incorporation. Pass Apple's CUSIP, 037833100, and you get back Apple Inc., CIK 0000320193, ticker AAPL, listed on Nasdaq. One call, no second identifier to resolve, no licensed database to query.

The value is that it goes straight to the ticker.

Other free tools route you through an intermediate identifier and make you read the ticker out of the result. A direct lookup skips that.

Good ones work in both directions and across identifiers. You pass a CUSIP, a ticker, or a CIK, and get the same company record back, so one endpoint covers all three ways you might hold a reference to a company.

What you do not get from the SEC route is every instrument type. A CUSIP lookup built on public filings answers for US-listed stocks, which is most of what people actually have in a portfolio file, and returns an honest no-match for the rest. That trade is the whole reason it can be free.

How do you convert a CUSIP to a ticker?

You send the CUSIP to a lookup API and read the ticker off the response. A CUSIP identifies the issuer and the security, so for a US-listed stock there is a clean path to its ticker. The catch is that the official mapping lives in a licensed database, so the practical free route is a crosswalk built from public SEC data, where the same company appears under its CUSIP, ticker, and CIK.

Here is the call against edgrapi's resolver.

curl -s -H "X-API-Key: $KEY" \
  "https://api.edgrapi.com/v1/resolve?cusip=037833100"
# -> { "name": "Apple Inc.", "cik": "0000320193",
#      "ticker": "AAPL", "exchange": "Nasdaq", ... }

The 9-character code comes in, the ticker and CIK go out. You can pass ?ticker= or ?cik= instead and get the same record, which is handy when your data has a mix of identifiers.

One thing to check before you trust a conversion: the CUSIP's check digit. The last character is a math check on the first eight, computed with a mod-10 method, so a single typo usually fails it. Validate the check digit before the lookup and you catch most bad CUSIPs for free, before they ever hit the API.

A CUSIP also sits inside an ISIN. A US ISIN is the country code US, then the 9-character CUSIP, then its own check digit, so if your data has ISINs you already have the CUSIPs. Slice out the middle nine and resolve those.

The structure of a CUSIP and related identifiers
Nine characters: a six-character issuer base, a two-character issue code, and a check digit, with the ISIN, ticker, and CIK alongside.

What is a CUSIP, and who controls it?

A CUSIP is a 9-character code that identifies a North American security for clearing and settlement. The first six characters identify the issuer, the next two identify the specific issue, and the ninth is a check digit computed from the first eight. The system is owned by the American Bankers Association and run by CUSIP Global Services, which FactSet bought from S&P in 2022 for about 1.9 billion dollars.

Apple's stock CUSIP, 037833100, breaks down cleanly. The base 037833 is Apple the issuer, and the final 0 is the check digit.

That issuer base is the useful part. Every security a company issues, common stock, preferred, bonds, shares the same first six characters, so the CUSIP-6 is effectively a company key.

The ownership matters more than it looks. Because a private body controls the numbering and the database, the identifiers everyone uses to trade are not free to look up in bulk. That is the friction a lookup API exists to solve.

It also explains why so many free tools hand you a FIGI instead. Bloomberg created the FIGI as an open identifier partly to route around CUSIP licensing, so the free mapping services often resolve a CUSIP to a FIGI first, and you read the ticker from there. A direct CUSIP-to-ticker answer is less common precisely because the CUSIP side is the licensed one.

Why is CUSIP data so expensive, and is it free?

Looking up a CUSIP from the official source is not free, because the CUSIP database is licensed intellectual property. Issuers pay around 280 dollars to get a CUSIP assigned, and data vendors pay licensing fees to carry CUSIPs in their products. The fees have drawn antitrust and copyright lawsuits, filed in 2022, that argue the licensing regime shuts out competition. Those are allegations, and the cases were still open when filed.

So the official path has a real cost and a legal cloud over it.

The part that bites developers is not the issuance fee, it is redistribution. The licensing terms treat storing and sharing CUSIPs as a paid use, so a product that caches CUSIPs or shows them to users can be asked to license them. A mapping you built from a vendor feed can carry strings that a mapping built from public filings does not.

The free path goes through the SEC. Public companies file under a CIK, their tickers are public, and their CUSIPs show up in filings, most importantly in quarterly 13F holdings reports.

Stitch those together and you have a crosswalk: CUSIP to ticker to CIK for US-listed equities, built entirely from public data. No license, no per-lookup fee.

The SEC even publishes a quarterly Official List of Section 13(f) Securities, keyed by CUSIP, that says which securities are reportable on a 13F. It does not carry tickers, but it confirms the CUSIPs are public record, which is the foundation the free crosswalk stands on.

That is the route a free CUSIP lookup API takes. It is not the full licensed universe, but for US stocks it is the same answer at no cost.

Resolving 13F CUSIPs to tickers
A 13F lists holdings by CUSIP; resolving each turns the column of codes into readable tickers and names.

How do you map 13F CUSIPs to tickers?

This is the most common reason people need a CUSIP lookup. A 13F filing, the quarterly report of what big institutions hold, lists every position by CUSIP and never by ticker. So a raw 13F is a wall of 9-character codes. To make it readable, you pull the unique CUSIPs from the filing and resolve each one to its ticker and company name.

The pipeline is short. Parse the 13F information table, collect the CUSIPs, and run each through the lookup.

for cusip in holdings_cusips:
    r = resolve(cusip)          # GET /v1/resolve?cusip=...
    ticker = r.get("ticker")    # None if not a US-listed equity

Two cautions from real 13F data. Filers type the CUSIPs by hand, so some are wrong, and a failed check digit or a 404 is your signal to flag that row. And a position can be a bond or a foreign issue that has no ticker, which is the expected miss, not a bug.

Cache the results. CUSIPs and tickers are stable quarter to quarter for most names, so you resolve a given CUSIP once and reuse it, which keeps a whole quarter of 13F parsing cheap.

Watch share classes. Two classes of the same company carry different CUSIPs, so match at the CUSIP level, not the company level, or you will merge positions that belong apart. Alphabet's Class A and Class C are the classic trap. The CUSIP keeps them separate; the company name would not.

If you are already pulling 13F data, this is the step that turns it from codes into names you can read.

Which CUSIPs a free SEC lookup resolves
US-listed stocks resolve; bonds, foreign issues, delisted names, and derivatives return no match.

Which CUSIPs will not resolve?

A free SEC-based CUSIP lookup resolves US-listed equities, and little else. Bonds, options, foreign securities, and delisted names have CUSIPs, but they do not map to a current US stock ticker, so they return no match. This is not a gap to apologize for. It is the honest edge of a crosswalk built from the filings of US public companies, and a good API tells you so instead of guessing.

Try a bond CUSIP from an issuer you know and you still get nothing.

Apple's stock resolves instantly, but an Apple bond CUSIP, which shares the 037833 base, returns a clean 404 saying no US-listed equity maps to it. The issuer is the same, the security is not an equity, so there is no ticker to return.

The same goes for a foreign company with no US listing, or a company that delisted years ago.

Funds sit in a gray zone worth knowing. Some ETF CUSIPs resolve to a ticker but not a company CIK, because the fund trades like a stock yet files differently than an operating company. The iShares Russell 2000 ETF, for example, comes back with its ticker but no issuer CIK. You get the symbol, not a filer to pull filings for.

The practical rule is to treat a non-match, or a partial match, as information rather than failure. It tells you the holding is not a plain US operating-company stock, which is often exactly what you wanted to know when screening a portfolio.

What is the best CUSIP lookup API?

There is no single best CUSIP lookup API, because the options split on cost, coverage, and whether you touch the licensed data at all. The official source covers every instrument but is fee-gated; the free options cover a subset without a license. Pick by whether you need bonds and foreign issues or just US equities, and whether you can accept a license. Every row below gives you a different trade.

OptionWhat it returnsNeeds a CUSIP licenseAuth and priceBest for
Official CGS CUSIP APIthe full CUSIP master, all instrumentsYesLicensed, fee-gatedThe authoritative source
OpenFIGICUSIP to FIGI plus instrument dataNoFree, keyless or keyedGlobal, all asset classes
FMP / sec-api.ioCIK and ticker maps, CUSIP often paidPartialPaid tier or keyBroader market data
DIY 13F crosswalkyou build CUSIP to issuer from 13F XMLNoFree, your codeFull control
Edgrapi /v1/resolveCUSIP to ticker, CIK, and metadataNoOne key, SEC + governmentDirect answer for US equities

Be clear about the split. If you need bonds, options, or non-US securities, the free SEC route cannot help, and OpenFIGI or the licensed source is the right tool. OpenFIGI is free and global, but it returns a FIGI, so you read the ticker out of the instrument data rather than getting it directly.

Edgrapi's lane is the direct answer for US-listed equities. One call returns the ticker, the CIK, and company metadata, with no license and no second identifier, on the same key that also reads SEC filings, insider trades, 13F holdings, and US government data.

The quick way to choose is to look at what you hold. If your positions are US stocks, the free SEC route answers directly and cheaply. If they include bonds, derivatives, or non-US names, you are paying for coverage one way or another, through a license or through OpenFIGI's extra hop to a FIGI.

How do you call edgrapi's CUSIP lookup API?

You call one GET endpoint with exactly one identifier and an API key. GET /v1/resolve takes ?cusip=, ?ticker=, or ?cik= and returns the company record: name, CIK, ticker, exchange, SIC code and industry, state of incorporation, and filer category. A failed or unknown lookup costs nothing.

curl -s -H "X-API-Key: $KEY" \
  "https://api.edgrapi.com/v1/resolve?cusip=88160R101"
# -> { "name": "Tesla, Inc.", "cik": "0001318605",
#      "ticker": "TSLA", "exchange": "Nasdaq",
#      "sic_industry": "Motor Vehicles ...", ... }

Pass one of the three identifiers, not a name, and not more than one at a time. The response carries the rich company context, so a single resolve call often replaces a company lookup you would otherwise make separately.

Because the same data is exposed as an MCP tool, an AI agent can resolve identifiers directly. Hand an agent a 13F full of CUSIPs and it can name every holding by calling the resolver. The full docs cover the parameters, and the 13F holdings and 8-K event feeds that produce those CUSIPs sit on the same key.

Turn the CUSIP into something you can read

If you work with 13F holdings, custodian files, or any data keyed by CUSIP, a CUSIP lookup API is the step that turns codes into tickers and companies you can actually use. Validate the check digit, resolve the CUSIP, and let the non-matches tell you which holdings are bonds or foreign issues. You get the US-equity answer for free, without touching the licensed database. Start on the docs and resolve your first CUSIP.

Frequently asked questions

What is a CUSIP lookup API?

A CUSIP lookup API resolves a CUSIP, the 9-character code that identifies a security, into the company it belongs to: the ticker, the SEC CIK, the issuer name, and the exchange. You pass the CUSIP and get the issuer back as JSON in one call, without licensing the official CUSIP database or routing through a second identifier. For US-listed equities, the data comes free from public SEC filings.

How do I convert a CUSIP to a ticker?

Send the CUSIP to a lookup API and read the ticker from the response. For a US-listed stock there is a clean path from CUSIP to ticker, built from public SEC data where the company appears under its CUSIP, ticker, and CIK. Validate the CUSIP's check digit first, since the ninth character is a math check that catches most typos before you waste a lookup.

Is CUSIP data free?

The official CUSIP database is not free. It is licensed intellectual property: issuers pay around 280 dollars per CUSIP, and data vendors pay to carry CUSIPs, a regime that drew antitrust and copyright lawsuits in 2022. But for US-listed equities you can get the same CUSIP-to-ticker answer free, because the mapping is derivable from public SEC filings that list companies by CUSIP, ticker, and CIK.

How do I map 13F CUSIPs to tickers?

A 13F filing lists holdings by CUSIP and never by ticker, so you resolve each one. Parse the 13F information table, collect the unique CUSIPs, and run each through a lookup API to get the ticker and company. Validate check digits to catch filer typos, expect bonds and foreign issues to return no ticker, and cache results since CUSIPs are stable quarter to quarter.

Can I get a ticker for a bond CUSIP?

Usually not from a free SEC-based lookup. Bonds, foreign securities, options, and delisted names have CUSIPs, but they do not map to a current US stock ticker, so the resolver returns no match. A bond from Apple shares the 037833 issuer base but is not an equity, so there is no ticker to return. For non-equity instruments you need the licensed CUSIP source or an identifier service like OpenFIGI.

What is the difference between a CUSIP, a ticker, and a CIK?

A CUSIP is a 9-character code identifying a specific security for clearing. A ticker is the short trading symbol on an exchange, like AAPL. A CIK is the SEC's identifier for a filer, used across EDGAR filings. One company can have one CIK, one or more tickers, and many CUSIPs, one per security it issues, so a lookup API ties all three together from a single input.

Get a free API key