The CEORater API
Free, and there is no key to request. The same CEO records the site runs on — tenure, total stock return, the S&P 500's return over that same tenure, and compensation — available to any script, agent or terminal.
One request, no signup
No Authorization header, no account, no rate-limit tier to choose. If you can reach the internet you can query it.
Every endpoint below hangs off one base URL:
Copy one of these
Every command below was run against the live API before this page was published, and the output shown underneath is what it actually printed.
macOS and Linux — Terminal
Readable, if you have jq:
Windows — PowerShell
Add .items. A bare Invoke-RestMethod prints the wrapper and collapses the CEO record to {@{ticker=NVDA; company=NVIDIA…, truncated. You will see no returns, no tenure and no compensation.
Many CEOs as a table. Naming the columns keeps it inside the console width:
Every CEO, every field. This is the one that never depends on your window size — each CEO prints as a block, so nothing is ever cut off:
The same 513 in a sortable window instead of the console:
Or straight into Excel — all 513 rows, all ten columns:
Windows — Command Prompt
Use curl.exe, not curl. In PowerShell, curl is an alias for Invoke-WebRequest and takes different arguments.
Python
JavaScript — browser or Node
The API sends Access-Control-Allow-Origin: *, so this runs from a page on any domain.
Filtering by sector or industry
Exact match, case-insensitive, and they combine.
The vocabulary itself, so nothing has to be guessed:
In PowerShell:
Download the whole dataset
No parameters needed — /ceos returns all 513. One request beats 513.
The same numbers the site shows
Every value is exactly what www.ceorater.com prints for that CEO, rounded the same way. Jensen Huang's row reads 545,800% on the site, and total_return_pct is 545800. Nothing to convert, nothing to scale.
| Field | API returns | Site displays |
|---|---|---|
| total_return_pct | 545800 | 545,800% |
| spy_return_pct | 892 | 892% |
| tenure_years | 27.6 | 27.6 yrs |
| compensation_musd | 36.3 | $36.3M |
Fields ending _pct are already percentages. Compensation is in millions of US dollars.
Four routes
Every CEO — all 513 — with no parameters at all. Optional ?limit= and ?offset= page through instead. Filter with ?sector=, ?industry= or ?founder=true, which are exact, case-insensitive and combinable. Returns total, offset, limit, filters and items.
One company. Case-insensitive. Returns ticker, count and items — always an array, for the reason below.
Substring match across company, ticker, sector, industry and CEO name. Loose by design — q=Technology also matches Align Technology and every Biotechnology company. For an exact sector or industry, use the filters on /ceos instead.
The 11 GICS sectors with the number of companies in each. Use it to build a filter rather than guess at spellings.
All 128 GICS sub-industries, each with its parent sector and company count. ?sector= narrows it to one sector.
Record count, the field list, and when the data was last refreshed. Cheap to poll if you want to know whether anything has changed.
Ten fields, and only ten
These are exactly the columns www.ceorater.com displays. The API deliberately publishes nothing the site does not show.
| Field | Meaning |
|---|---|
| tickerstring | Exchange ticker symbol. |
| companystring | Registrant name as filed. |
| ceostring | Chief executive. Co-CEOs are carried as separate records. |
| founderboolean | Whether this CEO founded the company. |
| sectorstring | Sector classification. |
| industrystring | Industry classification. |
| tenure_yearsnumber, 1 decimal | Years in the role. |
| total_return_pctnumber, percent | Total stock return across the tenure. 147 means +147%. |
| spy_return_pctnumber, percent | The S&P 500's return over that same period, so a CEO's record can be read against the market they ran in. |
| compensation_musdnumber, 1 decimal | Reported CEO compensation, in millions of USD. |
A field may be null where the underlying figure has not been reported.
A ticker can return two people
Oracle, KKR, Globe Life, Lululemon and Netflix each run a co-CEO structure, and each executive gets their own record with their own start date. Netflix is the clearest case: Ted Sarandos and Greg Peters were appointed years apart, so their tenures and their returns genuinely differ.
/api/v1/ceo/:ticker therefore always returns items as an array, even when it holds one person. Your code never has to branch on the shape.
Sectors and industries are S&P's, not a vendor's
Every company carries its GICS sector and sub-industry — the same classification S&P publishes for the S&P 500 — matched company by company on SEC CIK rather than on ticker, because tickers get reassigned and CIKs do not.
That means exactly 11 sectors and 128 sub-industries, with no second spelling of anything. Both fields are constrained at the source, so a new value cannot be invented by accident.
Companies no longer in the index — ASML, Shopify, Atlassian and others — are classified into the same GICS vocabulary so a filter never returns a partial answer.
How current the data is
Records are refreshed on a fifteen-minute cycle. /api/v1/meta reports last_updated and cache_age_seconds so you can see exactly how old the response you just received is.
Requests are limited to 100 per fifteen minutes per IP address. Responses carry RateLimit-Limit and RateLimit-Remaining headers. If you need the whole dataset, one call to /api/v1/ceos returns all 513 and is far kinder than 513 lookups.
What failure looks like
400 BAD_REQUEST— a malformedlimitoroffset, or a missingq.404 NOT_FOUND— no company with that ticker.429— rate limit reached. Wait for the window to roll.503 DATA_UNAVAILABLE— the dataset could not be loaded.
An empty result is never returned as a success. If CEORater cannot load its data you will get a 503, not a 200 with an empty list — so your code can tell "no data" apart from "no matches".
Terms
The API is free to use, including commercially. Attribution to CEORater is appreciated but not required. It is offered as-is with no uptime guarantee — if you are building something that depends on it, cache your own copy.
CEORater publishes reported figures and makes no investment recommendations. See the Terms of Service.