What Is a CIK Number?
A CIK (Central Index Key) is the unique identifier the SEC assigns to every entity that files through EDGAR. Think of it as a company's "social security number" for SEC filings. Every public company, mutual fund, and individual insider filer has one.
You need a company's CIK to use virtually every SEC EDGAR API endpoint:
data.sec.gov/submissions/CIK{number}.json— Filing historydata.sec.gov/api/xbrl/companyfacts/CIK{number}.json— Financial datadata.sec.gov/api/xbrl/companyconcept/CIK{number}/...— Specific metrics
All of these endpoints require the CIK to be zero-padded to 10 digits. So Apple's CIK of 320193 becomes CIK0000320193 in API URLs.
Common CIK Numbers Reference
Here are the CIK numbers for the most frequently looked up companies:
| Company | Ticker | CIK | Padded Format |
|---|---|---|---|
| Apple Inc. | AAPL | 320193 | CIK0000320193 |
| Microsoft Corp. | MSFT | 789019 | CIK0000789019 |
| Alphabet Inc. | GOOGL | 1652044 | CIK0001652044 |
| Amazon.com Inc. | AMZN | 1018724 | CIK0001018724 |
| Tesla Inc. | TSLA | 1318605 | CIK0001318605 |
| Meta Platforms Inc. | META | 1326801 | CIK0001326801 |
| NVIDIA Corp. | NVDA | 1045810 | CIK0001045810 |
| JPMorgan Chase & Co. | JPM | 19617 | CIK0000019617 |
| Berkshire Hathaway | BRK-B | 1067983 | CIK0001067983 |
| Netflix Inc. | NFLX | 1065280 | CIK0001065280 |
Method 1: company_tickers.json (Best for Bulk Lookups)
The SEC publishes a JSON file mapping all tickers to CIK numbers. This is the fastest and most reliable method, especially when you need to look up multiple companies.
import requests
HEADERS = {'User-Agent': 'YourName [email protected]'}
def build_ticker_to_cik_map():
"""Download the SEC's ticker-to-CIK mapping file."""
url = 'https://www.sec.gov/files/company_tickers.json'
response = requests.get(url, headers=HEADERS)
data = response.json()
# Build a ticker -> CIK dictionary
ticker_map = {}
for entry in data.values():
ticker_map[entry['ticker'].upper()] = entry['cik_str']
return ticker_map
# Build the map once
ticker_map = build_ticker_to_cik_map()
# Look up any company by ticker
print(ticker_map.get('AAPL')) # 320193
print(ticker_map.get('TSLA')) # 1318605
print(ticker_map.get('MSFT')) # 789019
This file contains approximately 13,000 entries and updates as new companies go public. Download it once and cache it locally for fast lookups.
Method 2: Submissions API (Best for Single Lookups)
If you already know a CIK and want to verify it or get additional company metadata, use the submissions endpoint:
import requests
HEADERS = {'User-Agent': 'YourName [email protected]'}
def get_company_info(cik):
"""Get company info from the submissions endpoint."""
cik_padded = str(cik).zfill(10)
url = f'https://data.sec.gov/submissions/CIK{cik_padded}.json'
response = requests.get(url, headers=HEADERS)
data = response.json()
return {
'name': data.get('name'),
'cik': data.get('cik'),
'tickers': data.get('tickers', []),
'sic': data.get('sic'),
'sic_description': data.get('sicDescription'),
'state': data.get('stateOfIncorporation'),
'fiscal_year_end': data.get('fiscalYearEnd')
}
# Look up Apple
info = get_company_info(320193)
print(f"{info['name']} ({info['tickers']}) - CIK: {info['cik']}")
# Apple Inc. (['AAPL']) - CIK: 320193
Method 3: EDGAR Company Search (Manual/Browser)
For quick one-off lookups, use the SEC's browser-based search tool:
- Go to sec.gov/cgi-bin/browse-edgar
- Enter the company name or ticker in the search box
- The CIK appears in the results next to the company name
You can also automate this with a direct URL:
# Direct URL lookup by ticker
https://www.sec.gov/cgi-bin/browse-edgar?company=&CIK=AAPL&type=&dateb=&owner=include&count=10&search_text=&action=getcompany
CIK Padding: How It Works
EDGAR API endpoints require CIK numbers padded with leading zeros to exactly 10 digits. Here is how to handle this in your code:
# Python
cik = '320193'
padded = cik.zfill(10) # '0000320193'
url = f'https://data.sec.gov/submissions/CIK{padded}.json'
// JavaScript
const cik = '320193';
const padded = cik.padStart(10, '0'); // '0000320193'
const url = `https://data.sec.gov/submissions/CIK${padded}.json`;
Common mistakes to avoid:
- Using
CIK320193instead ofCIK0000320193— results in a 404 - Including the "CIK" prefix when the endpoint already expects it
- Not converting to a string before padding (integers can not be zero-padded)
Building a Reusable CIK Resolver
Here is a complete Python class that combines all three methods with caching:
import requests
import json
import os
class CIKResolver:
"""Resolve company tickers to SEC CIK numbers with local caching."""
CACHE_FILE = 'ticker_cik_cache.json'
HEADERS = {'User-Agent': 'YourName [email protected]'}
def __init__(self):
self.ticker_map = self._load_or_fetch()
def _load_or_fetch(self):
"""Load from cache or fetch fresh data from SEC."""
if os.path.exists(self.CACHE_FILE):
with open(self.CACHE_FILE) as f:
return json.load(f)
url = 'https://www.sec.gov/files/company_tickers.json'
data = requests.get(url, headers=self.HEADERS).json()
ticker_map = {v['ticker'].upper(): v['cik_str'] for v in data.values()}
with open(self.CACHE_FILE, 'w') as f:
json.dump(ticker_map, f)
return ticker_map
def lookup(self, ticker):
"""Get the CIK for a ticker symbol."""
cik = self.ticker_map.get(ticker.upper())
if cik is None:
raise ValueError(f'Ticker {ticker} not found')
return str(cik)
def lookup_padded(self, ticker):
"""Get the 10-digit zero-padded CIK for API calls."""
return self.lookup(ticker).zfill(10)
# Usage
resolver = CIKResolver()
print(resolver.lookup('AAPL')) # 320193
print(resolver.lookup_padded('AAPL')) # 0000320193
FAQ
What is a CIK number?
A CIK (Central Index Key) is a unique 10-digit identifier assigned by the SEC to every entity that files documents through EDGAR. Companies, mutual funds, and individuals who file with the SEC all have CIK numbers.
How do I find a company's CIK number from its ticker symbol?
The fastest method is to download the SEC's company_tickers.json file from sec.gov/files/company_tickers.json. This JSON file maps every ticker symbol to its CIK number.
What is Apple's CIK number?
Apple's CIK number is 320193. In the zero-padded 10-digit format used by EDGAR API endpoints, it is CIK0000320193.
Why does the SEC pad CIK numbers with zeros?
EDGAR API endpoints require CIK numbers to be zero-padded to exactly 10 digits. This ensures consistent URL formatting across all API calls.
Can I look up multiple CIK numbers at once?
Yes. Download company_tickers.json once (it contains all ~13,000 publicly traded companies) and search it locally. This is far more efficient than making individual API calls for each ticker.
Related Guides
- Free SEC EDGAR API Guide — Complete overview of all EDGAR API endpoints
- SEC EDGAR Full-Text Search API — Search the text of every SEC filing
- Build a Stock Screener with the SEC EDGAR API — Python tutorial using XBRL data
- Download SEC 10-K Filings Programmatically — Python & JavaScript guide
- SEC EDGAR API Rate Limits & Best Practices — Avoid getting blocked