Python
import os
from datetime import date
from artemis import Artemis
client = Artemis()
response = client.equity.fetch_financials(
api_key=os.environ["ARTEMIS_API_KEY"],
symbols="eq-nvda",
granularity="QUARTER",
start_date=date(2024, 1, 1),
end_date=date(2025, 12, 31),
)
# Print the latest reported quarter for each P&L line item:
metrics = response.data.symbols["eq-nvda"]
for name in ["TOTAL_REVENUE", "NET_INCOME", "EBITDA", "FREE_CASH_FLOW", "DILUTED_EPS"]:
series = metrics.get(name) or []
if series:
latest = series[-1]
print(f"{name:20} {latest.date} {latest.val:,.2f}")
curl --request GET \
--url 'https://data-svc.artemisxyz.com/data/api/TOTAL_REVENUE,NET_INCOME,EBITDA,OPERATING_INCOME,FREE_CASH_FLOW,BASIC_EPS,DILUTED_EPS/'const options = {method: 'GET'};
fetch('https://data-svc.artemisxyz.com/data/api/TOTAL_REVENUE,NET_INCOME,EBITDA,OPERATING_INCOME,FREE_CASH_FLOW,BASIC_EPS,DILUTED_EPS/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://data-svc.artemisxyz.com/data/api/TOTAL_REVENUE,NET_INCOME,EBITDA,OPERATING_INCOME,FREE_CASH_FLOW,BASIC_EPS,DILUTED_EPS/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://data-svc.artemisxyz.com/data/api/TOTAL_REVENUE,NET_INCOME,EBITDA,OPERATING_INCOME,FREE_CASH_FLOW,BASIC_EPS,DILUTED_EPS/"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://data-svc.artemisxyz.com/data/api/TOTAL_REVENUE,NET_INCOME,EBITDA,OPERATING_INCOME,FREE_CASH_FLOW,BASIC_EPS,DILUTED_EPS/")
.asString();require 'uri'
require 'net/http'
url = URI("https://data-svc.artemisxyz.com/data/api/TOTAL_REVENUE,NET_INCOME,EBITDA,OPERATING_INCOME,FREE_CASH_FLOW,BASIC_EPS,DILUTED_EPS/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": {
"symbols": {
"eq-nvda": {
"TOTAL_REVENUE": [
{
"date": "2024-04-28",
"val": 26044000000
},
{
"date": "2024-07-28",
"val": 30040000000
}
],
"NET_INCOME": [
{
"date": "2024-04-28",
"val": 14881000000
},
{
"date": "2024-07-28",
"val": 16599000000
}
],
"EBITDA": [
{
"date": "2024-04-28",
"val": 17319000000
},
{
"date": "2024-07-28",
"val": 19310000000
}
],
"BASIC_EPS": [
{
"date": "2024-04-28",
"val": 0.6
},
{
"date": "2024-07-28",
"val": 0.68
}
],
"DILUTED_EPS": [
{
"date": "2024-04-28",
"val": 0.6
},
{
"date": "2024-07-28",
"val": 0.67
}
]
}
}
}
}Equities
Fetch Equity Financials
Seven core P&L line items per fiscal quarter, in one call:
| Metric | Description |
|---|---|
TOTAL_REVENUE | Total revenue |
NET_INCOME | Net income |
EBITDA | EBITDA |
OPERATING_INCOME | Operating income |
FREE_CASH_FLOW | Free cash flow |
BASIC_EPS | Basic earnings per share |
DILUTED_EPS | Diluted earnings per share |
Data points are reported on each company’s fiscal calendar — NVDA’s quarters end late-month (e.g. 2024-04-28, 2024-07-28), META’s align with calendar quarters. The backend requires granularity=QUARTER; sub-quarter granularities are rejected since these are filing-period metrics.
GET
/
data
/
api
/
TOTAL_REVENUE,NET_INCOME,EBITDA,OPERATING_INCOME,FREE_CASH_FLOW,BASIC_EPS,DILUTED_EPS
/
Python
import os
from datetime import date
from artemis import Artemis
client = Artemis()
response = client.equity.fetch_financials(
api_key=os.environ["ARTEMIS_API_KEY"],
symbols="eq-nvda",
granularity="QUARTER",
start_date=date(2024, 1, 1),
end_date=date(2025, 12, 31),
)
# Print the latest reported quarter for each P&L line item:
metrics = response.data.symbols["eq-nvda"]
for name in ["TOTAL_REVENUE", "NET_INCOME", "EBITDA", "FREE_CASH_FLOW", "DILUTED_EPS"]:
series = metrics.get(name) or []
if series:
latest = series[-1]
print(f"{name:20} {latest.date} {latest.val:,.2f}")
curl --request GET \
--url 'https://data-svc.artemisxyz.com/data/api/TOTAL_REVENUE,NET_INCOME,EBITDA,OPERATING_INCOME,FREE_CASH_FLOW,BASIC_EPS,DILUTED_EPS/'const options = {method: 'GET'};
fetch('https://data-svc.artemisxyz.com/data/api/TOTAL_REVENUE,NET_INCOME,EBITDA,OPERATING_INCOME,FREE_CASH_FLOW,BASIC_EPS,DILUTED_EPS/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://data-svc.artemisxyz.com/data/api/TOTAL_REVENUE,NET_INCOME,EBITDA,OPERATING_INCOME,FREE_CASH_FLOW,BASIC_EPS,DILUTED_EPS/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://data-svc.artemisxyz.com/data/api/TOTAL_REVENUE,NET_INCOME,EBITDA,OPERATING_INCOME,FREE_CASH_FLOW,BASIC_EPS,DILUTED_EPS/"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://data-svc.artemisxyz.com/data/api/TOTAL_REVENUE,NET_INCOME,EBITDA,OPERATING_INCOME,FREE_CASH_FLOW,BASIC_EPS,DILUTED_EPS/")
.asString();require 'uri'
require 'net/http'
url = URI("https://data-svc.artemisxyz.com/data/api/TOTAL_REVENUE,NET_INCOME,EBITDA,OPERATING_INCOME,FREE_CASH_FLOW,BASIC_EPS,DILUTED_EPS/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": {
"symbols": {
"eq-nvda": {
"TOTAL_REVENUE": [
{
"date": "2024-04-28",
"val": 26044000000
},
{
"date": "2024-07-28",
"val": 30040000000
}
],
"NET_INCOME": [
{
"date": "2024-04-28",
"val": 14881000000
},
{
"date": "2024-07-28",
"val": 16599000000
}
],
"EBITDA": [
{
"date": "2024-04-28",
"val": 17319000000
},
{
"date": "2024-07-28",
"val": 19310000000
}
],
"BASIC_EPS": [
{
"date": "2024-04-28",
"val": 0.6
},
{
"date": "2024-07-28",
"val": 0.68
}
],
"DILUTED_EPS": [
{
"date": "2024-04-28",
"val": 0.6
},
{
"date": "2024-07-28",
"val": 0.67
}
]
}
}
}
}Query Parameters
Comma-separated list of equity symbols (e.g. eq-nvda,eq-meta).
Start date in YYYY-MM-DD format
End date in YYYY-MM-DD format
Granularity for equity financial metrics. Only QUARTER is supported.
Available options:
QUARTER Maximum number of data points to return (1–1000).
Required range:
1 <= x <= 1000Your Artemis API key
Response
200 - application/json
Equity financials time-series, keyed by metric name within each symbol.
Show child attributes
Show child attributes
⌘I
