{"id":8176,"date":"2026-09-17T09:00:45","date_gmt":"2026-09-17T07:00:45","guid":{"rendered":"https:\/\/eodhd.com\/financial-apis\/review-copy-end-of-day-historical-data-api"},"modified":"2026-09-17T09:19:29","modified_gmt":"2026-09-17T07:19:29","slug":"review-copy-end-of-day-historical-data-api","status":"publish","type":"post","link":"https:\/\/eodhd.com\/financial-apis\/review-copy-end-of-day-historical-data-api","title":{"rendered":"REVIEW COPY \u2014 End-of-Day Historical Data API"},"content":{"rendered":"\n<p class=\"docs-content__text wp-block-paragraph\">The End-of-Day Historical Data API returns the daily price history of a single instrument: open, high, low, close, adjusted close and volume, one row per trading day, for stocks, ETFs, mutual funds, indices, forex pairs and cryptocurrencies. You can aggregate the same series into weekly or monthly bars, slice it by date, sort it either way, or reduce it to a single number.<\/p>\n\n\n\n<p class=\"docs-content__text wp-block-paragraph\">History is deep. The S&amp;P 500 series starts on <strong>30 December 1927<\/strong> and carries <strong>24,794 daily bars<\/strong>; the oldest US common stocks we hold begin on <strong>2 January 1962<\/strong>. Every figure on this page was measured against the live API on 17 September 2026, and every request example runs as written.<\/p>\n\n\n\n<p class=\"docs-content__text wp-block-paragraph\">\n    <div class=\"test-drive\">\n        <div class=\"test-drive__heading\">\n            <svg width=\"24\" height=\"24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                <use xlink:href=\"\/img\/icons\/blueIcon_sprite.svg#lightning\"><\/use>\n            <\/svg>\n            Test Drive with \"DEMO\" Key\n        <\/div>\n        <ol class=\"test-drive__list\">\n            <li class=\"test-drive__item\">\n                You can start with \"<strong>DEMO<\/strong>\" API key to test the data for a few tickers only:\n                <a href=\"\/financial-summary\/AAPL.US\" target=\"_blank\">AAPL.US<\/a>,\n                <a href=\"\/financial-summary\/TSLA.US\" target=\"_blank\">TSLA.US<\/a>,\n                <a href=\"\/financial-summary\/VTI.US\" target=\"_blank\">VTI.US<\/a>,\n                <a href=\"\/financial-summary\/AMZN.US\" target=\"_blank\">AMZN.US<\/a>,\n                <a href=\"\/financial-summary\/BTC-USD.CC\" target=\"_blank\">BTC-USD.CC<\/a>\n                and\n                <a href=\"\/financial-summary\/EURUSD.FOREX\" target=\"_blank\">EURUSD.FOREX<\/a>.\n                For these tickers,\n                <a href=\"\/financial-apis\/\">all of our types of data (APIs)<\/a>,\n                including\n                <a href=\"\/financial-apis\/new-real-time-data-api-websockets\/\" target=\"_blank\">Real-Time Data<\/a>,\n                are available without limitations.\n            <\/li>\n            <li class=\"test-drive__item\">\n                Register <strong>for the free plan<\/strong> to receive your API key (limited to 20 API calls per day) with access to\n                <a href=\"\/financial-apis\/api-for-historical-data-and-volumes\/\" target=\"_blank\">End-Of-Day Historical Stock Market Data API<\/a>\n                for any ticker, but within the past year only. Plus a\n                <a href=\"\/financial-apis\/exchanges-api-list-of-tickers-and-trading-hours\/#Get_List_of_Tickers_Exchange_Symbols\" target=\"_blank\">List of tickers per Exchange<\/a>\n                is available.\n            <\/li>\n            <li class=\"test-drive__item\">\n                We recommend to explore\n                <a href=\"\/pricing\">our plans<\/a>,\n                <strong>starting from $19.99<\/strong>, to access the necessary type of data without limitations.\n            <\/li>\n        <\/ol>\n    <\/div>\n<\/p>\n\n\n<!--TOC-->\n\n\n    <div class=\"admonition admonition--note\">\n        <span class=\"admonition__icon\" aria-hidden=\"true\"><svg viewBox=\"0 0 20 20\" fill=\"currentColor\" width=\"20\" height=\"20\"><path fill-rule=\"evenodd\" d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\"\/><\/svg><\/span>\n        <div class=\"admonition__body\">\n\n<p class=\"docs-content__text wp-block-paragraph\">This endpoint serves <strong>one symbol per request<\/strong>. To download a whole exchange for a single date, or to pull many tickers in one go, use the <a href=\"https:\/\/eodhd.com\/financial-apis\/bulk-api-eod-splits-dividends\">Bulk API<\/a>. For today&#8217;s price while the market is still open, use the <a href=\"https:\/\/eodhd.com\/financial-apis\/live-realtime-stocks-api\">Live (Delayed) API<\/a>; for intraday bars, the <a href=\"https:\/\/eodhd.com\/financial-apis\/intraday-historical-data-api\">Intraday API<\/a>.<\/p>\n\n<\/div>\n    <\/div>\n    \n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"docs-content__heading docs-content__heading--h2 wp-block-heading\" id=\"h-end-of-day-historical-data\">End-of-Day Historical Data<\/h2>\n\n\n<div class=\"code-block\">\n<pre class=\"docs-content__code-block wp-block-code\"><code>https:\/\/eodhd.com\/api\/eod\/{SYMBOL}?api_token=YOUR_API_TOKEN&amp;fmt=json<\/code><\/pre>\n<\/div>\n\n\n<p class=\"docs-content__text wp-block-paragraph\">Method GET. Authentication is by api_token in the query string. The default output format is CSV; add fmt=json for a JSON array. With no date range, the response is the instrument&#8217;s entire history.<\/p>\n\n\n\n<h4 class=\"docs-content__heading docs-content__heading--h4 wp-block-heading\" id=\"h-path-parameter\">Path Parameter<\/h4>\n\n\n<div class=\"docs-parameters\">\n    \n<div class=\"docs-parameters__item\">\n    <div class=\"docs-parameters__name\">\n                    <code class=\"docs-parameters__ident\">SYMBOL<\/code>\n        \n                    <span class=\"docs-parameters__type\">string<\/span>\n        \n        <span class=\"docs-parameters__badge docs-parameters__badge--required\">\n            required        <\/span>\n    <\/div>\n\n    <div class=\"docs-parameters__desc\">\n        <span class=\"docs-parameters__desc-text\">Ticker in EODHD format, SYMBOL.EXCHANGE \u2014 for example AAPL.US, BP.LSE, SAP.XETRA or RELIANCE.NSE. The .US suffix may be omitted: a request for AAPL returns the same series as AAPL.US. A ticker we do not carry returns HTTP 404 Ticker Not Found, and that failed request is still billed as one call<\/span>\n            <\/div>\n<\/div>\n\n<\/div>\n\n\n\n<h4 class=\"docs-content__heading docs-content__heading--h4 wp-block-heading\" id=\"h-query-parameters\">Query Parameters<\/h4>\n\n\n<div class=\"docs-parameters\">\n    \n<div class=\"docs-parameters__item\">\n    <div class=\"docs-parameters__name\">\n                    <code class=\"docs-parameters__ident\">api_token<\/code>\n        \n                    <span class=\"docs-parameters__type\">string<\/span>\n        \n        <span class=\"docs-parameters__badge docs-parameters__badge--required\">\n            required        <\/span>\n    <\/div>\n\n    <div class=\"docs-parameters__desc\">\n        <span class=\"docs-parameters__desc-text\">Your EODHD API token. Missing or invalid returns HTTP 401 Unauthenticated<\/span>\n            <\/div>\n<\/div>\n\n\n<div class=\"docs-parameters__item\">\n    <div class=\"docs-parameters__name\">\n                    <code class=\"docs-parameters__ident\">fmt<\/code>\n        \n                    <span class=\"docs-parameters__type\">enum<\/span>\n        \n        <span class=\"docs-parameters__badge docs-parameters__badge--optional\">\n            optional        <\/span>\n    <\/div>\n\n    <div class=\"docs-parameters__desc\">\n        <span class=\"docs-parameters__desc-text\">Output format. Allowed values: csv, json. Any other value silently falls back to CSV<\/span>\n                    <span class=\"docs-parameters__default\"><em>(Default: csv)<\/em><\/span>\n            <\/div>\n<\/div>\n\n\n<div class=\"docs-parameters__item\">\n    <div class=\"docs-parameters__name\">\n                    <code class=\"docs-parameters__ident\">period<\/code>\n        \n                    <span class=\"docs-parameters__type\">enum<\/span>\n        \n        <span class=\"docs-parameters__badge docs-parameters__badge--optional\">\n            optional        <\/span>\n    <\/div>\n\n    <div class=\"docs-parameters__desc\">\n        <span class=\"docs-parameters__desc-text\">Bar size. Allowed values: d (daily), w (weekly), m (monthly). Weekly and monthly bars are built from the daily series: OHLC spans the period and volume is summed. Any other value silently falls back to d<\/span>\n                    <span class=\"docs-parameters__default\"><em>(Default: d)<\/em><\/span>\n            <\/div>\n<\/div>\n\n\n<div class=\"docs-parameters__item\">\n    <div class=\"docs-parameters__name\">\n                    <code class=\"docs-parameters__ident\">order<\/code>\n        \n                    <span class=\"docs-parameters__type\">enum<\/span>\n        \n        <span class=\"docs-parameters__badge docs-parameters__badge--optional\">\n            optional        <\/span>\n    <\/div>\n\n    <div class=\"docs-parameters__desc\">\n        <span class=\"docs-parameters__desc-text\">Sort by date. Allowed values: a (ascending, oldest first), d (descending, newest first). Any other value silently falls back to a<\/span>\n                    <span class=\"docs-parameters__default\"><em>(Default: a)<\/em><\/span>\n            <\/div>\n<\/div>\n\n\n<div class=\"docs-parameters__item\">\n    <div class=\"docs-parameters__name\">\n                    <code class=\"docs-parameters__ident\">from<\/code>\n        \n                    <span class=\"docs-parameters__type\">date<\/span>\n        \n        <span class=\"docs-parameters__badge docs-parameters__badge--optional\">\n            optional        <\/span>\n    <\/div>\n\n    <div class=\"docs-parameters__desc\">\n        <span class=\"docs-parameters__desc-text\">Start of the window, YYYY-MM-DD, inclusive. Must be YYYY-MM-DD \u2014 a date written any other way is reinterpreted rather than rejected, and you get a window you did not ask for<\/span>\n                    <span class=\"docs-parameters__default\"><em>(Default: earliest available)<\/em><\/span>\n            <\/div>\n<\/div>\n\n\n<div class=\"docs-parameters__item\">\n    <div class=\"docs-parameters__name\">\n                    <code class=\"docs-parameters__ident\">to<\/code>\n        \n                    <span class=\"docs-parameters__type\">date<\/span>\n        \n        <span class=\"docs-parameters__badge docs-parameters__badge--optional\">\n            optional        <\/span>\n    <\/div>\n\n    <div class=\"docs-parameters__desc\">\n        <span class=\"docs-parameters__desc-text\">End of the window, YYYY-MM-DD, inclusive. Works on its own. A window that ends before it starts, or that lies entirely in the future, returns HTTP 200 with an empty array<\/span>\n                    <span class=\"docs-parameters__default\"><em>(Default: latest available)<\/em><\/span>\n            <\/div>\n<\/div>\n\n\n<div class=\"docs-parameters__item\">\n    <div class=\"docs-parameters__name\">\n                    <code class=\"docs-parameters__ident\">filter<\/code>\n        \n                    <span class=\"docs-parameters__type\">enum<\/span>\n        \n        <span class=\"docs-parameters__badge docs-parameters__badge--optional\">\n            optional        <\/span>\n    <\/div>\n\n    <div class=\"docs-parameters__desc\">\n        <span class=\"docs-parameters__desc-text\">Return one value instead of the series. Allowed values: last_date, last_open, last_high, last_low, last_close, last_volume. This list is exhaustive \u2014 anything else, including last_adjusted_close, returns an empty value<\/span>\n            <\/div>\n<\/div>\n\n<\/div>\n\n\n    <div class=\"admonition admonition--warning\">\n        <span class=\"admonition__icon\" aria-hidden=\"true\"><svg viewBox=\"0 0 20 20\" fill=\"currentColor\" width=\"20\" height=\"20\"><path fill-rule=\"evenodd\" d=\"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625l6.28-10.875zM10 6a1 1 0 011 1v3a1 1 0 11-2 0V7a1 1 0 011-1zm0 8a1 1 0 100-2 1 1 0 000 2z\"\/><\/svg><\/span>\n        <div class=\"admonition__body\">\n\n<p class=\"docs-content__text wp-block-paragraph\">Unrecognised values are not errors. A misspelled fmt, period or order is accepted, ignored, and quietly replaced by the default, so a typo in your client produces plausible data rather than a failure. Validate these three values on your side before sending the request.<\/p>\n\n<\/div>\n    <\/div>\n    \n\n\n<h4 class=\"docs-content__heading docs-content__heading--h4 wp-block-heading\" id=\"h-request-example\">Request Example<\/h4>\n\n\n    <div class=\"api-key\" data-feed=\"EOD Historical Data\">\n                <div class=\"api-key__topbar\">\n            <div class=\"api-key__tablist\" role=\"tablist\">\n                                                                        <button\n                        class=\"api-key__tab api-key__tab--active\"\n                        type=\"button\"\n                        role=\"tab\"\n                        data-tab=\"url\"                    >URL<\/button>\n                                                                            <button\n                        class=\"api-key__tab\"\n                        type=\"button\"\n                        role=\"tab\"\n                        data-tab=\"curl\"                    >cURL<\/button>\n                                                                            <button\n                        class=\"api-key__tab\"\n                        type=\"button\"\n                        role=\"tab\"\n                        data-tab=\"php\"                    >PHP<\/button>\n                                                                            <button\n                        class=\"api-key__tab\"\n                        type=\"button\"\n                        role=\"tab\"\n                        data-tab=\"python\"                    >Python<\/button>\n                                                                            <button\n                        class=\"api-key__tab\"\n                        type=\"button\"\n                        role=\"tab\"\n                        data-tab=\"r\"                    >R<\/button>\n                                                                            <button\n                        class=\"api-key__tab\"\n                        type=\"button\"\n                        role=\"tab\"\n                        data-tab=\"chatgpt\" data-actions=\"false\"                    >Chat GPT<\/button>\n                                                <\/div>\n            <div class=\"api-key__actions\">\n                <button class=\"api-key__btn api-key__btn--copy\" type=\"button\" aria-label=\"Copy\">\n                    <svg viewBox=\"0 0 20 20\" width=\"18\" height=\"18\" class=\"api-key__btn-icon api-key__btn-icon--default\"><use xlink:href=\"\/img\/icons\/copy.svg#copy\"\/><\/svg>\n                    <img decoding=\"async\" class=\"api-key__btn-icon api-key__btn-icon--success\" src=\"\/img\/approve_ico.svg\" alt=\"\" width=\"14\" height=\"14\" loading=\"eager\">\n                <\/button>\n                <button class=\"api-key__btn api-key__btn--view\" type=\"button\" aria-label=\"Open in new tab\" data-url=\"https:\/\/eodhd.com\/api\/eod\/MCD.US?api_token=demo&amp;from=2024-01-02&amp;to=2024-01-05&amp;period=d&amp;fmt=json\">\n                    <svg viewBox=\"0 0 20 21\" width=\"18\" height=\"18\"><use xlink:href=\"\/img\/icons\/openLink.svg#openLink\"\/><\/svg>\n                <\/button>\n            <\/div>\n        <\/div>\n        \n        <div class=\"api-key__panels\">\n                                                                        <div class=\"api-key__panel api-key__panel--active\" data-panel=\"url\">\n                                            <pre class=\"api-key__code\"><code>https:\/\/eodhd.com\/api\/eod\/<span class='orange bold'>MCD.US<\/span>?<span class='white bold'>api_token<\/span>=<span class='orange bold api_token'>demo<\/span>&<span class='white bold'>from<\/span>=<span class='orange bold from'>2024-01-02<\/span>&<span class='white bold'>to<\/span>=<span class='orange bold to'>2024-01-05<\/span>&<span class='white bold'>period<\/span>=<span class='orange bold period'>d<\/span>&<span class='white bold'>fmt<\/span>=<span class='orange bold fmt'>json<\/span><\/code><\/pre>\n                        <div class=\"api-key__register\">(<a href=\"\/register\">Sign up<\/a> for free to get an API token)<\/div>\n                                    <\/div>\n                                                                            <div class=\"api-key__panel\" data-panel=\"curl\">\n                                                                    <pre class=\"api-key__code\"><code>curl --location &quot;https:\/\/eodhd.com\/api\/eod\/<span class='orange bold'>MCD.US<\/span>?<span class='white bold'>api_token<\/span>=<span class='orange bold api_token'>demo<\/span>&<span class='white bold'>from<\/span>=<span class='orange bold from'>2024-01-02<\/span>&<span class='white bold'>to<\/span>=<span class='orange bold to'>2024-01-05<\/span>&<span class='white bold'>period<\/span>=<span class='orange bold period'>d<\/span>&<span class='white bold'>fmt<\/span>=<span class='orange bold fmt'>json<\/span>&quot;<\/code><\/pre>\n                        <div class=\"api-key__register\">(<a href=\"\/register\">Sign up<\/a> for free to get an API token)<\/div>\n                                    <\/div>\n                                                                            <div class=\"api-key__panel\" data-panel=\"php\">\n                                                                    <pre class=\"api-key__code\"><code>$curl = curl_init();\n\ncurl_setopt_array($curl, array(\n    CURLOPT_URL =&gt; &#039;https:\/\/eodhd.com\/api\/eod\/<span class='orange bold'>MCD.US<\/span>?<span class='white bold'>api_token<\/span>=<span class='orange bold api_token'>demo<\/span>&<span class='white bold'>from<\/span>=<span class='orange bold from'>2024-01-02<\/span>&<span class='white bold'>to<\/span>=<span class='orange bold to'>2024-01-05<\/span>&<span class='white bold'>period<\/span>=<span class='orange bold period'>d<\/span>&<span class='white bold'>fmt<\/span>=<span class='orange bold fmt'>json<\/span>&#039;,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_ENCODING =&gt; &#039;&#039;,\n    CURLOPT_MAXREDIRS =&gt; 10,\n    CURLOPT_TIMEOUT =&gt; 0,\n    CURLOPT_FOLLOWLOCATION =&gt; true,\n    CURLOPT_HTTP_VERSION =&gt; CURL_HTTP_VERSION_1_1,\n    CURLOPT_CUSTOMREQUEST =&gt; &#039;GET&#039;,\n));\n\n$data = curl_exec($curl);\ncurl_close($curl);\n\ntry {\n    $data = json_decode($data, true, 512, JSON_THROW_ON_ERROR);\n    var_dump($data);\n} catch (Exception $e) {\n    echo &#039;Error. &#039;.$e-&gt;getMessage();\n}<\/code><\/pre>\n                        <div class=\"api-key__register\">(<a href=\"\/register\">Sign up<\/a> for free to get an API token)<\/div>\n                                    <\/div>\n                                                                            <div class=\"api-key__panel\" data-panel=\"python\">\n                                                                    <pre class=\"api-key__code\"><code>import requests\n\nurl = f&#039;https:\/\/eodhd.com\/api\/eod\/<span class='orange bold'>MCD.US<\/span>?<span class='white bold'>api_token<\/span>=<span class='orange bold api_token'>demo<\/span>&<span class='white bold'>from<\/span>=<span class='orange bold from'>2024-01-02<\/span>&<span class='white bold'>to<\/span>=<span class='orange bold to'>2024-01-05<\/span>&<span class='white bold'>period<\/span>=<span class='orange bold period'>d<\/span>&<span class='white bold'>fmt<\/span>=<span class='orange bold fmt'>json<\/span>&#039;\ndata = requests.get(url).json()\n\nprint(data)<\/code><\/pre>\n                        <div class=\"api-key__register\">(<a href=\"\/register\">Sign up<\/a> for free to get an API token)<\/div>\n                                    <\/div>\n                                                                            <div class=\"api-key__panel\" data-panel=\"r\">\n                                                                    <pre class=\"api-key__code\"><code>library(httr)\nlibrary(jsonlite)\n\nurl &lt;- &#039;https:\/\/eodhd.com\/api\/eod\/<span class='orange bold'>MCD.US<\/span>?<span class='white bold'>api_token<\/span>=<span class='orange bold api_token'>demo<\/span>&<span class='white bold'>from<\/span>=<span class='orange bold from'>2024-01-02<\/span>&<span class='white bold'>to<\/span>=<span class='orange bold to'>2024-01-05<\/span>&<span class='white bold'>period<\/span>=<span class='orange bold period'>d<\/span>&<span class='white bold'>fmt<\/span>=<span class='orange bold fmt'>json<\/span>&#039;\nresponse &lt;- GET(url)\n\nif (http_type(response) == &quot;application\/json&quot;) {\n    content &lt;- content(response, &quot;text&quot;, encoding = &quot;UTF-8&quot;)\n    cat(content)\n} else {\n    cat(&quot;Error while receiving data\\n&quot;)\n}<\/code><\/pre>\n                        <div class=\"api-key__register\">(<a href=\"\/register\">Sign up<\/a> for free to get an API token)<\/div>\n                                    <\/div>\n                                                                            <div class=\"api-key__panel\" data-panel=\"chatgpt\">\n                                            <div class=\"api-key__chatgpt\">\n                            New to coding? Our ChatGPT assistant can generate code in any language tailored to our API.\n                            Simply describe how you want to use our data, and get a working piece of code.\n                            Don&rsquo;t forget to replace the API token with your own.<br><br>\n                            <a href=\"\/lp\/eodhd-chatgpt\" target=\"_blank\">Try it now (it's free)!<\/a><br><br>\n                            <a href=\"https:\/\/www.youtube.com\/watch?v=QVWiLukag7o\" rel=\"nofollow\" target=\"_blank\">\n                                How to use it (YouTube)\n                            <\/a>\n                        <\/div>\n                                    <\/div>\n                                    <\/div>\n    <\/div>\n    \n\n\n\n<h4 class=\"docs-content__heading docs-content__heading--h4 wp-block-heading\" id=\"h-response-example-json\">Response Example, JSON<\/h4>\n\n\n\n<p class=\"docs-content__text wp-block-paragraph\">The first two of the four rows the request above returns:<\/p>\n\n\n<div class=\"code-block\">\n<pre class=\"docs-content__code-block wp-block-code\"><code lang=\"json\" class=\"language-json\">[\n  {\n    \"date\": \"2024-01-02\",\n    \"open\": 295.05,\n    \"high\": 297.28,\n    \"low\": 295.05,\n    \"close\": 297.04,\n    \"adjusted_close\": 277.9465,\n    \"volume\": 4458400\n  },\n  {\n    \"date\": \"2024-01-03\",\n    \"open\": 297,\n    \"high\": 297.99,\n    \"low\": 294.25,\n    \"close\": 294.39,\n    \"adjusted_close\": 275.4668,\n    \"volume\": 3114800\n  }\n]<\/code><\/pre>\n<\/div>\n\n\n<h4 class=\"docs-content__heading docs-content__heading--h4 wp-block-heading\" id=\"h-response-example-csv\">Response Example, CSV<\/h4>\n\n\n\n<p class=\"docs-content__text wp-block-paragraph\">Drop fmt=json and the same request returns CSV with a header row \u2014 the format Excel, Google Sheets and pandas read without any parsing code:<\/p>\n\n\n<div class=\"code-block\">\n<pre class=\"docs-content__code-block wp-block-code\"><code>Date,Open,High,Low,Close,Adjusted_close,Volume\n2024-01-02,295.05,297.28,295.05,297.04,277.9465,4458400\n2024-01-03,297,297.99,294.25,294.39,275.4668,3114800\n2024-01-04,295.32,297.27,290.92,291.74,272.9872,4615400\n2024-01-05,289.21,290.33,287.2,288.99,270.4139,3407300<\/code><\/pre>\n<\/div>\n\n\n<h4 class=\"docs-content__heading docs-content__heading--h4 wp-block-heading\" id=\"h-response-fields\">Response Fields<\/h4>\n\n\n\n<figure class=\"docs-content__table-wrap wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Field<\/th><th>Type<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>date<\/td><td>string (date)<\/td><td>Trading date, YYYY-MM-DD. For weekly and monthly bars, the first trading day of the period<\/td><\/tr><tr><td>open<\/td><td>number<\/td><td>Opening price, as traded \u2014 not adjusted<\/td><\/tr><tr><td>high<\/td><td>number<\/td><td>Highest price of the period, as traded<\/td><\/tr><tr><td>low<\/td><td>number<\/td><td>Lowest price of the period, as traded<\/td><\/tr><tr><td>close<\/td><td>number<\/td><td>Closing price, as traded \u2014 not adjusted<\/td><\/tr><tr><td>adjusted_close<\/td><td>number<\/td><td>Closing price adjusted for both splits and dividends<\/td><\/tr><tr><td>volume<\/td><td>integer<\/td><td>Traded volume, adjusted for splits. Summed across the period for weekly and monthly bars<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"docs-content__text wp-block-paragraph\">Aggregation is arithmetic, not a separate feed. The weekly bar for the week of 2 January 2024 on MCD.US opens at 295.05 (Tuesday&#8217;s open), closes at 288.99 (Friday&#8217;s close), spans a high of 297.99 and a low of 287.20, and reports a volume of 15,595,900 \u2014 exactly the sum of the four daily volumes above.<\/p>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"docs-content__heading docs-content__heading--h2 wp-block-heading\" id=\"h-raw-split-adjusted-and-fully-adjusted-prices\">Raw, Split-Adjusted and Fully Adjusted Prices<\/h2>\n\n\n\n<p class=\"docs-content__text wp-block-paragraph\">This is the single most common source of confusion with end-of-day data, so it is worth being precise. The OHLC fields are <strong>raw<\/strong> \u2014 the prices as they printed on the tape that day, with no adjustment for anything. The adjusted_close field is adjusted for <strong>both splits and dividends<\/strong>. The volume field is adjusted for <strong>splits only<\/strong>.<\/p>\n\n\n\n<p class=\"docs-content__text wp-block-paragraph\">Apple&#8217;s 4-for-1 split on 31 August 2020 makes the three views easy to see. All three rows below are the same trading day, 27 August 2020:<\/p>\n\n\n\n<figure class=\"docs-content__table-wrap wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>View<\/th><th>Source<\/th><th>Close<\/th><th>Volume<\/th><\/tr><\/thead><tbody><tr><td>Raw, as traded<\/td><td>close from this API<\/td><td>500.04<\/td><td>155,552,400<\/td><\/tr><tr><td>Split-adjusted<\/td><td>Technical API, function=splitadjusted<\/td><td>125.01<\/td><td>155,552,400<\/td><\/tr><tr><td>Split- and dividend-adjusted<\/td><td>adjusted_close from this API<\/td><td>121.1519<\/td><td>155,552,400<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"docs-content__text wp-block-paragraph\">500.04 divided by four is 125.01, which is why a chart of raw closes shows a 75% crash on 31 August 2020 that never happened. The further step down to 121.1519 is the accumulated dividend adjustment. Volume is identical in all three rows because it is already split-adjusted in the base series. If you need OHLC adjusted for splits but not dividends, use the <a href=\"https:\/\/eodhd.com\/financial-apis\/technical-indicators-api\">Technical API<\/a> with function=splitadjusted; the split and dividend events themselves come from the <a href=\"https:\/\/eodhd.com\/financial-apis\/api-splits-dividends\">Splits and Dividends API<\/a>.<\/p>\n\n\n    <div class=\"admonition admonition--warning\">\n        <span class=\"admonition__icon\" aria-hidden=\"true\"><svg viewBox=\"0 0 20 20\" fill=\"currentColor\" width=\"20\" height=\"20\"><path fill-rule=\"evenodd\" d=\"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625l6.28-10.875zM10 6a1 1 0 011 1v3a1 1 0 11-2 0V7a1 1 0 011-1zm0 8a1 1 0 100-2 1 1 0 000 2z\"\/><\/svg><\/span>\n        <div class=\"admonition__body\">\n\n<p class=\"docs-content__text wp-block-paragraph\">Adjusted closes are recomputed, not stored. Every new dividend re-scales the whole history behind it, so the adjusted_close for a day in 2024 is a different number this month than it was last month \u2014 by design, and for every vendor that publishes adjusted prices. Never treat an adjusted close as a stable key, never compare a cached one against a fresh one to detect a data change, and re-download the series rather than patching the tail onto it.<\/p>\n\n<\/div>\n    <\/div>\n    \n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"docs-content__heading docs-content__heading--h2 wp-block-heading\" id=\"h-symbols-exchanges-and-history-depth\">Symbols, Exchanges and History Depth<\/h2>\n\n\n\n<p class=\"docs-content__text wp-block-paragraph\">Tickers follow the SYMBOL.EXCHANGE convention, where the suffix is our exchange code rather than a MIC \u2014 US for all American venues, LSE for London, XETRA for Frankfurt, PA for Euronext Paris, NSE for India, FOREX for currency pairs, CC for crypto and INDX for indices. The full list comes from the <a href=\"https:\/\/eodhd.com\/financial-apis\/exchanges-api-list-of-tickers-and-trading-hours\">Exchanges API<\/a>, the tickers inside one exchange from its <a href=\"https:\/\/eodhd.com\/financial-apis\/covered-tickers-eodhd\">symbol list<\/a>, and if you only know a company name, the <a href=\"https:\/\/eodhd.com\/financial-apis\/search-api-for-stocks-etfs-mutual-funds-and-indices\">Search API<\/a> resolves it.<\/p>\n\n\n\n<p class=\"docs-content__text wp-block-paragraph\">The table below is a live sample across asset classes, measured on 17 September 2026 \u2014 first available bar and total number of daily bars returned by a single request:<\/p>\n\n\n\n<figure class=\"docs-content__table-wrap wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Symbol<\/th><th>Instrument<\/th><th>History starts<\/th><th>Daily bars<\/th><\/tr><\/thead><tbody><tr><td>GSPC.INDX<\/td><td>S&amp;P 500 index<\/td><td>1927-12-30<\/td><td>24,794<\/td><\/tr><tr><td>DJI.INDX<\/td><td>Dow Jones Industrial Average<\/td><td>1950-01-02<\/td><td>19,693<\/td><\/tr><tr><td>IBM.US<\/td><td>US common stock<\/td><td>1962-01-02<\/td><td>16,285<\/td><\/tr><tr><td>MCD.US<\/td><td>US common stock<\/td><td>1966-07-05<\/td><td>15,150<\/td><\/tr><tr><td>AAPL.US<\/td><td>US common stock<\/td><td>1980-12-12<\/td><td>11,532<\/td><\/tr><tr><td>BP.LSE<\/td><td>London Stock Exchange<\/td><td>1988-07-01<\/td><td>9,799<\/td><\/tr><tr><td>SAP.XETRA<\/td><td>XETRA, Germany<\/td><td>1994-09-13<\/td><td>7,976<\/td><\/tr><tr><td>RELIANCE.NSE<\/td><td>NSE, India<\/td><td>1996-01-01<\/td><td>7,718<\/td><\/tr><tr><td>AIR.PA<\/td><td>Euronext Paris<\/td><td>1999-06-04<\/td><td>6,980<\/td><\/tr><tr><td>VTI.US<\/td><td>US ETF<\/td><td>2001-05-31<\/td><td>6,361<\/td><\/tr><tr><td>EURUSD.FOREX<\/td><td>Forex pair<\/td><td>2002-05-06<\/td><td>8,171<\/td><\/tr><tr><td>BTC-USD.CC<\/td><td>Cryptocurrency<\/td><td>2010-07-13<\/td><td>5,911<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"docs-content__text wp-block-paragraph\">Mutual funds are covered too and behave like any other symbol, except that volume is reported as zero because funds do not trade on an order book.<\/p>\n\n\n    <div class=\"admonition admonition--note\">\n        <span class=\"admonition__icon\" aria-hidden=\"true\"><svg viewBox=\"0 0 20 20\" fill=\"currentColor\" width=\"20\" height=\"20\"><path fill-rule=\"evenodd\" d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\"\/><\/svg><\/span>\n        <div class=\"admonition__body\">\n\n<p class=\"docs-content__text wp-block-paragraph\">Delisted and renamed symbols behave differently, and the difference catches people out. A <strong>delisted<\/strong> ticker keeps its history: TWTR.US still returns Twitter&#8217;s prices up to the day it stopped trading in October 2022 \u2014 see <a href=\"https:\/\/eodhd.com\/financial-apis\/delisted-stock-companies-data-2\">Delisted Stock Companies Data<\/a> for the full list. A <strong>renamed<\/strong> ticker does not \u2014 FB.US returns an empty array, because that series now lives under META.US. When a long history stops unexpectedly, check the <a href=\"https:\/\/eodhd.com\/financial-apis\/us-stock-symbol-rename-history-api\">US Stock Symbol Rename History API<\/a> before concluding the data is missing.<\/p>\n\n<\/div>\n    <\/div>\n    \n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"docs-content__heading docs-content__heading--h2 wp-block-heading\" id=\"h-single-value-output\">Single Value Output<\/h2>\n\n\n\n<p class=\"docs-content__text wp-block-paragraph\">The filter parameter collapses the response to one value \u2014 the latest date, open, high, low, close or volume. It is built for spreadsheets: a single cell formula such as Excel&#8217;s WEBSERVICE or Google Sheets&#8217; IMPORTDATA gets a number it can use directly, with nothing to parse.<\/p>\n\n\n    <div class=\"api-key\" data-feed=\"EOD Historical Data\">\n                <div class=\"api-key__topbar\">\n            <div class=\"api-key__tablist\" role=\"tablist\">\n                                                                        <button\n                        class=\"api-key__tab api-key__tab--active\"\n                        type=\"button\"\n                        role=\"tab\"\n                        data-tab=\"url\"                    >URL<\/button>\n                                                                            <button\n                        class=\"api-key__tab\"\n                        type=\"button\"\n                        role=\"tab\"\n                        data-tab=\"curl\"                    >cURL<\/button>\n                                                                            <button\n                        class=\"api-key__tab\"\n                        type=\"button\"\n                        role=\"tab\"\n                        data-tab=\"php\"                    >PHP<\/button>\n                                                                            <button\n                        class=\"api-key__tab\"\n                        type=\"button\"\n                        role=\"tab\"\n                        data-tab=\"python\"                    >Python<\/button>\n                                                                            <button\n                        class=\"api-key__tab\"\n                        type=\"button\"\n                        role=\"tab\"\n                        data-tab=\"r\"                    >R<\/button>\n                                                                            <button\n                        class=\"api-key__tab\"\n                        type=\"button\"\n                        role=\"tab\"\n                        data-tab=\"chatgpt\" data-actions=\"false\"                    >Chat GPT<\/button>\n                                                <\/div>\n            <div class=\"api-key__actions\">\n                <button class=\"api-key__btn api-key__btn--copy\" type=\"button\" aria-label=\"Copy\">\n                    <svg viewBox=\"0 0 20 20\" width=\"18\" height=\"18\" class=\"api-key__btn-icon api-key__btn-icon--default\"><use xlink:href=\"\/img\/icons\/copy.svg#copy\"\/><\/svg>\n                    <img decoding=\"async\" class=\"api-key__btn-icon api-key__btn-icon--success\" src=\"\/img\/approve_ico.svg\" alt=\"\" width=\"14\" height=\"14\" loading=\"eager\">\n                <\/button>\n                <button class=\"api-key__btn api-key__btn--view\" type=\"button\" aria-label=\"Open in new tab\" data-url=\"https:\/\/eodhd.com\/api\/eod\/MCD.US?api_token=demo&amp;filter=last_close&amp;fmt=json\">\n                    <svg viewBox=\"0 0 20 21\" width=\"18\" height=\"18\"><use xlink:href=\"\/img\/icons\/openLink.svg#openLink\"\/><\/svg>\n                <\/button>\n            <\/div>\n        <\/div>\n        \n        <div class=\"api-key__panels\">\n                                                                        <div class=\"api-key__panel api-key__panel--active\" data-panel=\"url\">\n                                            <pre class=\"api-key__code\"><code>https:\/\/eodhd.com\/api\/eod\/<span class='orange bold'>MCD.US<\/span>?<span class='white bold'>api_token<\/span>=<span class='orange bold api_token'>demo<\/span>&<span class='white bold'>filter<\/span>=<span class='orange bold filter'>last_close<\/span>&<span class='white bold'>fmt<\/span>=<span class='orange bold fmt'>json<\/span><\/code><\/pre>\n                        <div class=\"api-key__register\">(<a href=\"\/register\">Sign up<\/a> for free to get an API token)<\/div>\n                                    <\/div>\n                                                                            <div class=\"api-key__panel\" data-panel=\"curl\">\n                                                                    <pre class=\"api-key__code\"><code>curl --location &quot;https:\/\/eodhd.com\/api\/eod\/<span class='orange bold'>MCD.US<\/span>?<span class='white bold'>api_token<\/span>=<span class='orange bold api_token'>demo<\/span>&<span class='white bold'>filter<\/span>=<span class='orange bold filter'>last_close<\/span>&<span class='white bold'>fmt<\/span>=<span class='orange bold fmt'>json<\/span>&quot;<\/code><\/pre>\n                        <div class=\"api-key__register\">(<a href=\"\/register\">Sign up<\/a> for free to get an API token)<\/div>\n                                    <\/div>\n                                                                            <div class=\"api-key__panel\" data-panel=\"php\">\n                                                                    <pre class=\"api-key__code\"><code>$curl = curl_init();\n\ncurl_setopt_array($curl, array(\n    CURLOPT_URL =&gt; &#039;https:\/\/eodhd.com\/api\/eod\/<span class='orange bold'>MCD.US<\/span>?<span class='white bold'>api_token<\/span>=<span class='orange bold api_token'>demo<\/span>&<span class='white bold'>filter<\/span>=<span class='orange bold filter'>last_close<\/span>&<span class='white bold'>fmt<\/span>=<span class='orange bold fmt'>json<\/span>&#039;,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_ENCODING =&gt; &#039;&#039;,\n    CURLOPT_MAXREDIRS =&gt; 10,\n    CURLOPT_TIMEOUT =&gt; 0,\n    CURLOPT_FOLLOWLOCATION =&gt; true,\n    CURLOPT_HTTP_VERSION =&gt; CURL_HTTP_VERSION_1_1,\n    CURLOPT_CUSTOMREQUEST =&gt; &#039;GET&#039;,\n));\n\n$data = curl_exec($curl);\ncurl_close($curl);\n\ntry {\n    $data = json_decode($data, true, 512, JSON_THROW_ON_ERROR);\n    var_dump($data);\n} catch (Exception $e) {\n    echo &#039;Error. &#039;.$e-&gt;getMessage();\n}<\/code><\/pre>\n                        <div class=\"api-key__register\">(<a href=\"\/register\">Sign up<\/a> for free to get an API token)<\/div>\n                                    <\/div>\n                                                                            <div class=\"api-key__panel\" data-panel=\"python\">\n                                                                    <pre class=\"api-key__code\"><code>import requests\n\nurl = f&#039;https:\/\/eodhd.com\/api\/eod\/<span class='orange bold'>MCD.US<\/span>?<span class='white bold'>api_token<\/span>=<span class='orange bold api_token'>demo<\/span>&<span class='white bold'>filter<\/span>=<span class='orange bold filter'>last_close<\/span>&<span class='white bold'>fmt<\/span>=<span class='orange bold fmt'>json<\/span>&#039;\ndata = requests.get(url).json()\n\nprint(data)<\/code><\/pre>\n                        <div class=\"api-key__register\">(<a href=\"\/register\">Sign up<\/a> for free to get an API token)<\/div>\n                                    <\/div>\n                                                                            <div class=\"api-key__panel\" data-panel=\"r\">\n                                                                    <pre class=\"api-key__code\"><code>library(httr)\nlibrary(jsonlite)\n\nurl &lt;- &#039;https:\/\/eodhd.com\/api\/eod\/<span class='orange bold'>MCD.US<\/span>?<span class='white bold'>api_token<\/span>=<span class='orange bold api_token'>demo<\/span>&<span class='white bold'>filter<\/span>=<span class='orange bold filter'>last_close<\/span>&<span class='white bold'>fmt<\/span>=<span class='orange bold fmt'>json<\/span>&#039;\nresponse &lt;- GET(url)\n\nif (http_type(response) == &quot;application\/json&quot;) {\n    content &lt;- content(response, &quot;text&quot;, encoding = &quot;UTF-8&quot;)\n    cat(content)\n} else {\n    cat(&quot;Error while receiving data\\n&quot;)\n}<\/code><\/pre>\n                        <div class=\"api-key__register\">(<a href=\"\/register\">Sign up<\/a> for free to get an API token)<\/div>\n                                    <\/div>\n                                                                            <div class=\"api-key__panel\" data-panel=\"chatgpt\">\n                                            <div class=\"api-key__chatgpt\">\n                            New to coding? Our ChatGPT assistant can generate code in any language tailored to our API.\n                            Simply describe how you want to use our data, and get a working piece of code.\n                            Don&rsquo;t forget to replace the API token with your own.<br><br>\n                            <a href=\"\/lp\/eodhd-chatgpt\" target=\"_blank\">Try it now (it's free)!<\/a><br><br>\n                            <a href=\"https:\/\/www.youtube.com\/watch?v=QVWiLukag7o\" rel=\"nofollow\" target=\"_blank\">\n                                How to use it (YouTube)\n                            <\/a>\n                        <\/div>\n                                    <\/div>\n                                    <\/div>\n    <\/div>\n    \n\n\n\n<p class=\"docs-content__text wp-block-paragraph\">The two output formats differ here, which matters if you are parsing the result. With fmt=json the body is a bare JSON scalar \u2014 a number such as 248.56 for last_close, or a quoted date string such as &#8220;2026-09-16&#8221; for last_date. In CSV, the default, the body is two lines: a header reading Value, then the number. A filtered request still costs one API call.<\/p>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"docs-content__heading docs-content__heading--h2 wp-block-heading\" id=\"h-end-of-day-historical-prices-update-time\">End-of-Day Historical Prices Update Time<\/h2>\n\n\n\n<p class=\"docs-content__text wp-block-paragraph\">We update each stock exchange 2-3 hours after the market closes. Major US exchanges, NYSE and NASDAQ, are updated within 15 minutes after the market closes. US mutual funds, PINK, OTCBB, and some indices update only the next morning, starting at 3-4 am ET and usually ending at 5-6 am ET. For these symbols we always hold the updated price up to 3-4 am.<\/p>\n\n\n\n<p class=\"docs-content__text wp-block-paragraph\">Instruments that never close are the exception. Crypto and forex pairs trade around the clock, so their last bar is the current UTC day while every equity, index and fund still shows the previous session \u2014 at 06:51 UTC on 17 September 2026, BTC-USD.CC and EURUSD.FOREX were already stamped 2026-09-17 while every exchange-traded symbol read 2026-09-16. Treat the last row of a 24\/7 series as a partial bar that is still being written, not a settled close.<\/p>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"docs-content__heading docs-content__heading--h2 wp-block-heading\" id=\"h-errors\">Errors<\/h2>\n\n\n\n<figure class=\"docs-content__table-wrap wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Status<\/th><th>Body<\/th><th>Cause<\/th><\/tr><\/thead><tbody><tr><td>401<\/td><td>Unauthenticated<\/td><td>The api_token is missing, malformed or invalid<\/td><\/tr><tr><td>403<\/td><td>Forbidden<\/td><td>The token is valid but not entitled to that symbol \u2014 most often the demo key, which covers only a handful of tickers<\/td><\/tr><tr><td>404<\/td><td>Ticker Not Found.<\/td><td>We do not carry that symbol, or the exchange suffix does not exist. Both cases return the same message<\/td><\/tr><tr><td>200<\/td><td>empty array<\/td><td>Not an error: the window ends before it starts, lies entirely in the future, or the symbol has been renamed away<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"docs-content__text wp-block-paragraph\">Under the demo token the entitlement check runs before the symbol lookup, so an unknown ticker comes back as 403, not 404. Use your own token when you are testing error handling.<\/p>\n\n\n\n<p class=\"docs-content__text wp-block-paragraph\">A 404 is billed like any other request \u2014 one API call \u2014 so a loop over an unverified ticker list consumes your daily allowance at the same rate as a loop over a good one. Check the list against the <a href=\"https:\/\/eodhd.com\/financial-apis\/exchanges-api-list-of-tickers-and-trading-hours\">Exchanges API<\/a> first.<\/p>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"docs-content__heading docs-content__heading--h2 wp-block-heading\" id=\"h-plans-and-api-calls\">Plans and API Calls<\/h2>\n\n\n\n<p class=\"docs-content__text wp-block-paragraph\">End-of-day data is included in every paid plan. The free plan gives you the same endpoint for any ticker, but only the past year of history and 20 API calls a day. Each request \u2014 whatever its length, and including a 404 \u2014 costs one API call against your daily limit. Requests are also capped per minute, independently of the call budget. The full accounting of calls, requests and daily limits is on the <a href=\"https:\/\/eodhd.com\/financial-apis\/api-limits\">API Limits<\/a> page, and the live counter for your own account is on the <a href=\"https:\/\/eodhd.com\/cp\/dashboard\">dashboard<\/a>.<\/p>\n\n\n\n<p class=\"docs-content__text has-text-align-center wp-block-paragraph\"><a class=\"btn btn--orange\" href=\"https:\/\/eodhd.com\/register\"><span class='mb-text'>Sign up &amp; Get Data<\/span><\/a><\/p>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"docs-content__heading docs-content__heading--h2 wp-block-heading\" id=\"h-related-apis\">Related APIs<\/h2>\n\n\n\n<ul class=\"docs-content__list wp-block-list\">\n<li><a href=\"https:\/\/eodhd.com\/financial-apis\/bulk-api-eod-splits-dividends\">Bulk API<\/a> \u2014 end-of-day prices for an entire exchange on one date, instead of one symbol at a time.<\/li>\n\n\n\n<li><a href=\"https:\/\/eodhd.com\/financial-apis\/live-realtime-stocks-api\">Live (Delayed) API<\/a> \u2014 today&#8217;s price while the session is still open, before the end-of-day bar exists.<\/li>\n\n\n\n<li><a href=\"https:\/\/eodhd.com\/financial-apis\/intraday-historical-data-api\">Intraday Historical Data API<\/a> \u2014 1-minute, 5-minute and hourly bars.<\/li>\n\n\n\n<li><a href=\"https:\/\/eodhd.com\/financial-apis\/api-splits-dividends\">Splits and Dividends API<\/a> \u2014 the corporate actions behind the adjustment, with their exact dates and ratios.<\/li>\n\n\n\n<li><a href=\"https:\/\/eodhd.com\/financial-apis\/technical-indicators-api\">Technical API<\/a> \u2014 split-adjusted OHLC, plus indicators computed server-side on this same series.<\/li>\n\n\n\n<li><a href=\"https:\/\/eodhd.com\/financial-apis\/exchanges-api-list-of-tickers-and-trading-hours\">Exchanges API<\/a> \u2014 exchange codes and the symbol list for each one.<\/li>\n\n\n\n<li><a href=\"https:\/\/eodhd.com\/financial-apis\/us-stock-symbol-rename-history-api\">US Stock Symbol Rename History API<\/a> \u2014 where a renamed US ticker&#8217;s history went.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n    <div class=\"spotlight spotlight--accent spotlight--wide\">\n        <div class=\"spotlight__content\">\n            \n                            <div class=\"spotlight__title\">Compare plans and find your fit<\/div>\n            \n                            <div class=\"spotlight__desc\">Free and paid plans for individual and commercial use<\/div>\n                    <\/div>\n\n                    <a class=\"spotlight__action btn btn--white\"\n               href=\"https:\/\/eodhd.com\/pricing\"\n               target=\"_blank\"\n               rel=\"noopener\">\n                Go to Pricing            <\/a>\n            <\/div>\n    \n","protected":false},"excerpt":{"rendered":"<p>The End-of-Day Historical Data API returns the daily price history of a single instrument: open, high, low, close, adjusted close and volume, one row per trading day, for stocks, ETFs, mutual funds, indices, forex pairs and cryptocurrencies. You can aggregate the same series into weekly or monthly bars, slice it by date, sort it either [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[2,103],"tags":[],"class_list":["post-8176","post","type-post","status-publish","format-standard","hentry","category-historical-prices-live-data-apis","category-most-popular-financial-data-apis"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.6 (Yoast SEO v26.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>REVIEW COPY \u2014 End-of-Day Historical Data API | EODHD APIs Documentation<\/title>\n<meta name=\"description\" content=\"Daily OHLCV history for stocks, ETFs, funds, indices, forex and crypto \u2014 back to 1927 for the S&amp;P 500. One REST call returns the full series, CSV or JSON.\" \/>\n<meta name=\"robots\" content=\"noindex, nofollow\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"REVIEW COPY \u2014 End-of-Day Historical Data API\" \/>\n<meta property=\"og:description\" content=\"Daily OHLCV history for stocks, ETFs, funds, indices, forex and crypto \u2014 back to 1927 for the S&amp;P 500. One REST call returns the full series, CSV or JSON.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/eodhd.com\/financial-apis\/review-copy-end-of-day-historical-data-api\" \/>\n<meta property=\"og:site_name\" content=\"Stock Price Data, Financial and Stock Market API\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/eodhistoricaldata\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-17T07:00:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-17T07:19:29+00:00\" \/>\n<meta name=\"author\" content=\"EOD Historical Data Support\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@EOD_data\" \/>\n<meta name=\"twitter:site\" content=\"@EOD_data\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"EOD Historical Data Support\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/eodhd.com\/financial-apis\/review-copy-end-of-day-historical-data-api#article\",\"isPartOf\":{\"@id\":\"https:\/\/eodhd.com\/financial-apis\/review-copy-end-of-day-historical-data-api\"},\"author\":{\"name\":\"EOD Historical Data Support\",\"@id\":\"https:\/\/eodhd.com\/financial-apis\/#\/schema\/person\/fa5be3606e0cd967a175978cebe97415\"},\"headline\":\"REVIEW COPY \u2014 End-of-Day Historical Data API\",\"datePublished\":\"2026-09-17T07:00:45+00:00\",\"dateModified\":\"2026-09-17T07:19:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/eodhd.com\/financial-apis\/review-copy-end-of-day-historical-data-api\"},\"wordCount\":1654,\"publisher\":{\"@id\":\"https:\/\/eodhd.com\/financial-apis\/#organization\"},\"articleSection\":[\"1. Market Data APIs\",\"Most Popular Financial APIs\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/eodhd.com\/financial-apis\/review-copy-end-of-day-historical-data-api\",\"url\":\"https:\/\/eodhd.com\/financial-apis\/review-copy-end-of-day-historical-data-api\",\"name\":\"REVIEW COPY \u2014 End-of-Day Historical Data API | EODHD APIs Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/eodhd.com\/financial-apis\/#website\"},\"datePublished\":\"2026-09-17T07:00:45+00:00\",\"dateModified\":\"2026-09-17T07:19:29+00:00\",\"description\":\"Daily OHLCV history for stocks, ETFs, funds, indices, forex and crypto \u2014 back to 1927 for the S&P 500. One REST call returns the full series, CSV or JSON.\",\"breadcrumb\":{\"@id\":\"https:\/\/eodhd.com\/financial-apis\/review-copy-end-of-day-historical-data-api#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/eodhd.com\/financial-apis\/review-copy-end-of-day-historical-data-api\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/eodhd.com\/financial-apis\/review-copy-end-of-day-historical-data-api#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/eodhd.com\/financial-apis\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"REVIEW COPY \u2014 End-of-Day Historical Data API\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/eodhd.com\/financial-apis\/#website\",\"url\":\"https:\/\/eodhd.com\/financial-apis\/\",\"name\":\"Historical Stock Prices and Fundamental Financial Data APIs | EODHD\",\"description\":\"End Of Day (EOD), Fundamental and Real-time\/Live Data Market API\",\"publisher\":{\"@id\":\"https:\/\/eodhd.com\/financial-apis\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/eodhd.com\/financial-apis\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/eodhd.com\/financial-apis\/#organization\",\"name\":\"EODHD (EOD Historical Data)\",\"url\":\"https:\/\/eodhd.com\/financial-apis\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/eodhd.com\/financial-apis\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/eodhd.com\/financial-apis\/wp-content\/uploads\/2023\/12\/EODHD-Logo.png\",\"contentUrl\":\"https:\/\/eodhd.com\/financial-apis\/wp-content\/uploads\/2023\/12\/EODHD-Logo.png\",\"width\":159,\"height\":82,\"caption\":\"EODHD (EOD Historical Data)\"},\"image\":{\"@id\":\"https:\/\/eodhd.com\/financial-apis\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/eodhistoricaldata\",\"https:\/\/x.com\/EOD_data\",\"https:\/\/www.reddit.com\/r\/EODHistoricalData\/\",\"https:\/\/eod-historical-data.medium.com\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/eodhd.com\/financial-apis\/#\/schema\/person\/fa5be3606e0cd967a175978cebe97415\",\"name\":\"EOD Historical Data Support\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/eodhd.com\/financial-apis\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3599a531133e7fc83654b72e3103c05b1bbeb91168cf4786cbad64afa9b82413?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3599a531133e7fc83654b72e3103c05b1bbeb91168cf4786cbad64afa9b82413?s=96&d=mm&r=g\",\"caption\":\"EOD Historical Data Support\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"REVIEW COPY \u2014 End-of-Day Historical Data API | EODHD APIs Documentation","description":"Daily OHLCV history for stocks, ETFs, funds, indices, forex and crypto \u2014 back to 1927 for the S&P 500. One REST call returns the full series, CSV or JSON.","robots":{"index":"noindex","follow":"nofollow"},"og_locale":"en_US","og_type":"article","og_title":"REVIEW COPY \u2014 End-of-Day Historical Data API","og_description":"Daily OHLCV history for stocks, ETFs, funds, indices, forex and crypto \u2014 back to 1927 for the S&P 500. One REST call returns the full series, CSV or JSON.","og_url":"https:\/\/eodhd.com\/financial-apis\/review-copy-end-of-day-historical-data-api","og_site_name":"Stock Price Data, Financial and Stock Market API","article_publisher":"https:\/\/www.facebook.com\/eodhistoricaldata","article_published_time":"2026-09-17T07:00:45+00:00","article_modified_time":"2026-09-17T07:19:29+00:00","author":"EOD Historical Data Support","twitter_card":"summary_large_image","twitter_creator":"@EOD_data","twitter_site":"@EOD_data","twitter_misc":{"Written by":"EOD Historical Data Support","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/eodhd.com\/financial-apis\/review-copy-end-of-day-historical-data-api#article","isPartOf":{"@id":"https:\/\/eodhd.com\/financial-apis\/review-copy-end-of-day-historical-data-api"},"author":{"name":"EOD Historical Data Support","@id":"https:\/\/eodhd.com\/financial-apis\/#\/schema\/person\/fa5be3606e0cd967a175978cebe97415"},"headline":"REVIEW COPY \u2014 End-of-Day Historical Data API","datePublished":"2026-09-17T07:00:45+00:00","dateModified":"2026-09-17T07:19:29+00:00","mainEntityOfPage":{"@id":"https:\/\/eodhd.com\/financial-apis\/review-copy-end-of-day-historical-data-api"},"wordCount":1654,"publisher":{"@id":"https:\/\/eodhd.com\/financial-apis\/#organization"},"articleSection":["1. Market Data APIs","Most Popular Financial APIs"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/eodhd.com\/financial-apis\/review-copy-end-of-day-historical-data-api","url":"https:\/\/eodhd.com\/financial-apis\/review-copy-end-of-day-historical-data-api","name":"REVIEW COPY \u2014 End-of-Day Historical Data API | EODHD APIs Documentation","isPartOf":{"@id":"https:\/\/eodhd.com\/financial-apis\/#website"},"datePublished":"2026-09-17T07:00:45+00:00","dateModified":"2026-09-17T07:19:29+00:00","description":"Daily OHLCV history for stocks, ETFs, funds, indices, forex and crypto \u2014 back to 1927 for the S&P 500. One REST call returns the full series, CSV or JSON.","breadcrumb":{"@id":"https:\/\/eodhd.com\/financial-apis\/review-copy-end-of-day-historical-data-api#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/eodhd.com\/financial-apis\/review-copy-end-of-day-historical-data-api"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/eodhd.com\/financial-apis\/review-copy-end-of-day-historical-data-api#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/eodhd.com\/financial-apis"},{"@type":"ListItem","position":2,"name":"REVIEW COPY \u2014 End-of-Day Historical Data API"}]},{"@type":"WebSite","@id":"https:\/\/eodhd.com\/financial-apis\/#website","url":"https:\/\/eodhd.com\/financial-apis\/","name":"Historical Stock Prices and Fundamental Financial Data APIs | EODHD","description":"End Of Day (EOD), Fundamental and Real-time\/Live Data Market API","publisher":{"@id":"https:\/\/eodhd.com\/financial-apis\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/eodhd.com\/financial-apis\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/eodhd.com\/financial-apis\/#organization","name":"EODHD (EOD Historical Data)","url":"https:\/\/eodhd.com\/financial-apis\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/eodhd.com\/financial-apis\/#\/schema\/logo\/image\/","url":"https:\/\/eodhd.com\/financial-apis\/wp-content\/uploads\/2023\/12\/EODHD-Logo.png","contentUrl":"https:\/\/eodhd.com\/financial-apis\/wp-content\/uploads\/2023\/12\/EODHD-Logo.png","width":159,"height":82,"caption":"EODHD (EOD Historical Data)"},"image":{"@id":"https:\/\/eodhd.com\/financial-apis\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/eodhistoricaldata","https:\/\/x.com\/EOD_data","https:\/\/www.reddit.com\/r\/EODHistoricalData\/","https:\/\/eod-historical-data.medium.com\/"]},{"@type":"Person","@id":"https:\/\/eodhd.com\/financial-apis\/#\/schema\/person\/fa5be3606e0cd967a175978cebe97415","name":"EOD Historical Data Support","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/eodhd.com\/financial-apis\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/3599a531133e7fc83654b72e3103c05b1bbeb91168cf4786cbad64afa9b82413?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3599a531133e7fc83654b72e3103c05b1bbeb91168cf4786cbad64afa9b82413?s=96&d=mm&r=g","caption":"EOD Historical Data Support"}}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p8NjB1-27S","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/posts\/8176","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/comments?post=8176"}],"version-history":[{"count":3,"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/posts\/8176\/revisions"}],"predecessor-version":[{"id":8179,"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/posts\/8176\/revisions\/8179"}],"wp:attachment":[{"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/media?parent=8176"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/categories?post=8176"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/tags?post=8176"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}