Finding SEC CIKs for NASDAQ and NYSE Listed Companies
Summary
The document collects approaches for mapping listed-company tickers and exchange listings to SEC Central Index Keys (CIKs). One route combines exchange symbol files with SEC financial statement filing data: obtain symbols and exchange identifiers, then inspect filing submissions for CIKs, matching issuer records to tickers. Another approach queries SEC company information by ticker and parses the returned CIK. The answers also point to consolidated ticker-to-CIK datasets and a company ticker listing as simpler sources.
The discussion highlights practical data-quality issues. Ticker-to-CIK mappings are not always one-to-one, and matching filing records may require case-insensitive comparisons and handling alternate separators in filing names. Symbol lists can contain ETFs or test symbols that may need filtering, while API searches may return partial matches unless exact matching is specified. Sources and services cited in the discussion may change or become unavailable, so the approaches are useful as data acquisition patterns rather than guarantees of a current, complete mapping.
Key ideas
- Exchange symbol files identify tickers and their listing venues but may not include CIKs.
- SEC filing datasets can provide CIKs that can be matched to ticker-based submission records.
- SEC company lookup data can also be queried by ticker and parsed for a CIK.
- A ticker does not always map cleanly to one CIK, so mappings require validation.
- Filter irrelevant symbols and use exact matching where a lookup service supports it.
Tags
Full text
# List of central index keys (CIK) for NASDAQ and NYSE
# List of central index keys (CIK) for NASDAQ and NYSE
I have seen this post : Central Index Key (CIK) of all traded stocks
But I would like to download the CIKs only for NASDAQ stocks, NYSE stocks etc. I searched online but only managed to find CIKs for Dow Jones and S&P 500.
Any ideas where to get these CIKs ?
Thanks
## Answer by adrCoder (score 8, accepted)
https://quant.stackexchange.com/a/17219
The solution to my question can be found at the following webpage :
http://rankandfiled.com/#/data/tickers
For every stock you have on which stock exchange it is being traded, and the CIK (Central index key) which is exactly what I was searching for.
I post it here since it will probably be very useful to many people.
## Answer by mbmast (score 8)
https://quant.stackexchange.com/a/17038
NASDAQ provides a list of traded stocks. It is available on their FTP server: ftp.nasdaqtrader.com. There you will find two files of interest: nasdaqlisted.txt and otherlisted.txt. nasdaqlisted.txt lists the NASDAQ stocks. otherlisted.txt contains a field that identifies the exchange, which includes NYSE.
None of these will give you the CIK, but the data on the NASDAQ site will give you the stock symbol and the exchange.
Now you can go to the SEC's site and download either quarterly 10-Q filings, or annual 10-K filings. There are multiple ways of getting this data. The simplest way is to download flat, tab delimited SEC filings from the quarterly prepared zip archives maintained by the SEC. These are located here: http://www.sec.gov/dera/data/financial-statement-data-sets.html.
The file names are YYYYqX.zip where YYYY is the year and X is a single digit indicating the quarter. Unzip the latest one and look for the file named sub.txt. This file contains all of the information relating to the filing of financial statements with the SEC except for the actual line items that make up the balance sheet and the income statements (those are in num.txt, but you don't need them to address the question you asked).
The data in sub.txt contains a field, `CIK`, which is the one you want. You need to match this against the stock symbol. This isn't as straight forward as one would hope. Within sub.txt is a field named `instance` that identifies the name of a file that the submitter uploaded to the SEC containing all the line items (it's an XML file, but again you don't need it). The file name is constructed by appending the stock symbol name with the date of submission (formatted as YYYYMMDD), separated by a dash (most of the time). Here's a sample file name for Apple, Inc.: `aapl-20091226.xml`.
Matching the previously acquired symbol against sub.txt gives you the `CIK`. You should probably do a case insensitive match.
Note that occasionally, instead of a dash, there may be an underscore character.
Also note the the relationship between stock symbol and `CIK` is not 1:1. There are often multiple `CIKs` for a given stock symbol.
## Answer by Eliezer P (score 4)
https://quant.stackexchange.com/a/41744
I use the following approach to find CIKs for all (read:most) listed companies:
- Obtain a list of all stock symbols (tickers). I use the daily Nasdaq Traded file published to the Nasdaq FTP: ftp://ftp.nasdaqtrader.com/SymbolDirectory/nasdaqtraded.txt Note that this file isn't officially documented by Nasdaq on their Symbol Directory Definitions page but my past experience tells me that it is regularly updated and includes all of the symbols in the `nasdaqlisted.txt` and `otherlisted.txt` files.
- To minimize unnecessary lookups exclude test symbols and ETFs from your symbol list. Reference the header in the Symbol Directory file(s) you are using.
- Take the list of symbols and query the following endpoint for each symbol: https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&output=xml&CIK=SYMBOL (Replace SYMBOL with a ticker symbol) This endpoint returns XML that includes lots of company information including the CIK. For example when looking up SIRI the following is returned:
`<?xml version="1.0" encoding="ISO-8859-1" ?> <?xml-stylesheet type="text/xsl" href="/include/design2.xsl" ?> <companyFilings> <companyInfo> <CIK>0000908937</CIK> <CIKHREF>http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=0000908937&owner=include&count=40</CIKHREF> <Location>NY</Location> <SIC>4832</SIC> <SICDescription>RADIO BROADCASTING STATIONS</SICDescription> <SICHREF>http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&SIC=4832&owner=include&count=40</SICHREF> <businessAddress> [...] </businessAddress> <fiscalYearEnd>1231</fiscalYearEnd> <formerNames> [...] </formerNames> [...] <name>SIRIUS XM HOLDINGS INC.</name> </companyInfo> [...] `
- Parse the CIK in the returned XML.
- Repeat for all symbols in your list.
## Answer by Barrard (score 3)
https://quant.stackexchange.com/a/71754
https://www.sec.gov/files/company_tickers.json is the most up-to-date listing
## Answer by Jay (score 1)
https://quant.stackexchange.com/a/43270
I developed a RESTful JSON API (https://mapping-api.herokuapp.com/) for this purpose.
You can provide the exchange name, and the API returns all companies listed at the exchange in JSON format. You can also send any CIK, company ticker, or company name, and the API returns the mapping.
### Examples
#### List Companies by Exchange
Request: GET https://mapping-api.herokuapp.com/exchange/:exchange
Replace `:exchange` at the end of the URL with the exchange you are looking for, e.g. NASDAQ, or NYSE.
You can use regular expressions to retrieve companies listed on different exchanges. For example, if you want to list all companies listed on NASDAQ and NYSE, you can use `https://mapping-api.herokuapp.com/exchange/NASDAQ|NYSE`
Example: https://mapping-api.herokuapp.com/exchange/NASDAQ
Response:
```
[
{
"cik": "0001099290",
"ticker": "AAC",
"name": "Sinocoking Coal & Coke Chemical Industries Inc",
"sic": "3312",
"exchange": "NASDAQ",
"irs": "593404233"
},
{
"cik": "0000006201",
"ticker": "AAL",
"name": "American Airlines Group Inc",
"sic": "4512",
"exchange": "NASDAQ",
"irs": "751825172"
},
{
"cik": "0000008177",
"ticker": "AAME",
"name": "Atlantic American Corp",
"sic": "6311",
"exchange": "NASDAQ",
"irs": "581027114"
},
// cut for brevity
]
```
#### Resolve by CIK
Request: GET https://mapping-api.herokuapp.com/cik/:cik
Replace `:cik` at the end of the URL with the CIK you want to resolve.
Example: https://mapping-api.herokuapp.com/cik/0001318605
Response:
```
[
{
"cik": "0001318605",
"ticker": "TSLA",
"name": "Tesla Motors Inc",
"sic": "3711",
"irs": "912197729"
}
]
```
Removing trailing `0` from the CIK also works. Instead of using `0001318605`, you can use `1318605`. Same result.
#### Resolve by Ticker
Request: GET https://mapping-api.herokuapp.com/ticker/:ticker
Replace `:ticker` at the end of the URL with the ticker you want to resolve.
Example: https://mapping-api.herokuapp.com/ticker/tsla
Response:
```
[
{
"cik": "0001318605",
"ticker": "TSLA",
"exchange": "NASDAQ",
"name": "Tesla Motors Inc",
"sic": "3711",
"irs": "912197729"
},
{
"cik": "0000863456",
"ticker": "WTSLA",
"exchange": "",
"name": "Wet Seal Inc",
"sic": "5621",
"irs": "330415940"
}
]
```
Two companies are returned because `WTSLA` contains `tsla`. The API uses regular expressions under the hood allowing complex search queries. If you only want to retrieve exact matches, then use `^` as prefix, and `$` as suffix. For example, `^tsla&` (see below).
Example (exact match): GET `https://mapping-api.herokuapp.com/ticker/^tsla$`
Response:
```
[
{
"cik": "0001318605",
"ticker": "TSLA",
"exchange": "NASDAQ",
"name": "Tesla Motors Inc",
"sic": "3711",
"irs": "912197729"
}
]
```
#### Resolve by Name
Request: GET `https://mapping-api.herokuapp.com/name/:name`
Replace `:name` at the end of the URL with the company name you want to resolve.
Example: `https://mapping-api.herokuapp.com/name/Tesla`
Response:
```
[
{
"cik": "0001318605",
"ticker": "TSLA",
"exchange": "NASDAQ",
"name": "Tesla Motors Inc",
"sic": "3711",
"irs": "912197729"
}
]
```
Providing `Tesla Motors` as name returns the same result. You can use regular expressions here as well.
## Answer by mbmast (score 0)
https://quant.stackexchange.com/a/17233
The site adrCoder cited is a great source of this consolidated "relationship" information. Alternatively, SEC Form 4 (Statement in Changes of Beneficial Ownership) has the issuer name, the CIK and ticker symbol, all in one document. To avail yourself of this, you must use doc4.xml, not doc4.html. The HTML file lacks information present in the XML file (like the CIK). Other SEC forms may also have this information. I think it's important to always look at the XML file and not the HTML file, as the XML file appears to be contain more information.
## Answer by Robert (score 0)
https://quant.stackexchange.com/a/26383
Edit: the link does no longer work.
CIKs for the NASDAQ and NYSE exchanges can be extracted from the Alpha10X company list, which is accessible via the free demo account in CSV or XML format. Each entity has the following properties:
Id,CIK,LastAcceptanceDateTime,Name,SIC,IndustryDivision,IndustryMajorGroup,IndustryGroup,Industry,FYE,Exchange,Symbol
The list identifies 2061 CIKs with Exchange = "NASDAQ" and 1605 CIKs with Exchange = "NYSE".
## Answer by vonkohorn (score 0)
https://quant.stackexchange.com/a/27922
I had to solve this, too, and it took a while so I'm posting my results hoping that I can save others the time.
NYSE: https://dan.vonkohorn.com/2016/07/03/cik-ticker-mappings-for-nyse-listed-securities/
NASDAQ: https://dan.vonkohorn.com/2016/07/03/cik-ticker-mappings-for-nasdaq-listed-securities/Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.