Introduction
Explore in-depth API documentation for APICalls.io's endpoints, parameters, and practical examples. Seamlessly integrate our APIs into your projects.
This documentation aims to provide all the information you need to work with our API.
Authenticating requests
To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_KEY}" or through a browser with an "apikey" parameter. For example:
All authenticated endpoints are marked with a requires authentication
badge in the documentation below.
To generate a token, visit your dashboard, go to your account in the upper-right corner and click on the Personal Access Tokens in the dropdown menu. There you will have access to generate and delete Personal Access Tokens
Rate Limiting
Our API implements rate limiting to ensure fair usage and maintain optimal performance for all users. The current limit is set to 15 requests per second.
If you exceed this rate, you may receive a 429 Too Many Requests response. We recommend implementing a retry mechanism in your application to handle rate-limited responses gracefully.
Stocks & Options Endpoints
The stocks and options API offers a variety of endpoints for comprehensive financial data retrieval. General endpoints include search and news functionalities. Stock-specific endpoints provide real-time quotes, historical data, analyst ratings, financial summaries, price targets, and institutional holdings. Options endpoints cover activity, implied volatility rankings, and most active options. Calendar event endpoints offer data on earnings, dividends, economic events, IPOs, and public offerings. Technical indicators such as SMA, RSI, and MACD are also supported for market analysis.
General
These endpoints provide search capabilities, news, screeners, insider trades, market movers, trending tickers, and general market information.
GET /v1/search
requires authentication
Get tickers for any stock company, ETF, mutualFund, crypto and more. We have newer version of this endpoint here: /v2/search
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/search'
params = {
'search': 'AA',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/search';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'search' => 'AA',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/search"
);
const params = {
"search": "AA",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/search?search=AA" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"symbol": "mu",
"processedTime": "2023-08-11T00:11:21.369821Z"
},
"body": [
{
"symbol": "MU",
"name": "Micron Technology, Inc.",
"exch": "NAS",
"type": "S",
"exchDisp": "NASDAQ",
"typeDisp": "Equity"
},
{
"symbol": "MULN",
"name": "Mullen Automotive, Inc.",
"exch": "NGM",
"type": "S",
"exchDisp": "NASDAQ",
"typeDisp": "Equity"
},
{...}
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/movers
requires authentication
Get market movers in today's trading session.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/movers'
params = {
'type': 'ETF',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/movers';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'type' => 'ETF',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/movers"
);
const params = {
"type": "ETF",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/movers?type=ETF" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": {
"MostActiveByShareVolume": {
"dataAsOf": "Data as of Jan 26, 2024 3:38 PM ET",
"lastTradeTimestamp": "Jan 26, 2024 3:38 PM ET",
"table": {
"asOf": null,
"headers": {
"symbol": "Symbol",
"name": "Name",
"lastSalePrice": "Last",
"lastSaleChange": "Change",
"change": "Share Volume"
},
"rows": [
{
"symbol": "INTC",
"name": "Intel Corporation",
"lastSalePrice": "$43.60",
"lastSaleChange": "-5.94",
"change": "102,855,698",
"deltaIndicator": "down"
},
{
"symbol": "AMD",
"name": "Advanced Micro Devices, Inc.",
"lastSalePrice": "$177.42",
"lastSaleChange": "-2.91",
"change": "96,179,033",
"deltaIndicator": "down"
},
...
]
}
},
"MostAdvanced": {
"dataAsOf": "Data as of Jan 26, 2024 3:38 PM ET",
"lastTradeTimestamp": "Jan 26, 2024 3:38 PM ET",
"table": {
"asOf": null,
"headers": {
"symbol": "Symbol",
"name": "Name",
"lastSalePrice": "Last",
"lastSaleChange": "Change",
"change": "% Change"
},
"rows": [
{
"symbol": "RTC",
"name": "Baijiayun Group Ltd",
"lastSalePrice": "$6.25",
"lastSaleChange": "+2.03",
"change": "+48.1%",
"deltaIndicator": "up"
},
{
"symbol": "APPF",
"name": "AppFolio, Inc.",
"lastSalePrice": "$224",
"lastSaleChange": "+49.62",
"change": "+28.46%",
"deltaIndicator": "up"
},
...
]
}
},
"MostDeclined": {
"dataAsOf": "Data as of Jan 26, 2024 3:38 PM ET",
"lastTradeTimestamp": "Jan 26, 2024 3:38 PM ET",
"table": {
"asOf": null,
"headers": {
"symbol": "Symbol",
"name": "Name",
"lastSalePrice": "Last",
"lastSaleChange": "Change",
"change": "% Change"
},
"rows": [
{
"symbol": "LGST",
"name": "Semper Paratus Acquisition Corporation",
"lastSalePrice": "$7.34",
"lastSaleChange": "-3.70",
"change": "-33.57%",
"deltaIndicator": "down"
},
{
"symbol": "SGMT",
"name": "Sagimet Biosciences Inc.",
"lastSalePrice": "$10.43",
"lastSaleChange": "-3.59",
"change": "-25.61%",
"deltaIndicator": "down"
},
...
]
}
},
"MostActiveByDollarVolume": {
"dataAsOf": "Data as of Jan 26, 2024 3:37 PM ET",
"lastTradeTimestamp": "Jan 26, 2024 3:37 PM ET",
"table": {
"asOf": null,
"headers": {
"symbol": "Symbol",
"name": "Name",
"lastSalePrice": "Last",
"lastSaleChange": "Change",
"change": "% Change"
},
"rows": [
{
"symbol": "NVDA",
"name": "NVIDIA Corporation",
"lastSalePrice": "$610.44",
"lastSaleChange": "-5.72",
"change": "-0.93%",
"deltaIndicator": "down"
},
{
"symbol": "TSLA",
"name": "Tesla, Inc.",
"lastSalePrice": "$183.17",
"lastSaleChange": "+0.54",
"change": "+0.3%",
"deltaIndicator": "up"
},
...
]
}
},
"Nasdaq100Movers": {
"dataAsOf": "Data as of Jan 26, 2024 3:56 PM ET",
"lastTradeTimestamp": "Jan 26, 2024 3:56 PM ET",
"table": {
"asOf": null,
"headers": {
"symbol": "Symbol",
"name": "Name",
"lastSalePrice": "Last",
"lastSaleChange": "Change",
"change": "% Change"
},
"rows": [
{
"symbol": "ADBE",
"name": "Adobe Inc.",
"lastSalePrice": "614.1",
"lastSaleChange": "-8.48",
"change": "-1.36%",
"deltaIndicator": "down"
},
{
"symbol": "AMD",
"name": "Advanced Micro Devices, Inc.",
"lastSalePrice": "177.435",
"lastSaleChange": "-2.895",
"change": "-1.61%",
"deltaIndicator": "down"
},
...
]
}
}
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/screener
requires authentication
Get a collection of stocks, ETFs and mutualFunds based on selected criteria. We have newer version of this endpoint here: /v2/screener.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/screener'
params = {
'list': 'day_gainers',
'offset': '16',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/screener';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'list' => 'day_gainers',
'offset' => '16',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/screener"
);
const params = {
"list": "day_gainers",
"offset": "16",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/screener?list=day_gainers&offset=16" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"description": "most_actives",
"processedTime": "2023-08-10T10:49:27.251123Z",
"offset": 0,
"count": 25,
"total": 200,
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": [
{
"language": "en-US",
"region": "US",
"quoteType": "EQUITY",
"typeDisp": "Equity",
"quoteSourceName": "Nasdaq Real Time Price",
"triggerable": false,
"customPriceAlertConfidence": "LOW",
"lastClosePriceToNNWCPerShare": 16.553095993152954,
"currency": "USD",
"regularMarketDayLow": 15.1,
"regularMarketVolume": 124080792,
"regularMarketPreviousClose": 17.04,
"bid": 0,
"ask": 0,
"bidSize": 418,
"askSize": 14,
"market": "us_market",
"messageBoardId": "finmb_43580005",
"fullExchangeName": "NYSE",
"longName": "Palantir Technologies Inc.",
"financialCurrency": "USD",
"regularMarketOpen": 16.76,
"averageDailyVolume3Month": 85510943,
"averageDailyVolume10Day": 102521260,
"fiftyTwoWeekLowChange": 9.33,
"fiftyTwoWeekLowChangePercent": 1.5760134,
"fiftyTwoWeekRange": "5.92 - 20.24",
"fiftyTwoWeekHighChange": -4.99,
"fiftyTwoWeekHighChangePercent": -0.2465415,
"fiftyTwoWeekChangePercent": 61.889603,
"earningsTimestamp": 1691442000,
"earningsTimestampStart": 1699277400,
"earningsTimestampEnd": 1699623000,
"trailingAnnualDividendRate": 0,
"trailingAnnualDividendYield": 0,
"marketState": "PRE",
"epsTrailingTwelveMonths": -0.12,
"epsForward": 0.26,
"epsCurrentYear": 0.22,
"priceEpsCurrentYear": 69.318184,
"sharesOutstanding": 2013760000,
"bookValue": 1.222,
"fiftyDayAverage": 16.1592,
"fiftyDayAverageChange": -0.90920067,
"fiftyDayAverageChangePercent": -0.0562652,
"twoHundredDayAverage": 10.072,
"twoHundredDayAverageChange": 5.1780005,
"twoHundredDayAverageChangePercent": 0.5140986,
"marketCap": 32306208768,
"forwardPE": 58.653847,
"priceToBook": 12.479542,
"sourceInterval": 15,
"exchangeDataDelayedBy": 0,
"exchangeTimezoneName": "America/New_York",
"exchangeTimezoneShortName": "EDT",
"gmtOffSetMilliseconds": -14400000,
"ipoExpectedDate": "2020-09-29",
"esgPopulated": false,
"tradeable": false,
"cryptoTradeable": false,
"firstTradeDateMilliseconds": 1601472600000,
"priceHint": 2,
"preMarketChange": 0.03999996,
"preMarketChangePercent": 0.26229483,
"preMarketTime": 1691664430,
"preMarketPrice": 15.29,
"regularMarketChange": -1.7900009,
"regularMarketTime": 1691611202,
"regularMarketPrice": 15.25,
"regularMarketDayHigh": 16.92,
"regularMarketDayRange": "15.1 - 16.92",
"averageAnalystRating": "3.3 - Hold",
"regularMarketChangePercent": -10.5047,
"exchange": "NYQ",
"fiftyTwoWeekLow": 5.92,
"fiftyTwoWeekHigh": 20.24,
"shortName": "Palantir Technologies Inc.",
"displayName": "Palantir",
"symbol": "PLTR"
},
{...}
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/insider-trades
requires authentication
Get the latest insider trading activities from U.S Congressmen and Senators, CEO, Directors, Chief Executive Officer, 10% Owner, etc...
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/insider-trades'
params = {
'minValue': '10000',
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/insider-trades';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'minValue' => '10000',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/insider-trades"
);
const params = {
"minValue": "10000",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/insider-trades?minValue=10000&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"count": 50,
"total": 477,
"page": "2"
},
"body": [
{
"transactionDate": "01/24/24",
"firstName": "Joshua",
"lastName": "Gottheimer",
"shortJobTitle": "US Congressman",
"symbol": "LAD",
"symbolShortName": "Lithia Motors",
"usdValue": "8,000",
"transactionType": "Sell",
"noteText": "Traded $1,001 to $15,000 (we have used the midpoint and the close price on the last day of trade to estimate the amount of shares).",
"symbolCode": "STK",
"hasOptions": "Yes",
"symbolType": 1
},
{
"transactionDate": "01/24/24",
"firstName": "Joshua",
"lastName": "Gottheimer",
"shortJobTitle": "US Congressman",
"symbol": "CHRD",
"symbolShortName": "Chord Energy C",
"usdValue": "8,000",
"transactionType": "Buy",
"noteText": "Traded $1,001 to $15,000 (we have used the midpoint and the close price on the last day of trade to estimate the amount of shares).",
"symbolCode": "STK",
"hasOptions": "Yes",
"symbolType": 1
},
{...}
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/news
requires authentication
Get the most recent investment and stock news for a given company.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/news'
params = {
'ticker': 'AAPL,TSLA',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/news';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL,TSLA',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/news"
);
const params = {
"ticker": "AAPL,TSLA",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/news?ticker=AAPL%2CTSLA" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
[
{
"description": "STOCKSTOWATCHTODAY BLOG Apple stock finally ended its post-earnings losing streak on Tuesday only to begin a new one on Wednesday. Don’t be surprised if it keeps falling. Yes, it might be tempting to buy the Apple dip.",
"guid": "add44664-1841-3deb-b939-03622143ab97",
"link": "https://finance.yahoo.com/m/add44664-1841-3deb-b939-03622143ab97/apple-stock-fell-again.-where.html?.tsrc=rss",
"pubDate": "Wed, 09 Aug 2023 21:38:00 +0000",
"title": "Apple Stock Fell Again. Where It Might Be Headed Next."
},
{
"description": "The Supreme Court dealt a setback to video game publisher Epic in its battle against Apple over how the iPhone giant treats developers that sell programs on the App store.",
"guid": "e3329cf7-c056-39f0-acb8-0054a20ff98e",
"link": "https://finance.yahoo.com/m/e3329cf7-c056-39f0-acb8-0054a20ff98e/supreme-court-says-apple-can.html?.tsrc=rss",
"pubDate": "Wed, 09 Aug 2023 21:33:19 +0000",
"title": "Supreme Court Says Apple Can Keep Its Store Payment Rules, For Now"
},
{...}
]
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v2/search
requires authentication
Get tickers for any stock company, ETF, mutualFund, crypto and more.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v2/markets/search'
params = {
'search': 'AA',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v2/markets/search';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'search' => 'AA',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v2/markets/search"
);
const params = {
"search": "AA",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v2/markets/search?search=AA" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": [
{
"symbol": "AA",
"name": "Alcoa Corporation Common Stock",
"exchange": "NYSE",
"subCategory": "Common Stock",
"region": "North America",
"asset": "STOCKS",
"industry": "Industrial Products",
"flag": ""
},
{
"symbol": "AAA",
"name": "AXS First Priority CLO Bond ETF",
"exchange": "PSE",
"subCategory": "",
"region": "north-america",
"asset": "ETF",
"industry": "N Products",
"flag": ""
},
{
"symbol": "AAAAX",
"name": "DWS RREEF Real Assets Fund - Class A",
"exchange": "",
"subCategory": "MF",
"region": "North America",
"asset": "MUTUALFUNDS",
"industry": "",
"flag": ""
},
{
"symbol": "AAACX",
"name": "Alpha Alternative Assets Fund",
"exchange": "",
"subCategory": "MF",
"region": "North America",
"asset": "MUTUALFUNDS",
"industry": "",
"flag": ""
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v2/movers
requires authentication
Get market movers in today's trading session.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v2/markets/movers'
params = {
'change_type': 'PERCENT',
'direction': 'UP',
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v2/markets/movers';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'change_type' => 'PERCENT',
'direction' => 'UP',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v2/markets/movers"
);
const params = {
"change_type": "PERCENT",
"direction": "UP",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v2/markets/movers?change_type=PERCENT&direction=UP&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"count": 20,
"total": 200,
"page": 1
},
"body": [
{
"symbol": "HELE",
"symbolName": "Helen of Troy Ltd",
"lastPrice": "73.79",
"priceChange": "+11.42",
"percentChange": "+18.31%",
"volume": "2,418,808",
"marketCap": "1,422,846",
"enterpriseValue": "2,070,016",
"sharesOutstanding": "22,813",
"annualSales": "2,005,050,000",
"annualNetIncome": "168,590,000",
"lastQuarterSales": "416,850,000",
"lastQuarterIncome": "6,200,000",
"beta": "0.86",
"percentInsider": "0.39%",
"percentInstitutional": "N/A",
"float": "22,724",
"floatPercentage": "99.61%",
"revenueGrowth5y": "28.19%",
"ebit": "250,710,000",
"ebitda": "303,440,000",
"tradeTime": "13:24 ET",
"symbolCode": "STK",
"symbolType": 1,
"hasOptions": "Yes"
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v2/tickers
requires authentication
Get ticker symbols.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v2/markets/tickers'
params = {
'type': 'STOCKS',
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v2/markets/tickers';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'type' => 'STOCKS',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v2/markets/tickers"
);
const params = {
"type": "STOCKS",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v2/markets/tickers?type=STOCKS&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"totalrecords": 7249,
"headers": {
"symbol": "Symbol",
"name": "Name",
"lastsale": "Last Sale",
"netchange": "Net Change",
"pctchange": "% Change",
"marketCap": "Market Cap"
}
},
"body": [
{
"symbol": "AAPL",
"name": "Apple Inc. Common Stock",
"lastsale": "$185.795",
"netchange": "-1.065",
"pctchange": "-0.57%",
"marketCap": "2,872,742,967,320"
},
{
"symbol": "AMZN",
"name": "Amazon.com, Inc. Common Stock",
"lastsale": "$171.97",
"netchange": "12.69",
"pctchange": "7.967%",
"marketCap": "1,777,143,239,874"
},
{
"symbol": "GOOG",
"name": "Alphabet Inc. Class C Capital Stock",
"lastsale": "$142.82",
"netchange": "0.11",
"pctchange": "0.077%",
"marketCap": "1,775,681,060,000"
},
{
"symbol": "GOOGL",
"name": "Alphabet Inc. Class A Common Stock",
"lastsale": "$141.305",
"netchange": "0.145",
"pctchange": "0.103%",
"marketCap": "1,756,845,065,000"
},
...
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v2/market-info
requires authentication
Get market info data.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v2/markets/market-info'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v2/markets/market-info';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v2/markets/market-info"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v2/markets/market-info" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": {
"country": "U.S.",
"marketIndicator": "After Hours",
"uiMarketIndicator": "After Hours",
"marketCountDown": "Market Opens in 2D 14H 5M",
"preMarketOpeningTime": "Feb 2, 2024 04:00 AM ET",
"preMarketClosingTime": "Feb 2, 2024 09:30 AM ET",
"marketOpeningTime": "Feb 2, 2024 09:30 AM ET",
"marketClosingTime": "Feb 2, 2024 04:00 PM ET",
"afterHoursMarketOpeningTime": "Feb 2, 2024 04:00 PM ET",
"afterHoursMarketClosingTime": "Feb 2, 2024 08:00 PM ET",
"previousTradeDate": "Feb 1, 2024",
"nextTradeDate": "Feb 5, 2024",
"isBusinessDay": true,
"mrktStatus": "After-Hours",
"mrktCountDown": "Opens in 2D 14H 5M"
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v2/screener
requires authentication
Get a collection of stocks, ETFs and mutualFunds based on selected criteria.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v2/markets/screener'
params = {
'metricType': 'overview',
'filter': 'high_volume',
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v2/markets/screener';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'metricType' => 'overview',
'filter' => 'high_volume',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v2/markets/screener"
);
const params = {
"metricType": "overview",
"filter": "high_volume",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v2/markets/screener?metricType=overview&filter=high_volume&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"metricType": "overview",
"description": "Stocks with strong volume gains from the previous session and positive price and volume momentum in the past month.",
"count": 50,
"total": 220,
"page": "1"
},
"body": [
{
"symbol": "A",
"symbolName": "Agilent Technologies",
"lastPrice": "142.86",
"priceChange": "+3.80",
"percentChange": "+2.73%",
"highPrice": "143.49",
"lowPrice": "138.81",
"volume": "2,169,200",
"tradeTime": "03/04/24",
"symbolCode": "STK",
"symbolType": 1,
"hasOptions": "Yes"
},
{
"symbol": "AADI",
"symbolName": "Aadi Biosciences Inc",
"lastPrice": "2.4300",
"priceChange": "+0.5100",
"percentChange": "+26.82%",
"highPrice": "2.4700",
"lowPrice": "1.9200",
"volume": "3,894,000",
"tradeTime": "03/04/24",
"symbolCode": "STK",
"symbolType": 1,
"hasOptions": "Yes"
},
{...}
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v2/news
requires authentication
Get market news and press releases for a given company.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v2/markets/news'
params = {
'ticker': 'AAPL',
'type': 'ALL',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v2/markets/news';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL',
'type' => 'ALL',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v2/markets/news"
);
const params = {
"ticker": "AAPL",
"type": "ALL",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v2/markets/news?ticker=AAPL&type=ALL" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"total": 50
},
"body": [
{
"url": "https://nypost.com/2024/04/12/business/rite-aid-to-close-53-more-stores-amid-bankruptcy-proceedings/",
"img": "https://cdn.snapi.dev/images/v1/x/p/wp-content2fuploads2fsites2f22-2368534.jpg",
"title": "Rite Aid to close 53 more stores across 9 states amid bankruptcy proceedings",
"text": "The company filed for bankruptcy in October in an attempt to address high debt.",
"source": "New York Post",
"type": "Article",
"tickers": [
"$RADCQ"
],
"time": "Apr 12, 2024, 12:04 AM EDT",
"ago": "22 minutes ago"
},
{
"url": "https://www.cnbc.com/2024/04/12/jpmorgan-chase-jpm-earnings-q1-2024.html",
"img": "https://cdn.snapi.dev/images/v1/p/k/107360168-1708972746073-107360-2368532.jpg",
"title": "JPMorgan Chase is set to report first-quarter earnings — here's what the Street expects",
"text": "JPMorgan Chase will be watched closely for clues on how banks fared at the start of the year.",
"source": "CNBC",
"type": "Article",
"tickers": [
"$JPM"
],
"time": "Apr 12, 2024, 12:01 AM EDT",
"ago": "25 minutes ago"
},
{
"url": "https://www.reuters.com/business/autos-transportation/uber-lyft-delay-their-plans-leave-minneapolis-2024-04-12/",
"img": "https://cdn.snapi.dev/images/v1/i/g/q3hn3kf3ffmpfeu7rblbfifiqa-2368530.jpg",
"title": "Uber and Lyft delay their plans to leave Minneapolis",
"text": "Ride-hailing companies Lyft and Uber will extend their services in Minneapolis till July 1, they said on Thursday, after city officials voted a day earlier to push back the start of a driver pay raise...",
"source": "Reuters",
"type": "Article",
"tickers": [
"$LYFT",
"$UBER"
],
"time": "Apr 11, 2024, 11:34 PM EDT",
"ago": "52 minutes ago"
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Stocks
These endpoints provide real-time quotes, historical data, analyst ratings, financial summaries, price targets, and institutional holdings. The endpoints also cover ticker summaries, revenue details, short interest, SEC filings, and historical data.
GET /v1/quote (real-time)
requires authentication
Get real time quote data for a given ticker symbol.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/quote'
params = {
'ticker': 'AAPL',
'type': 'STOCKS',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/quote';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL',
'type' => 'STOCKS',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/quote"
);
const params = {
"ticker": "AAPL",
"type": "STOCKS",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/quote?ticker=AAPL&type=STOCKS" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"processedTime": "2023-12-21T22:13:30.914543Z"
},
"body": {
"symbol": "AAPL",
"companyName": "Apple Inc. Common Stock",
"stockType": "Common Stock",
"exchange": "NASDAQ-GS",
"primaryData": {
"lastSalePrice": "$194.83",
"netChange": "+0.15",
"percentageChange": "+0.08%",
"deltaIndicator": "up",
"lastTradeTimestamp": "Dec 21, 2023 5:13 PM ET",
"isRealTime": true,
"bidPrice": "$194.82",
"askPrice": "$194.84",
"bidSize": "112",
"askSize": "400",
"volume": "45,191,237"
},
"secondaryData": {
"lastSalePrice": "$194.68",
"netChange": "-0.15",
"percentageChange": "-0.08%",
"deltaIndicator": "down",
"lastTradeTimestamp": "Closed at Dec 21, 2023 4:00 PM ET",
"isRealTime": false,
"bidPrice": "",
"askPrice": "",
"bidSize": "",
"askSize": "",
"volume": ""
},
"marketStatus": "After-Hours",
"assetClass": "STOCKS",
"keyStats": {
"fiftyTwoWeekHighLow": {
"label": "52 Week Range:",
"value": "124.17 - 199.62"
},
"dayrange": {
"label": "High/Low:",
"value": "193.51 - 197.07"
}
}
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/quotes
requires authentication
Get the most recent Quote data for a given company.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/stock/quotes'
params = {
'ticker': 'AAPL,TSLA',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/stock/quotes';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL,TSLA',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/stock/quotes"
);
const params = {
"ticker": "AAPL,TSLA",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/stock/quotes?ticker=AAPL%2CTSLA" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"symbol": "Quotes Data",
"processedTime": "2023-08-11T00:47:22.112881Z"
},
"body": [
{
"preMarketChange": null,
"preMarketChangePercent": null,
"preMarketPrice": null,
"preMarketTime": null,
"postMarketChange": 0.459991,
"postMarketChangePercent": 0.258466,
"postMarketPrice": 178.43,
"postMarketTime": 1691711999,
"language": "en-US",
"region": "US",
"quoteType": "EQUITY",
"typeDisp": "Equity",
"quoteSourceName": "Nasdaq Real Time Price",
"triggerable": true,
"customPriceAlertConfidence": "HIGH",
"currency": "USD",
"exchange": "NMS",
"shortName": "Apple Inc.",
"marketState": "POSTPOST",
"longName": "Apple Inc.",
"messageBoardId": "finmb_24937",
"market": "us_market",
"regularMarketPrice": 177.97,
"regularMarketChangePercent": -0.1234644,
"gmtOffSetMilliseconds": -14400000,
"exchangeTimezoneName": "America/New_York",
"exchangeTimezoneShortName": "EDT",
"esgPopulated": false,
"regularMarketDayLow": 177.601,
"regularMarketVolume": 51330160,
"fiftyTwoWeekRange": "124.17 - 198.23",
"fiftyTwoWeekHighChange": -20.259995,
"fiftyTwoWeekHighChangePercent": -0.10220449,
"fiftyTwoWeekLow": 124.17,
"fiftyTwoWeekHigh": 198.23,
"fiftyTwoWeekChangePercent": 5.757022,
"dividendDate": 1692230400,
"earningsTimestamp": 1691096400,
"earningsTimestampStart": 1698231540,
"earningsTimestampEnd": 1698667200,
"trailingAnnualDividendRate": 0.93,
"trailingPE": 30.21562,
"dividendRate": 0.96,
"regularMarketPreviousClose": 178.19,
"bid": 178.37,
"ask": 178.47,
"bidSize": 22,
"askSize": 8,
"fullExchangeName": "NasdaqGS",
"financialCurrency": "USD",
"regularMarketOpen": 179.48,
"averageDailyVolume3Month": 57113016,
"averageDailyVolume10Day": 62286030,
"fiftyTwoWeekLowChange": 53.800003,
"fiftyTwoWeekLowChangePercent": 0.43327698,
"firstTradeDateMilliseconds": 345479400000,
"regularMarketChange": -0.22000122,
"regularMarketTime": 1691697602,
"regularMarketDayHigh": 180.75,
"regularMarketDayRange": "177.601 - 180.75",
"trailingAnnualDividendYield": 0.005219148,
"dividendYield": 0.53,
"epsTrailingTwelveMonths": 5.89,
"epsForward": 6.59,
"epsCurrentYear": 6.07,
"priceEpsCurrentYear": 29.319605,
"sharesOutstanding": 15728700416,
"bookValue": 3.852,
"fiftyDayAverage": 187.4184,
"fiftyDayAverageChange": -9.448395,
"fiftyDayAverageChangePercent": -0.05041338,
"twoHundredDayAverage": 160.5426,
"twoHundredDayAverageChange": 17.427399,
"twoHundredDayAverageChangePercent": 0.10855311,
"marketCap": 2799236808704,
"forwardPE": 27.00607,
"priceToBook": 46.201973,
"sourceInterval": 15,
"exchangeDataDelayedBy": 0,
"averageAnalystRating": "2.0 - Buy",
"tradeable": false,
"cryptoTradeable": false,
"priceHint": 2,
"displayName": "Apple",
"symbol": "AAPL"
},
{...}
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/history
requires authentication
Get historical stock data for any company.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/stock/history'
params = {
'ticker': 'AAPL',
'interval': '5m',
'diffandsplits': '0',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/stock/history';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL',
'interval' => '5m',
'diffandsplits' => '0',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/stock/history"
);
const params = {
"ticker": "AAPL",
"interval": "5m",
"diffandsplits": "0",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/stock/history?ticker=AAPL&interval=5m&diffandsplits=" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"processedTime": "2023-08-10T13:08:23.071878Z",
"currency": "USD",
"symbol": "AAPL",
"exchangeName": "NMS",
"instrumentType": "EQUITY",
"firstTradeDate": 345479400,
"regularMarketTime": 1691611201,
"gmtoffset": -14400,
"timezone": "EDT",
"exchangeTimezoneName": "America/New_York",
"regularMarketPrice": 178.19,
"chartPreviousClose": 178.19,
"previousClose": 179.8,
"scale": 3,
"priceHint": 2,
"dataGranularity": "1m",
"range": "",
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": {
"1691593260": {
"date": "09-08-2023",
"date_utc": 1691593260,
"open": 177.85,
"high": 177.89,
"low": 177.82,
"close": 177.89,
"volume": 88211
},
"1691593320": {
"date": "09-08-2023",
"date_utc": 1691593320,
"open": 177.88,
"high": 178.07,
"low": 177.86,
"close": 178.06,
"volume": 147707
},
{...}
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/modules
requires authentication
Get company data such as profile, earnings, statistics, balance sheet and more.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/stock/modules'
params = {
'ticker': 'AAPL',
'module': 'profile',
'timeframe': 'annually',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/stock/modules';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL',
'module' => 'profile',
'timeframe' => 'annually',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/stock/modules"
);
const params = {
"ticker": "AAPL",
"module": "profile",
"timeframe": "annually",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/stock/modules?ticker=AAPL&module=profile&timeframe=annually" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"symbol": "AAPL",
"processedTime": "2023-08-09T09:10:21.978992Z"
},
"body": {
"address1": "One Apple Park Way",
"city": "Cupertino",
"state": "CA",
"zip": "95014",
"country": "United States",
"phone": "408 996 1010",
"website": "https://www.apple.com",
"industry": "Consumer Electronics",
"industryDisp": "Consumer Electronics",
"sector": "Technology",
"sectorDisp": "Technology",
"longBusinessSummary": "Apple Inc. designs, manufactures, and markets smartphones, personal computers, tablets, wearables, and accessories worldwide. The company offers iPhone, a line of smartphones; Mac, a line of personal computers; iPad, a line of multi-purpose tablets; and wearables, home, and accessories comprising AirPods, Apple TV, Apple Watch, Beats products, and HomePod. It also provides AppleCare support and cloud services; and operates various platforms, including the App Store that allow customers to discover and download applications and digital content, such as books, music, video, games, and podcasts. In addition, the company offers various services, such as Apple Arcade, a game subscription service; Apple Fitness+, a personalized fitness service; Apple Music, which offers users a curated listening experience with on-demand radio stations; Apple News+, a subscription news and magazine service; Apple TV+, which offers exclusive original content; Apple Card, a co-branded credit card; and Apple Pay, a cashless payment service, as well as licenses its intellectual property. The company serves consumers, and small and mid-sized businesses; and the education, enterprise, and government markets. It distributes third-party applications for its products through the App Store. The company also sells its products through its retail and online stores, and direct sales force; and third-party cellular network carriers, wholesalers, retailers, and resellers. Apple Inc. was incorporated in 1977 and is headquartered in Cupertino, California.",
"fullTimeEmployees": 164000,
"companyOfficers": [
{
"maxAge": 1,
"name": "Mr. Timothy D. Cook",
"age": 61,
"title": "CEO & Director",
"yearBorn": 1961,
"fiscalYear": 2022,
"totalPay": {
"raw": 16425933,
"fmt": "16.43M",
"longFmt": "16,425,933"
},
"exercisedValue": {
"raw": 0,
"fmt": null,
"longFmt": "0"
},
"unexercisedValue": {
"raw": 0,
"fmt": null,
"longFmt": "0"
}
},
{
"maxAge": 1,
"name": "Mr. Luca Maestri",
"age": 59,
"title": "CFO & Sr. VP",
"yearBorn": 1963,
"fiscalYear": 2022,
"totalPay": {
"raw": 5019783,
"fmt": "5.02M",
"longFmt": "5,019,783"
},
"exercisedValue": {
"raw": 0,
"fmt": null,
"longFmt": "0"
},
"unexercisedValue": {
"raw": 0,
"fmt": null,
"longFmt": "0"
}
},
{
"maxAge": 1,
"name": "Mr. Jeffrey E. Williams",
"age": 58,
"title": "Chief Operating Officer",
"yearBorn": 1964,
"fiscalYear": 2022,
"totalPay": {
"raw": 5018337,
"fmt": "5.02M",
"longFmt": "5,018,337"
},
"exercisedValue": {
"raw": 0,
"fmt": null,
"longFmt": "0"
},
"unexercisedValue": {
"raw": 0,
"fmt": null,
"longFmt": "0"
}
},
{
"maxAge": 1,
"name": "Ms. Katherine L. Adams",
"age": 58,
"title": "Sr. VP, Gen. Counsel & Sec.",
"yearBorn": 1964,
"fiscalYear": 2022,
"totalPay": {
"raw": 5015208,
"fmt": "5.02M",
"longFmt": "5,015,208"
},
"exercisedValue": {
"raw": 0,
"fmt": null,
"longFmt": "0"
},
"unexercisedValue": {
"raw": 0,
"fmt": null,
"longFmt": "0"
}
},
{
"maxAge": 1,
"name": "Ms. Deirdre O'Brien",
"age": 55,
"title": "Sr. VP of Retail",
"yearBorn": 1967,
"fiscalYear": 2022,
"totalPay": {
"raw": 5019783,
"fmt": "5.02M",
"longFmt": "5,019,783"
},
"exercisedValue": {
"raw": 0,
"fmt": null,
"longFmt": "0"
},
"unexercisedValue": {
"raw": 0,
"fmt": null,
"longFmt": "0"
}
},
{
"maxAge": 1,
"name": "Mr. Chris Kondo",
"title": "Sr. Director of Corp. Accounting",
"exercisedValue": {
"raw": 0,
"fmt": null,
"longFmt": "0"
},
"unexercisedValue": {
"raw": 0,
"fmt": null,
"longFmt": "0"
}
},
{
"maxAge": 1,
"name": "Mr. James Wilson",
"title": "Chief Technology Officer",
"exercisedValue": {
"raw": 0,
"fmt": null,
"longFmt": "0"
},
"unexercisedValue": {
"raw": 0,
"fmt": null,
"longFmt": "0"
}
},
{
"maxAge": 1,
"name": "Ms. Mary Demby",
"title": "Chief Information Officer",
"exercisedValue": {
"raw": 0,
"fmt": null,
"longFmt": "0"
},
"unexercisedValue": {
"raw": 0,
"fmt": null,
"longFmt": "0"
}
},
{
"maxAge": 1,
"name": "Ms. Nancy Paxton",
"title": "Sr. Director of Investor Relations & Treasury",
"exercisedValue": {
"raw": 0,
"fmt": null,
"longFmt": "0"
},
"unexercisedValue": {
"raw": 0,
"fmt": null,
"longFmt": "0"
}
},
{
"maxAge": 1,
"name": "Mr. Greg Joswiak",
"title": "Sr. VP of Worldwide Marketing",
"exercisedValue": {
"raw": 0,
"fmt": null,
"longFmt": "0"
},
"unexercisedValue": {
"raw": 0,
"fmt": null,
"longFmt": "0"
}
}
],
"auditRisk": 4,
"boardRisk": 1,
"compensationRisk": 5,
"shareHolderRightsRisk": 1,
"overallRisk": 1,
"governanceEpochDate": 1690848000,
"compensationAsOfEpochDate": 1672444800,
"maxAge": 86400
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/analyst-ratings
requires authentication
Get Analyst Ratings to gauge the possible future performance of a stock. Analyst Ratings are available for US and Canadian equities.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/stock/analyst-ratings'
params = {
'ticker': 'AAPL,NVDA',
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/stock/analyst-ratings';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL,NVDA',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/stock/analyst-ratings"
);
const params = {
"ticker": "AAPL,NVDA",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/stock/analyst-ratings?ticker=AAPL%2CNVDA&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"count": 3,
"total": 3
},
"body": [
{
"symbol": "AAPL",
"exchange": "NASDAQ",
"symbolName": "Apple Inc",
"symbolType": 1,
"baseCode": "A",
"symbolCode": "STK",
"previousPrice": "181.16",
"previousHighPrice": "182.76",
"previousLowPrice": "180.65",
"weeklyPreviousPrice": "182.52",
"weeklyPreviousHighPrice": "185.04",
"weeklyPreviousLowPrice": "180.00",
"monthlyPreviousPrice": "184.40",
"monthlyPreviousHighPrice": "196.38",
"monthlyPreviousLowPrice": "180.17",
"chartTime": "2024-02-26T07:00:00",
"shortSymbol": "AAPL",
"hasBats": "Yes",
"hasJerq": "Yes",
"lastPrice": "182.63",
"percentChange": "+0.81%",
"priceChange": "+1.47",
"openPrice": "181.10",
"lowPrice": "179.56",
"highPrice": "183.92",
"pointValue": "1.00000",
"highPrice1y": "199.62",
"lowPrice1y": "143.90",
"weightedAlpha": "+14.60",
"meanTargetEstimate": "207.56",
"highTargetEstimate": "250.00",
"lowTargetEstimate": "158.00"
},
{
"symbol": "MU",
"exchange": "NASDAQ",
"symbolName": "Micron Technology",
"symbolType": 1,
"baseCode": "A",
"symbolCode": "STK",
"previousPrice": "89.46",
"previousHighPrice": "92.35",
"previousLowPrice": "88.90",
"weeklyPreviousPrice": "86.00",
"weeklyPreviousHighPrice": "86.82",
"weeklyPreviousLowPrice": "79.15",
"monthlyPreviousPrice": "85.75",
"monthlyPreviousHighPrice": "90.04",
"monthlyPreviousLowPrice": "80.58",
"chartTime": "2024-02-26T07:00:00",
"shortSymbol": "MU",
"hasBats": "Yes",
"hasJerq": "Yes",
"lastPrice": "91.85",
"percentChange": "+2.67%",
"priceChange": "+2.39",
"openPrice": "91.89",
"lowPrice": "90.49",
"highPrice": "92.75",
"pointValue": "1.00000",
"highPrice1y": "92.75",
"lowPrice1y": "52.76",
"weightedAlpha": "+65.40",
"meanTargetEstimate": "97.10",
"highTargetEstimate": "140.00",
"lowTargetEstimate": "74.75"
},
{
"symbol": "NVDA",
"exchange": "NASDAQ",
"symbolName": "Nvidia Corp",
"symbolType": 1,
"baseCode": "A",
"symbolCode": "STK",
"previousPrice": "790.92",
"previousHighPrice": "806.46",
"previousLowPrice": "785.05",
"weeklyPreviousPrice": "788.17",
"weeklyPreviousHighPrice": "823.94",
"weeklyPreviousLowPrice": "662.48",
"monthlyPreviousPrice": "615.27",
"monthlyPreviousHighPrice": "634.93",
"monthlyPreviousLowPrice": "473.20",
"chartTime": "2024-02-26T07:00:00",
"shortSymbol": "NVDA",
"hasBats": "Yes",
"hasJerq": "Yes",
"lastPrice": "787.01",
"percentChange": "-0.49%",
"priceChange": "-3.91",
"openPrice": "793.81",
"lowPrice": "771.62",
"highPrice": "794.80",
"pointValue": "1.00000",
"highPrice1y": "823.94",
"lowPrice1y": "222.97",
"weightedAlpha": "+228.40",
"meanTargetEstimate": "825.38",
"highTargetEstimate": "1,200.00",
"lowTargetEstimate": "475.00"
}
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v2/ticker-summary
requires authentication
Get ticker market summary such as price range, marketCap, P/E, earnings and more!
Example request:
import requests
import json
url = 'https://api.apicalls.io/v2/markets/stock/ticker-summary'
params = {
'ticker': 'AAPL',
'type': 'STOCKS',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v2/markets/stock/ticker-summary';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL',
'type' => 'STOCKS',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v2/markets/stock/ticker-summary"
);
const params = {
"ticker": "AAPL",
"type": "STOCKS",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v2/markets/stock/ticker-summary?ticker=AAPL&type=STOCKS" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": {
"symbol": "AAPL",
"summaryData": {
"Exchange": {
"label": "Exchange",
"value": "NASDAQ-GS"
},
"Sector": {
"label": "Sector",
"value": "Technology"
},
"Industry": {
"label": "Industry",
"value": "Computer Manufacturing"
},
"OneYrTarget": {
"label": "1 Year Target",
"value": "$205.00"
},
"TodayHighLow": {
"label": "Today's High/Low",
"value": "$187.33/$179.25"
},
"ShareVolume": {
"label": "Share Volume",
"value": "102,551,680"
},
"AverageVolume": {
"label": "Average Volume",
"value": "52,248,247"
},
"PreviousClose": {
"label": "Previous Close",
"value": "$186.86"
},
"FiftTwoWeekHighLow": {
"label": "52 Week High/Low",
"value": "$199.62/$143.9"
},
"MarketCap": {
"label": "Market Cap",
"value": "2,873,593,371,600"
},
"PERatio": {
"label": "P/E Ratio",
"value": 28.95
},
"ForwardPE1Yr": {
"label": "Forward P/E 1 Yr.",
"value": "28.40"
},
"EarningsPerShare": {
"label": "Earnings Per Share(EPS)",
"value": "$6.42"
},
"AnnualizedDividend": {
"label": "Annualized Dividend",
"value": "$0.96"
},
"ExDividendDate": {
"label": "Ex Dividend Date",
"value": "Nov 10, 2023"
},
"DividendPaymentDate": {
"label": "Dividend Pay Date",
"value": "Nov 16, 2023"
},
"Yield": {
"label": "Current Yield",
"value": "0.51%"
},
"Beta": {
"label": "Beta",
"value": 0
}
},
"assetClass": "STOCKS",
"additionalData": null,
"bidAsk": {
"Bid * Size": {
"label": "Bid * Size",
"value": "N/A"
},
"Ask * Size": {
"label": "Ask * Size",
"value": "N/A"
}
}
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v2/price-targets
requires authentication
Get a company price targets and projections analysis.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v2/markets/stock/price-targets'
params = {
'ticker': 'AAPL',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v2/markets/stock/price-targets';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v2/markets/stock/price-targets"
);
const params = {
"ticker": "AAPL",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v2/markets/stock/price-targets?ticker=AAPL" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": {
"symbol": "aapl",
"consensusOverview": {
"lowPriceTarget": 158,
"highPriceTarget": 250,
"priceTarget": 205.33,
"buy": 19,
"sell": 1,
"hold": 8
},
"historicalConsensus": [
{
"z": {
"buy": 25,
"hold": 5,
"sell": 0,
"date": "02/01/2023",
"consensus": "Buy",
"latest": null
},
"x": 1675209600,
"y": 145.43
},
{
"z": {
"buy": 25,
"hold": 5,
"sell": 0,
"date": "03/01/2023",
"consensus": "Buy",
"latest": null
},
"x": 1677628800,
"y": 145.31
},
{
"z": {
"buy": 23,
"hold": 5,
"sell": 1,
"date": "04/01/2023",
"consensus": "Buy",
"latest": null
},
"x": 1680307200,
"y": 164.9
},
{
"z": {
"buy": 25,
"hold": 4,
"sell": 1,
"date": "05/01/2023",
"consensus": "Buy",
"latest": null
},
"x": 1682899200,
"y": 169.59
},
{
"z": {
"buy": 22,
"hold": 5,
"sell": 1,
"date": "06/01/2023",
"consensus": "Buy",
"latest": null
},
"x": 1685577600,
"y": 180.09
},
{
"z": {
"buy": 24,
"hold": 7,
"sell": 0,
"date": "07/01/2023",
"consensus": "Buy",
"latest": null
},
"x": 1688169600,
"y": 193.97
},
{
"z": {
"buy": 23,
"hold": 8,
"sell": 0,
"date": "08/01/2023",
"consensus": "Buy",
"latest": null
},
"x": 1690848000,
"y": 195.605
},
{
"z": {
"buy": 22,
"hold": 8,
"sell": 0,
"date": "09/01/2023",
"consensus": "Buy",
"latest": null
},
"x": 1693526400,
"y": 189.46
},
{
"z": {
"buy": 20,
"hold": 9,
"sell": 0,
"date": "10/01/2023",
"consensus": "Buy",
"latest": null
},
"x": 1696118400,
"y": 171.21
},
{
"z": {
"buy": 21,
"hold": 9,
"sell": 0,
"date": "11/01/2023",
"consensus": "Buy",
"latest": null
},
"x": 1698796800,
"y": 173.97
},
{
"z": {
"buy": 24,
"hold": 8,
"sell": 0,
"date": "12/01/2023",
"consensus": "Buy",
"latest": null
},
"x": 1701388800,
"y": 191.24
},
{
"z": {
"buy": 22,
"hold": 8,
"sell": 1,
"date": "01/01/2024",
"consensus": "Buy",
"latest": null
},
"x": 1704067200,
"y": 192.53
},
{
"z": {
"buy": 20,
"hold": 9,
"sell": 1,
"date": "02/01/2024",
"consensus": "Buy",
"latest": {
"high": 186.95,
"avg": 185.38,
"low": 183.82
}
},
"x": 1706745600,
"y": 205.33
}
]
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v2/financials
requires authentication
Get a company income statment, balance sheet, cashflow and financial ratios. Need more data? checkout our /v1/modules endpoint.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v2/markets/stock/financials'
params = {
'ticker': 'AAPL',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v2/markets/stock/financials';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v2/markets/stock/financials"
);
const params = {
"ticker": "AAPL",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v2/markets/stock/financials?ticker=AAPL" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"symbol": "AAPL"
},
"body": {
"incomeStatementTable": {
"headers": {
"value1": "Period Ending:",
"value2": "9/30/2023",
"value3": "9/24/2022",
"value4": "9/25/2021",
"value5": "9/26/2020"
},
"rows": [
{
"value1": "Total Revenue",
"value2": "$383,285,000",
"value3": "$394,328,000",
"value4": "$365,817,000",
"value5": "$274,515,000"
},
{
"value1": "Cost of Revenue",
"value2": "$214,137,000",
"value3": "$223,546,000",
"value4": "$212,981,000",
"value5": "$169,559,000"
},
{
"value1": "Gross Profit",
"value2": "$169,148,000",
"value3": "$170,782,000",
"value4": "$152,836,000",
"value5": "$104,956,000"
},
{
"value1": "Operating Expenses",
"value2": "",
"value3": "",
"value4": "",
"value5": ""
},
{
"value1": "Research and Development",
"value2": "$29,915,000",
"value3": "$26,251,000",
"value4": "$21,914,000",
"value5": "$18,752,000"
},
{
"value1": "Sales, General and Admin.",
"value2": "$24,932,000",
"value3": "$25,094,000",
"value4": "$21,973,000",
"value5": "$19,916,000"
},
{
"value1": "Non-Recurring Items",
"value2": "--",
"value3": "--",
"value4": "--",
"value5": "--"
},
{
"value1": "Other Operating Items",
"value2": "--",
"value3": "--",
"value4": "--",
"value5": "--"
},
{
"value1": "Operating Income",
"value2": "$114,301,000",
"value3": "$119,437,000",
"value4": "$108,949,000",
"value5": "$66,288,000"
},
{
"value1": "Add'l income/expense items",
"value2": "-$565,000",
"value3": "-$334,000",
"value4": "$258,000",
"value5": "$803,000"
},
{
"value1": "Earnings Before Interest and Tax",
"value2": "$113,736,000",
"value3": "$119,103,000",
"value4": "$109,207,000",
"value5": "$67,091,000"
},
{
"value1": "Interest Expense",
"value2": "--",
"value3": "--",
"value4": "--",
"value5": "--"
},
{
"value1": "Earnings Before Tax",
"value2": "$113,736,000",
"value3": "$119,103,000",
"value4": "$109,207,000",
"value5": "$67,091,000"
},
{
"value1": "Income Tax",
"value2": "$16,741,000",
"value3": "$19,300,000",
"value4": "$14,527,000",
"value5": "$9,680,000"
},
{
"value1": "Minority Interest",
"value2": "--",
"value3": "--",
"value4": "--",
"value5": "--"
},
{
"value1": "Equity Earnings/Loss Unconsolidated Subsidiary",
"value2": "--",
"value3": "--",
"value4": "--",
"value5": "--"
},
{
"value1": "Net Income-Cont. Operations",
"value2": "$96,995,000",
"value3": "$99,803,000",
"value4": "$94,680,000",
"value5": "$57,411,000"
},
{
"value1": "Net Income",
"value2": "$96,995,000",
"value3": "$99,803,000",
"value4": "$94,680,000",
"value5": "$57,411,000"
},
{
"value1": "Net Income Applicable to Common Shareholders",
"value2": "$96,995,000",
"value3": "$99,803,000",
"value4": "$94,680,000",
"value5": "$57,411,000"
}
]
},
"balanceSheetTable": {
"headers": {
"value1": "Period Ending:",
"value2": "9/30/2023",
"value3": "9/24/2022",
"value4": "9/25/2021",
"value5": "9/26/2020"
},
"rows": [
{
"value1": "Current Assets",
"value2": "",
"value3": "",
"value4": "",
"value5": ""
},
{
"value1": "Cash and Cash Equivalents",
"value2": "$29,965,000",
"value3": "$23,646,000",
"value4": "$34,940,000",
"value5": "$38,016,000"
},
{
"value1": "Short-Term Investments",
"value2": "$31,590,000",
"value3": "$24,658,000",
"value4": "$27,699,000",
"value5": "$52,927,000"
},
{
"value1": "Net Receivables",
"value2": "$60,985,000",
"value3": "$60,932,000",
"value4": "$51,506,000",
"value5": "$37,445,000"
},
{
"value1": "Inventory",
"value2": "$6,331,000",
"value3": "$4,946,000",
"value4": "$6,580,000",
"value5": "$4,061,000"
},
{
"value1": "Other Current Assets",
"value2": "$14,695,000",
"value3": "$21,223,000",
"value4": "$14,111,000",
"value5": "$11,264,000"
},
{
"value1": "Total Current Assets",
"value2": "$143,566,000",
"value3": "$135,405,000",
"value4": "$134,836,000",
"value5": "$143,713,000"
},
{
"value1": "Long-Term Assets",
"value2": "",
"value3": "",
"value4": "",
"value5": ""
},
{
"value1": "Long-Term Investments",
"value2": "$100,544,000",
"value3": "$120,805,000",
"value4": "$127,877,000",
"value5": "$100,887,000"
},
{
"value1": "Fixed Assets",
"value2": "$43,715,000",
"value3": "$42,117,000",
"value4": "$39,440,000",
"value5": "$36,766,000"
},
{
"value1": "Goodwill",
"value2": "--",
"value3": "--",
"value4": "--",
"value5": "--"
},
{
"value1": "Intangible Assets",
"value2": "--",
"value3": "--",
"value4": "--",
"value5": "--"
},
{
"value1": "Other Assets",
"value2": "$64,758,000",
"value3": "$54,428,000",
"value4": "$48,849,000",
"value5": "$42,522,000"
},
{
"value1": "Deferred Asset Charges",
"value2": "--",
"value3": "--",
"value4": "--",
"value5": "--"
},
{
"value1": "Total Assets",
"value2": "$352,583,000",
"value3": "$352,755,000",
"value4": "$351,002,000",
"value5": "$323,888,000"
},
{
"value1": "Current Liabilities",
"value2": "",
"value3": "",
"value4": "",
"value5": ""
},
{
"value1": "Accounts Payable",
"value2": "$62,611,000",
"value3": "$64,115,000",
"value4": "$54,763,000",
"value5": "$42,296,000"
},
{
"value1": "Short-Term Debt / Current Portion of Long-Term Debt",
"value2": "$15,807,000",
"value3": "$21,110,000",
"value4": "$15,613,000",
"value5": "$13,769,000"
},
{
"value1": "Other Current Liabilities",
"value2": "$66,890,000",
"value3": "$68,757,000",
"value4": "$55,105,000",
"value5": "$49,327,000"
},
{
"value1": "Total Current Liabilities",
"value2": "$145,308,000",
"value3": "$153,982,000",
"value4": "$125,481,000",
"value5": "$105,392,000"
},
{
"value1": "Long-Term Debt",
"value2": "$95,281,000",
"value3": "$98,959,000",
"value4": "$109,106,000",
"value5": "$98,667,000"
},
{
"value1": "Other Liabilities",
"value2": "$49,848,000",
"value3": "$49,142,000",
"value4": "$53,325,000",
"value5": "$54,490,000"
},
{
"value1": "Deferred Liability Charges",
"value2": "--",
"value3": "--",
"value4": "--",
"value5": "--"
},
{
"value1": "Misc. Stocks",
"value2": "--",
"value3": "--",
"value4": "--",
"value5": "--"
},
{
"value1": "Minority Interest",
"value2": "--",
"value3": "--",
"value4": "--",
"value5": "--"
},
{
"value1": "Total Liabilities",
"value2": "$290,437,000",
"value3": "$302,083,000",
"value4": "$287,912,000",
"value5": "$258,549,000"
},
{
"value1": "Stock Holders Equity",
"value2": "",
"value3": "",
"value4": "",
"value5": ""
},
{
"value1": "Common Stocks",
"value2": "$73,812,000",
"value3": "$64,849,000",
"value4": "$57,365,000",
"value5": "$50,779,000"
},
{
"value1": "Capital Surplus",
"value2": "-$214,000",
"value3": "-$3,068,000",
"value4": "$5,562,000",
"value5": "$14,966,000"
},
{
"value1": "Retained Earnings",
"value2": "--",
"value3": "--",
"value4": "--",
"value5": "--"
},
{
"value1": "Treasury Stock",
"value2": "--",
"value3": "--",
"value4": "--",
"value5": "--"
},
{
"value1": "Other Equity",
"value2": "-$11,452,000",
"value3": "-$11,109,000",
"value4": "$163,000",
"value5": "-$406,000"
},
{
"value1": "Total Equity",
"value2": "$62,146,000",
"value3": "$50,672,000",
"value4": "$63,090,000",
"value5": "$65,339,000"
},
{
"value1": "Total Liabilities & Equity",
"value2": "$352,583,000",
"value3": "$352,755,000",
"value4": "$351,002,000",
"value5": "$323,888,000"
}
]
},
"cashFlowTable": {
"headers": {
"value1": "Period Ending:",
"value2": "9/30/2023",
"value3": "9/24/2022",
"value4": "9/25/2021",
"value5": "9/26/2020"
},
"rows": [
{
"value1": "Net Income",
"value2": "$96,995,000",
"value3": "$99,803,000",
"value4": "$94,680,000",
"value5": "$57,411,000"
},
{
"value1": "Cash Flows-Operating Activities",
"value2": "",
"value3": "",
"value4": "",
"value5": ""
},
{
"value1": "Depreciation",
"value2": "$11,519,000",
"value3": "$11,104,000",
"value4": "$11,284,000",
"value5": "$11,056,000"
},
{
"value1": "Net Income Adjustments",
"value2": "$8,606,000",
"value3": "$10,044,000",
"value4": "$2,985,000",
"value5": "$6,517,000"
},
{
"value1": "Changes in Operating Activities",
"value2": "",
"value3": "",
"value4": "",
"value5": ""
},
{
"value1": "Accounts Receivable",
"value2": "-$417,000",
"value3": "-$9,343,000",
"value4": "-$14,028,000",
"value5": "$8,470,000"
},
{
"value1": "Changes in Inventories",
"value2": "-$1,618,000",
"value3": "$1,484,000",
"value4": "-$2,642,000",
"value5": "-$127,000"
},
{
"value1": "Other Operating Activities",
"value2": "-$5,684,000",
"value3": "-$6,499,000",
"value4": "-$8,042,000",
"value5": "-$9,588,000"
},
{
"value1": "Liabilities",
"value2": "$1,142,000",
"value3": "$15,558,000",
"value4": "$19,801,000",
"value5": "$6,935,000"
},
{
"value1": "Net Cash Flow-Operating",
"value2": "$110,543,000",
"value3": "$122,151,000",
"value4": "$104,038,000",
"value5": "$80,674,000"
},
{
"value1": "Cash Flows-Investing Activities",
"value2": "",
"value3": "",
"value4": "",
"value5": ""
},
{
"value1": "Capital Expenditures",
"value2": "-$10,959,000",
"value3": "-$10,708,000",
"value4": "-$11,085,000",
"value5": "-$7,309,000"
},
{
"value1": "Investments",
"value2": "$16,001,000",
"value3": "-$9,560,000",
"value4": "-$3,075,000",
"value5": "$5,453,000"
},
{
"value1": "Other Investing Activities",
"value2": "-$1,337,000",
"value3": "-$2,086,000",
"value4": "-$385,000",
"value5": "-$2,433,000"
},
{
"value1": "Net Cash Flows-Investing",
"value2": "$3,705,000",
"value3": "-$22,354,000",
"value4": "-$14,545,000",
"value5": "-$4,289,000"
},
{
"value1": "Cash Flows-Financing Activities",
"value2": "",
"value3": "",
"value4": "",
"value5": ""
},
{
"value1": "Sale and Purchase of Stock",
"value2": "-$77,550,000",
"value3": "-$89,402,000",
"value4": "-$85,971,000",
"value5": "-$72,358,000"
},
{
"value1": "Net Borrowings",
"value2": "-$9,901,000",
"value3": "-$123,000",
"value4": "$12,665,000",
"value5": "$2,499,000"
},
{
"value1": "Other Financing Activities",
"value2": "-$6,012,000",
"value3": "-$6,383,000",
"value4": "-$5,580,000",
"value5": "-$2,880,000"
},
{
"value1": "Net Cash Flows-Financing",
"value2": "-$108,488,000",
"value3": "-$110,749,000",
"value4": "-$93,353,000",
"value5": "-$86,820,000"
},
{
"value1": "Effect of Exchange Rate",
"value2": "--",
"value3": "--",
"value4": "--",
"value5": "--"
},
{
"value1": "Net Cash Flow",
"value2": "$5,760,000",
"value3": "-$10,952,000",
"value4": "-$3,860,000",
"value5": "-$10,435,000"
}
]
},
"financialRatiosTable": {
"headers": {
"value1": "Period Ending:",
"value2": "9/30/2023",
"value3": "9/24/2022",
"value4": "9/25/2021",
"value5": "9/26/2020"
},
"rows": [
{
"value1": "Liquidity Ratios",
"value2": "",
"value3": "",
"value4": "",
"value5": ""
},
{
"value1": "Current Ratio",
"value2": "98.80117%",
"value3": "87.9356%",
"value4": "107.45531%",
"value5": "136.36044%"
},
{
"value1": "Quick Ratio",
"value2": "94.44422%",
"value3": "84.72354%",
"value4": "102.21149%",
"value5": "132.50721%"
},
{
"value1": "Cash Ratio",
"value2": "42.36174%",
"value3": "31.3699%",
"value4": "49.91911%",
"value5": "86.29023%"
},
{
"value1": "Profitability Ratios",
"value2": "",
"value3": "",
"value4": "",
"value5": ""
},
{
"value1": "Gross Margin",
"value2": "44.13113%",
"value3": "43.30963%",
"value4": "41.77936%",
"value5": "38.23325%"
},
{
"value1": "Operating Margin",
"value2": "29.82141%",
"value3": "30.28874%",
"value4": "29.78238%",
"value5": "24.14731%"
},
{
"value1": "Pre-Tax Margin",
"value2": "29.674%",
"value3": "30.20404%",
"value4": "29.8529%",
"value5": "24.43983%"
},
{
"value1": "Profit Margin",
"value2": "25.30623%",
"value3": "25.30964%",
"value4": "25.88179%",
"value5": "20.91361%"
},
{
"value1": "Pre-Tax ROE",
"value2": "183.01419%",
"value3": "235.04697%",
"value4": "173.09716%",
"value5": "102.6814%"
},
{
"value1": "After Tax ROE",
"value2": "156.07601%",
"value3": "196.95887%",
"value4": "150.07133%",
"value5": "87.86636%"
}
]
}
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v2/revenue
requires authentication
Get a company revenue and earnings per share (EPS). Need more data? checkout our /v1/modules endpoint.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v2/markets/stock/revenue'
params = {
'ticker': 'AAPL',
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v2/markets/stock/revenue';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v2/markets/stock/revenue"
);
const params = {
"ticker": "AAPL",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v2/markets/stock/revenue?ticker=AAPL&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": {
"title": "APPLE INC. REVENUE & EARNINGS PER SHARE (EPS)",
"revenueTable": {
"headers": {
"value1": "Fiscal Quarter:",
"value2": "2023 (Fiscal Year)",
"value3": "2022 (Fiscal Year)",
"value4": "2021 (Fiscal Year)"
},
"rows": [
{
"value1": "December",
"value2": "",
"value3": "",
"value4": ""
},
{
"value1": "Revenue",
"value2": "$117,154(m)",
"value3": "$123,945(m)",
"value4": "$111,439(m)"
},
{
"value1": "EPS",
"value2": "$1.88 (12/31/2022)",
"value3": "$2.10 (12/25/2021)",
"value4": "$1.68 (12/26/2020)"
},
{
"value1": "Dividends",
"value2": "$0.23",
"value3": "$0.22",
"value4": "$0.20"
},
{
"value1": "March",
"value2": "",
"value3": "",
"value4": ""
},
{
"value1": "Revenue",
"value2": "$94,836(m)",
"value3": "$97,278(m)",
"value4": "$89,584(m)"
},
{
"value1": "EPS",
"value2": "$1.53 (04/01/2023)",
"value3": "$1.52 (03/26/2022)",
"value4": "$1.40 (03/27/2021)"
},
{
"value1": "Dividends",
"value2": "$0.24",
"value3": "$0.23",
"value4": "$0.22"
},
{
"value1": "June",
"value2": "",
"value3": "",
"value4": ""
},
{
"value1": "Revenue",
"value2": "$81,797(m)",
"value3": "$82,959(m)",
"value4": "$81,434(m)"
},
{
"value1": "EPS",
"value2": "$1.26 (07/01/2023)",
"value3": "$1.20 (06/25/2022)",
"value4": "$1.30 (06/26/2021)"
},
{
"value1": "Dividends",
"value2": "$0.24",
"value3": "$0.23",
"value4": "$0.22"
},
{
"value1": "September (FYE)",
"value2": "",
"value3": "",
"value4": ""
},
{
"value1": "Revenue",
"value2": "$89,498(m)",
"value3": "$90,146(m)",
"value4": "$83,360(m)"
},
{
"value1": "EPS",
"value2": "$1.46 (09/30/2023)",
"value3": "$1.29 (09/24/2022)",
"value4": "$1.23 (09/25/2021)"
},
{
"value1": "Dividends",
"value2": "$0.24",
"value3": "$0.23",
"value4": "$0.22"
},
{
"value1": "Totals",
"value2": "",
"value3": "",
"value4": ""
},
{
"value1": "Revenue",
"value2": "$383,285(m)",
"value3": "$394,328(m)",
"value4": "$365,817(m)"
},
{
"value1": "EPS",
"value2": "$6.13",
"value3": "$6.11",
"value4": "$5.61"
},
{
"value1": "Dividends",
"value2": "$0.95",
"value3": "$0.91",
"value4": "$0.86"
}
]
}
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v2/short-interest
requires authentication
Get a company's short interest, settlement date, daily volumn, and days to cover.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v2/markets/stock/short-interest'
params = {
'ticker': 'AAPL',
'type': 'STOCKS',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v2/markets/stock/short-interest';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL',
'type' => 'STOCKS',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v2/markets/stock/short-interest"
);
const params = {
"ticker": "AAPL",
"type": "STOCKS",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v2/markets/stock/short-interest?ticker=AAPL&type=STOCKS" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"symbol": "aapl"
},
"body": [
{
"settlementDate": "01/12/2024",
"interest": "101,263,039",
"avgDailyShareVolume": "56,712,342",
"daysToCover": 1.785556
},
{
"settlementDate": "12/29/2023",
"interest": "108,220,157",
"avgDailyShareVolume": "42,416,650",
"daysToCover": 2.55136
},
{
"settlementDate": "12/15/2023",
"interest": "120,233,720",
"avgDailyShareVolume": "60,940,693",
"daysToCover": 1.972963
},
...
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v2/institutional-holdings
requires authentication
Get a company's institutional holdings.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v2/markets/stock/institutional-holdings'
params = {
'ticker': 'AAPL',
'type': 'TOTAL',
'limit': '15',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v2/markets/stock/institutional-holdings';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL',
'type' => 'TOTAL',
'limit' => '15',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v2/markets/stock/institutional-holdings"
);
const params = {
"ticker": "AAPL",
"type": "TOTAL",
"limit": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v2/markets/stock/institutional-holdings?ticker=AAPL&type=TOTAL&limit=15" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": {
"ownershipSummary": {
"SharesOutstandingPCT": {
"label": "Institutional Ownership",
"value": "58.67%"
},
"ShareoutstandingTotal": {
"label": "Total Shares Outstanding (millions)",
"value": "15,462"
},
"TotalHoldingsValue": {
"label": "Total Value of Holdings (millions)",
"value": "$1,685,929"
}
},
"activePositions": {
"headers": {
"positions": "Active Positions",
"holders": "Holders",
"shares": "Shares"
},
"rows": [
{
"positions": "Increased Positions",
"holders": "1,938",
"shares": "165,067,100"
},
{
"positions": "Decreased Positions",
"holders": "2,507",
"shares": "230,155,346"
},
{
"positions": "Held Positions",
"holders": "266",
"shares": "8,676,228,894"
},
{
"positions": "Total Institutional Shares",
"holders": "4,711",
"shares": "9,071,451,340"
}
]
},
"newSoldOutPositions": {
"headers": {
"positions": "Active Positions",
"holders": "Holders",
"shares": "Shares"
},
"rows": [
{
"positions": "New Positions",
"holders": "189",
"shares": "45,522,662"
},
{
"positions": "Sold Out Positions",
"holders": "78",
"shares": "6,228,057"
}
]
},
"holdingsTransactions": {
"totalRecords": "78",
"institutionalHolders": null,
"sharesHeld": null,
"table": {
"headers": {
"ownerName": "Owner Name",
"date": "Date",
"sharesHeld": "Shares Held",
"sharesChange": "Change (Shares)",
"sharesChangePCT": "Change (%)",
"marketValue": "Value (In 1,000s)"
},
"rows": [
{
"ownerName": "Acrisure Capital Management, Llc",
"date": "3/31/2023",
"sharesHeld": "0",
"sharesChange": "-2,036",
"sharesChangePCT": "Sold Out",
"marketValue": ""
},
{
"ownerName": "Advisors Capital Management, Llc",
"date": "9/30/2023",
"sharesHeld": "0",
"sharesChange": "-795,635",
"sharesChangePCT": "Sold Out",
"marketValue": ""
},
{
"ownerName": "Algert Global Llc",
"date": "9/30/2023",
"sharesHeld": "0",
"sharesChange": "-48,139",
"sharesChangePCT": "Sold Out",
"marketValue": ""
},
{
"ownerName": "Alight Capital Management Lp",
"date": "9/30/2023",
"sharesHeld": "0",
"sharesChange": "-60,000",
"sharesChangePCT": "Sold Out",
"marketValue": ""
},
{
"ownerName": "Alpine Global Management, Llc",
"date": "9/30/2023",
"sharesHeld": "0",
"sharesChange": "-120,000",
"sharesChangePCT": "Sold Out",
"marketValue": ""
},
{
"ownerName": "Andra Ap-Fonden",
"date": "9/30/2023",
"sharesHeld": "0",
"sharesChange": "-78,700",
"sharesChangePCT": "Sold Out",
"marketValue": ""
},
{
"ownerName": "Appaloosa Lp",
"date": "9/30/2023",
"sharesHeld": "0",
"sharesChange": "-480,000",
"sharesChangePCT": "Sold Out",
"marketValue": ""
},
{
"ownerName": "Appleton Group, Llc",
"date": "9/30/2023",
"sharesHeld": "0",
"sharesChange": "-2,438",
"sharesChangePCT": "Sold Out",
"marketValue": ""
},
{
"ownerName": "Arete Wealth Advisors, Llc",
"date": "9/30/2023",
"sharesHeld": "0",
"sharesChange": "-184,215",
"sharesChangePCT": "Sold Out",
"marketValue": ""
},
{
"ownerName": "Asset Allocation & Management Company, Llc",
"date": "9/30/2023",
"sharesHeld": "0",
"sharesChange": "-5,250",
"sharesChangePCT": "Sold Out",
"marketValue": ""
},
{
"ownerName": "Blueshift Asset Management, Llc",
"date": "9/30/2023",
"sharesHeld": "0",
"sharesChange": "-5,508",
"sharesChangePCT": "Sold Out",
"marketValue": ""
},
{
"ownerName": "Briaud Financial Planning, Inc",
"date": "12/31/2023",
"sharesHeld": "0",
"sharesChange": "-5,680",
"sharesChangePCT": "Sold Out",
"marketValue": ""
},
{
"ownerName": "Bridgewater Associates, Lp",
"date": "9/30/2023",
"sharesHeld": "0",
"sharesChange": "-2,076",
"sharesChangePCT": "Sold Out",
"marketValue": ""
},
{
"ownerName": "Brookfield Corp /On/",
"date": "9/30/2023",
"sharesHeld": "0",
"sharesChange": "-31,251",
"sharesChangePCT": "Sold Out",
"marketValue": ""
},
{
"ownerName": "Brown Shipley& Co Ltd",
"date": "9/30/2023",
"sharesHeld": "0",
"sharesChange": "-110,243",
"sharesChangePCT": "Sold Out",
"marketValue": ""
}
]
}
}
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v2/sec-filings
requires authentication
Get a company's latest filings in insider trades, annual and quarterly reports, 8-k, proxies, and registration statements.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v2/markets/stock/sec-filings'
params = {
'ticker': 'AAPL',
'type': 'ALL',
'limit': '15',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v2/markets/stock/sec-filings';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL',
'type' => 'ALL',
'limit' => '15',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v2/markets/stock/sec-filings"
);
const params = {
"ticker": "AAPL",
"type": "ALL",
"limit": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v2/markets/stock/sec-filings?ticker=AAPL&type=ALL&limit=15" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"symbol": "AAPL",
"totalRecords": 14,
"headers": {
"companyName": "Company Name",
"formType": "Form Type",
"filed": "Filed",
"period": "Period",
"view": "View"
}
},
"body": {
"latest": [
{
"label": "10-K",
"value": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317840268&type=HTML&symbol=AAPL&cdn=438829151a8c993b52ce4aa1a1799f41&companyName=Apple+Inc.&formType=10-K&formDescription=Annual+report+pursuant+to+Section+13+or+15%28d%29&dateFiled=2023-11-03"
},
{
"label": "10-Q",
"value": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=318027498&type=HTML&symbol=AAPL&cdn=1df15f20ee9331418a331724247bceeb&companyName=Apple+Inc.&formType=10-Q&formDescription=General+form+for+quarterly+reports+under+Section+13+or+15%28d%29&dateFiled=2024-02-02"
}
],
"rows": [
{
"companyName": "Apple Inc.",
"reportingOwner": "",
"formType": "4",
"filed": "12/01/2023",
"period": "11/29/2023",
"view": {
"htmlLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317904974&type=HTML&symbol=AAPL&cdn=223480e7e41b2dfefe24d0b584ff09c0&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-12-01",
"docLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317904974&type=DOC&symbol=AAPL&cdn=223480e7e41b2dfefe24d0b584ff09c0&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-12-01",
"pdfLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317904974&type=PDF&symbol=AAPL&cdn=223480e7e41b2dfefe24d0b584ff09c0&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-12-01",
"xbrLink": "",
"ixbrlContent": "",
"xlsLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317904974&type=XLS&symbol=AAPL&cdn=223480e7e41b2dfefe24d0b584ff09c0&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-12-01",
"xBrlSubDoc": ""
}
},
{
"companyName": "Apple Inc.",
"reportingOwner": "",
"formType": "4",
"filed": "11/20/2023",
"period": "11/16/2023",
"view": {
"htmlLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317880738&type=HTML&symbol=AAPL&cdn=4fd242b84a9a8919ded44f4497849cbe&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-11-20",
"docLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317880738&type=DOC&symbol=AAPL&cdn=4fd242b84a9a8919ded44f4497849cbe&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-11-20",
"pdfLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317880738&type=PDF&symbol=AAPL&cdn=4fd242b84a9a8919ded44f4497849cbe&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-11-20",
"xbrLink": "",
"ixbrlContent": "",
"xlsLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317880738&type=XLS&symbol=AAPL&cdn=4fd242b84a9a8919ded44f4497849cbe&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-11-20",
"xBrlSubDoc": ""
}
},
{
"companyName": "Apple Inc.",
"reportingOwner": "",
"formType": "4",
"filed": "11/14/2023",
"period": "11/10/2023",
"view": {
"htmlLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317867434&type=HTML&symbol=AAPL&cdn=b8b8223aa4348f02d7bd75bad335e3f8&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-11-14",
"docLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317867434&type=DOC&symbol=AAPL&cdn=b8b8223aa4348f02d7bd75bad335e3f8&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-11-14",
"pdfLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317867434&type=PDF&symbol=AAPL&cdn=b8b8223aa4348f02d7bd75bad335e3f8&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-11-14",
"xbrLink": "",
"ixbrlContent": "",
"xlsLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317867434&type=XLS&symbol=AAPL&cdn=b8b8223aa4348f02d7bd75bad335e3f8&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-11-14",
"xBrlSubDoc": ""
}
},
{
"companyName": "Apple Inc.",
"reportingOwner": "",
"formType": "4",
"filed": "10/17/2023",
"period": "10/15/2023",
"view": {
"htmlLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317807374&type=HTML&symbol=AAPL&cdn=7119df539b05934fc91fb40e88a48d3d&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-17",
"docLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317807374&type=DOC&symbol=AAPL&cdn=7119df539b05934fc91fb40e88a48d3d&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-17",
"pdfLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317807374&type=PDF&symbol=AAPL&cdn=7119df539b05934fc91fb40e88a48d3d&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-17",
"xbrLink": "",
"ixbrlContent": "",
"xlsLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317807374&type=XLS&symbol=AAPL&cdn=7119df539b05934fc91fb40e88a48d3d&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-17",
"xBrlSubDoc": ""
}
},
{
"companyName": "Apple Inc.",
"reportingOwner": "",
"formType": "4",
"filed": "10/10/2023",
"period": "10/06/2023",
"view": {
"htmlLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317797598&type=HTML&symbol=AAPL&cdn=603564ad4bea722dd9f9aa1203ae71a1&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-10",
"docLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317797598&type=DOC&symbol=AAPL&cdn=603564ad4bea722dd9f9aa1203ae71a1&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-10",
"pdfLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317797598&type=PDF&symbol=AAPL&cdn=603564ad4bea722dd9f9aa1203ae71a1&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-10",
"xbrLink": "",
"ixbrlContent": "",
"xlsLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317797598&type=XLS&symbol=AAPL&cdn=603564ad4bea722dd9f9aa1203ae71a1&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-10",
"xBrlSubDoc": ""
}
},
{
"companyName": "Apple Inc.",
"reportingOwner": "",
"formType": "4",
"filed": "10/10/2023",
"period": "10/06/2023",
"view": {
"htmlLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317797601&type=HTML&symbol=AAPL&cdn=19ec4da2f84b3f2cd887812113217c10&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-10",
"docLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317797601&type=DOC&symbol=AAPL&cdn=19ec4da2f84b3f2cd887812113217c10&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-10",
"pdfLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317797601&type=PDF&symbol=AAPL&cdn=19ec4da2f84b3f2cd887812113217c10&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-10",
"xbrLink": "",
"ixbrlContent": "",
"xlsLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317797601&type=XLS&symbol=AAPL&cdn=19ec4da2f84b3f2cd887812113217c10&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-10",
"xBrlSubDoc": ""
}
},
{
"companyName": "Apple Inc.",
"reportingOwner": "",
"formType": "4",
"filed": "10/03/2023",
"period": "10/01/2023",
"view": {
"htmlLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317787279&type=HTML&symbol=AAPL&cdn=254341d2f09d0123833fe5199819ddea&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-03",
"docLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317787279&type=DOC&symbol=AAPL&cdn=254341d2f09d0123833fe5199819ddea&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-03",
"pdfLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317787279&type=PDF&symbol=AAPL&cdn=254341d2f09d0123833fe5199819ddea&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-03",
"xbrLink": "",
"ixbrlContent": "",
"xlsLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317787279&type=XLS&symbol=AAPL&cdn=254341d2f09d0123833fe5199819ddea&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-03",
"xBrlSubDoc": ""
}
},
{
"companyName": "Apple Inc.",
"reportingOwner": "",
"formType": "4",
"filed": "10/03/2023",
"period": "10/01/2023",
"view": {
"htmlLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317787276&type=HTML&symbol=AAPL&cdn=8815c61b91f269d9d5a47816376edc09&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-03",
"docLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317787276&type=DOC&symbol=AAPL&cdn=8815c61b91f269d9d5a47816376edc09&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-03",
"pdfLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317787276&type=PDF&symbol=AAPL&cdn=8815c61b91f269d9d5a47816376edc09&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-03",
"xbrLink": "",
"ixbrlContent": "",
"xlsLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317787276&type=XLS&symbol=AAPL&cdn=8815c61b91f269d9d5a47816376edc09&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-03",
"xBrlSubDoc": ""
}
},
{
"companyName": "Apple Inc.",
"reportingOwner": "",
"formType": "4",
"filed": "10/03/2023",
"period": "10/01/2023",
"view": {
"htmlLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317787275&type=HTML&symbol=AAPL&cdn=451e2a6ada3b4c63c91f7850b0996a64&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-03",
"docLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317787275&type=DOC&symbol=AAPL&cdn=451e2a6ada3b4c63c91f7850b0996a64&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-03",
"pdfLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317787275&type=PDF&symbol=AAPL&cdn=451e2a6ada3b4c63c91f7850b0996a64&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-03",
"xbrLink": "",
"ixbrlContent": "",
"xlsLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317787275&type=XLS&symbol=AAPL&cdn=451e2a6ada3b4c63c91f7850b0996a64&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-03",
"xBrlSubDoc": ""
}
},
{
"companyName": "Apple Inc.",
"reportingOwner": "",
"formType": "4",
"filed": "10/03/2023",
"period": "10/01/2023",
"view": {
"htmlLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317787278&type=HTML&symbol=AAPL&cdn=05c2388fbeb3711557b24a57770b9075&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-03",
"docLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317787278&type=DOC&symbol=AAPL&cdn=05c2388fbeb3711557b24a57770b9075&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-03",
"pdfLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317787278&type=PDF&symbol=AAPL&cdn=05c2388fbeb3711557b24a57770b9075&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-03",
"xbrLink": "",
"ixbrlContent": "",
"xlsLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317787278&type=XLS&symbol=AAPL&cdn=05c2388fbeb3711557b24a57770b9075&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-03",
"xBrlSubDoc": ""
}
},
{
"companyName": "Apple Inc.",
"reportingOwner": "",
"formType": "4",
"filed": "10/03/2023",
"period": "10/01/2023",
"view": {
"htmlLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317787280&type=HTML&symbol=AAPL&cdn=2455af946ea497d2418a499ab5c129f4&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-03",
"docLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317787280&type=DOC&symbol=AAPL&cdn=2455af946ea497d2418a499ab5c129f4&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-03",
"pdfLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317787280&type=PDF&symbol=AAPL&cdn=2455af946ea497d2418a499ab5c129f4&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-03",
"xbrLink": "",
"ixbrlContent": "",
"xlsLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317787280&type=XLS&symbol=AAPL&cdn=2455af946ea497d2418a499ab5c129f4&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-03",
"xBrlSubDoc": ""
}
},
{
"companyName": "Apple Inc.",
"reportingOwner": "",
"formType": "4",
"filed": "10/03/2023",
"period": "10/01/2023",
"view": {
"htmlLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317787259&type=HTML&symbol=AAPL&cdn=dcd06f6f2fe1f5706c7d139abf7c1d55&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-03",
"docLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317787259&type=DOC&symbol=AAPL&cdn=dcd06f6f2fe1f5706c7d139abf7c1d55&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-03",
"pdfLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317787259&type=PDF&symbol=AAPL&cdn=dcd06f6f2fe1f5706c7d139abf7c1d55&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-03",
"xbrLink": "",
"ixbrlContent": "",
"xlsLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317787259&type=XLS&symbol=AAPL&cdn=dcd06f6f2fe1f5706c7d139abf7c1d55&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-10-03",
"xBrlSubDoc": ""
}
},
{
"companyName": "Apple Inc.",
"reportingOwner": "",
"formType": "4",
"filed": "09/19/2023",
"period": "08/08/2023",
"view": {
"htmlLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317757913&type=HTML&symbol=AAPL&cdn=9c916151d6a841e84d373422d808da75&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-09-19",
"docLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317757913&type=DOC&symbol=AAPL&cdn=9c916151d6a841e84d373422d808da75&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-09-19",
"pdfLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317757913&type=PDF&symbol=AAPL&cdn=9c916151d6a841e84d373422d808da75&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-09-19",
"xbrLink": "",
"ixbrlContent": "",
"xlsLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317757913&type=XLS&symbol=AAPL&cdn=9c916151d6a841e84d373422d808da75&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-09-19",
"xBrlSubDoc": ""
}
},
{
"companyName": "Apple Inc.",
"reportingOwner": "O'BRIEN DEIRDRE",
"formType": "4",
"filed": "08/08/2023",
"period": "08/05/2023",
"view": {
"htmlLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317672169&type=HTML&symbol=AAPL&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-08-08",
"docLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317672169&type=DOC&symbol=AAPL&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-08-08",
"pdfLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317672169&type=PDF&symbol=AAPL&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-08-08",
"xbrLink": "",
"ixbrlContent": "",
"xlsLink": "https://app.quotemedia.com/data/downloadFiling?webmasterId=90423&ref=317672169&type=XLS&symbol=AAPL&companyName=Apple+Inc.&formType=4&formDescription=Statement+of+changes+in+beneficial+ownership+of+securities&dateFiled=2023-08-08",
"xBrlSubDoc": ""
}
}
]
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v2/historical
requires authentication
Get a company's historical data such as open, high, low and close for the past 10 years.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v2/markets/stock/historical'
params = {
'ticker': 'AAPL',
'type': 'STOCKS',
'limit': '50',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v2/markets/stock/historical';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL',
'type' => 'STOCKS',
'limit' => '50',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v2/markets/stock/historical"
);
const params = {
"ticker": "AAPL",
"type": "STOCKS",
"limit": "50",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v2/markets/stock/historical?ticker=AAPL&type=STOCKS&limit=50" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"symbol": "SPY",
"totalrecords": 21,
"headers": {
"date": "Date",
"close": "Close/Last",
"volume": "Volume",
"open": "Open",
"high": "High",
"low": "Low"
}
},
"body": [
{
"date": "02/02/2024",
"close": "494.35",
"volume": "99,228,190",
"open": "489.65",
"high": "496.05",
"low": "489.30"
},
{
"date": "02/01/2024",
"close": "489.20",
"volume": "91,891,640",
"open": "484.63",
"high": "489.23",
"low": "483.80"
},
{
"date": "01/31/2024",
"close": "482.88",
"volume": "126,011,100",
"open": "488.62",
"high": "489.0813",
"low": "482.86"
},
...
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Options
These endpoints provide options trading activity, unusual options activity, implied volatility rankings, the most active options, and options flow. Additionally, there are endpoints for upcoming earnings and trending options data, offering a comprehensive view of the options market.
GET /v1/options
requires authentication
Get the most recent Options tick for a given company.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/options'
params = {
'ticker': 'AAPL',
'expiration': '1734652800',
'display': 'straddle',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/options';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL',
'expiration' => '1734652800',
'display' => 'straddle',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/options"
);
const params = {
"ticker": "AAPL",
"expiration": "1734652800",
"display": "straddle",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/options?ticker=AAPL&expiration=1734652800&display=straddle" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"symbol": "AAPL",
"expiration": null,
"processedTime": "2023-08-09T22:12:09.199084Z",
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": [
{
"underlyingSymbol": "AAPL",
"expirationDates": [
1691712000, 1692316800, 1692921600, 1693526400, 1694131200,
1694736000, 1695340800, 1697760000, 1700179200, 1702598400,
1705622400, 1710460800, 1718928000, 1726790400, 1734652800,
1737072000, 1750377600, 1766102400
],
"strikes": [
50, 70, 80, 85, 95, 100, 105, 110, 115, 120, 125, 130, 135, 140,
145, 150, 155, 160, 162.5, 165, 167.5, 170, 172.5, 175, 177.5,
180, 182.5, 185, 187.5, 190, 192.5, 195, 197.5, 200, 202.5, 205,
207.5, 210, 212.5, 215, 217.5, 220, 222.5, 225, 230, 235, 240,
245, 250, 255, 260, 265
],
"hasMiniOptions": false,
"quote": {
"language": "en-US",
"region": "US",
"quoteType": "EQUITY",
"typeDisp": "Equity",
"quoteSourceName": "Nasdaq Real Time Price",
"triggerable": true,
"customPriceAlertConfidence": "HIGH",
"currency": "USD",
"marketState": "POST",
"regularMarketChangePercent": -0.89543974,
"regularMarketPrice": 178.19,
"exchange": "NMS",
"shortName": "Apple Inc.",
"longName": "Apple Inc.",
"messageBoardId": "finmb_24937",
"exchangeTimezoneName": "America/New_York",
"exchangeTimezoneShortName": "EDT",
"gmtOffSetMilliseconds": -14400000,
"market": "us_market",
"esgPopulated": false,
"firstTradeDateMilliseconds": 345479400000,
"sharesOutstanding": 15728700416,
"bookValue": 3.852,
"fiftyDayAverage": 187.3632,
"fiftyDayAverageChange": -9.1732025,
"fiftyDayAverageChangePercent": -0.048959468,
"twoHundredDayAverage": 160.3686,
"twoHundredDayAverageChange": 17.821396,
"marketCap": 2802697109504,
"forwardPE": 29.797659,
"priceToBook": 46.259087,
"sourceInterval": 15,
"exchangeDataDelayedBy": 0,
"averageAnalystRating": "2.0 - Buy",
"tradeable": false,
"cryptoTradeable": false,
"priceHint": 2,
"postMarketChangePercent": 0.089793846,
"postMarketTime": 1691619122,
"postMarketPrice": 178.35,
"postMarketChange": 0.16000366,
"regularMarketChange": -1.6100006,
"regularMarketTime": 1691611201,
"regularMarketDayHigh": 180.93,
"regularMarketDayRange": "177.01 - 180.93",
"regularMarketDayLow": 177.01,
"regularMarketVolume": 56570198,
"regularMarketPreviousClose": 179.8,
"bid": 178.26,
"ask": 178.25,
"bidSize": 8,
"askSize": 10,
"fullExchangeName": "NasdaqGS",
"financialCurrency": "USD",
"regularMarketOpen": 180.87,
"averageDailyVolume3Month": 57005840,
"averageDailyVolume10Day": 60996280,
"fiftyTwoWeekLowChange": 54.020004,
"fiftyTwoWeekLowChangePercent": 0.43504876,
"fiftyTwoWeekRange": "124.17 - 198.23",
"fiftyTwoWeekHighChange": -20.039993,
"fiftyTwoWeekHighChangePercent": -0.101094656,
"fiftyTwoWeekLow": 124.17,
"fiftyTwoWeekHigh": 198.23,
"fiftyTwoWeekChangePercent": 6.2396646,
"dividendDate": 1692230400,
"earningsTimestamp": 1691096400,
"earningsTimestampStart": 1698231540,
"earningsTimestampEnd": 1698667200,
"trailingAnnualDividendRate": 0.93,
"trailingPE": 30.252972,
"dividendRate": 0.96,
"trailingAnnualDividendYield": 0.005172414,
"dividendYield": 0.53,
"epsTrailingTwelveMonths": 5.89,
"epsForward": 5.98,
"epsCurrentYear": 5.49,
"priceEpsCurrentYear": 32.457195,
"twoHundredDayAverageChangePercent": 0.11112771,
"displayName": "Apple",
"symbol": "AAPL"
},
"options": [
{
"expirationDate": 1691712000,
"hasMiniOptions": false,
"calls": [
{
"contractSymbol": "AAPL230811C00050000",
"strike": 50,
"currency": "USD",
"lastPrice": 129.3,
"change": 0,
"percentChange": 0,
"volume": 2,
"openInterest": 4,
"bid": 127.5,
"ask": 128.8,
"contractSize": "REGULAR",
"expiration": 1691712000,
"lastTradeDate": 1691518707,
"impliedVolatility": 7.26562591796875,
"inTheMoney": true
},
{ ... }
],
"puts": [
{
"contractSymbol": "AAPL230811P00070000",
"strike": 70,
"currency": "USD",
"lastPrice": 0.01,
"change": 0,
"percentChange": 0,
"volume": 1,
"openInterest": 2,
"bid": 0,
"ask": 0.01,
"contractSize": "REGULAR",
"expiration": 1691712000,
"lastTradeDate": 1691435803,
"impliedVolatility": 3.1250021875,
"inTheMoney": false
},
{...}
]
}
]
}
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/unusual-options-activity
requires authentication
Unusual Options Activity identifies options contracts that are trading at a higher volume relative to the contract's open interest. Unusual Options can provide insight on what "smart money" is doing with large volume orders, signaling new positions and potentially a big move in the underlying asset.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/options/unusual-options-activity'
params = {
'type': 'STOCKS',
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/options/unusual-options-activity';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'type' => 'STOCKS',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/options/unusual-options-activity"
);
const params = {
"type": "STOCKS",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/options/unusual-options-activity?type=STOCKS&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"count": 20,
"total": 1736,
"page": "3"
},
"body": [
{
"symbol": "PANW|20240223|310.00C",
"baseSymbol": "PANW",
"baseLastPrice": "261.97",
"baseSymbolType": "1",
"symbolType": "Call",
"strikePrice": "310.00",
"expirationDate": "02/23/24",
"daysToExpiration": "1",
"bidPrice": "0.12",
"midpoint": "0.13",
"askPrice": "0.14",
"lastPrice": "0.14",
"volume": "2,445",
"openInterest": "119",
"volumeOpenInterestRatio": "20.55",
"volatility": "151.81%",
"delta": "0.01892",
"tradeTime": "02/21/24",
"symbolCode": "N/A"
},
{
"symbol": "PANW|20240223|235.00P",
"baseSymbol": "PANW",
"baseLastPrice": "261.97",
"baseSymbolType": "1",
"symbolType": "Put",
"strikePrice": "235.00",
"expirationDate": "02/23/24",
"daysToExpiration": "1",
"bidPrice": "0.28",
"midpoint": "0.29",
"askPrice": "0.30",
"lastPrice": "0.30",
"volume": "3,754",
"openInterest": "184",
"volumeOpenInterestRatio": "20.40",
"volatility": "123.03%",
"delta": "-0.04259",
"tradeTime": "02/21/24",
"symbolCode": "N/A"
},
{...}
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/iv-rank-percentile
requires authentication
Get Stocks, ETFs and Indices with the most option activity on the day, with the ATM average IV Rank and IV Percentile.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/options/iv-rank-percentile'
params = {
'type': 'STOCKS',
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/options/iv-rank-percentile';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'type' => 'STOCKS',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/options/iv-rank-percentile"
);
const params = {
"type": "STOCKS",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/options/iv-rank-percentile?type=STOCKS&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"count": 20,
"total": 500,
"page": "3"
},
"body": [
{
"symbol": "RUN",
"symbolName": "Sunrun Inc",
"lastPrice": "12.78",
"priceChange": "-2.80",
"percentChange": "-17.97%",
"optionsTotalVolume": "115,234",
"optionsWeightedImpliedVolatility": "95.72%",
"optionsImpliedVolatilityRank1y": "60.29%",
"optionsImpliedVolatilityPercentile1y": "81%",
"optionsWeightedImpliedVolatilityHigh1y": "118.06%",
"tradeTime": "02/22/24",
"optionsWeightedImpliedVolatilityChange": "-9.87%",
"symbolCode": "STK",
"symbolType": 1,
"hasOptions": "Yes"
},
{
"symbol": "BA",
"symbolName": "Boeing Company",
"lastPrice": "201.50",
"priceChange": "-0.07",
"percentChange": "-0.03%",
"optionsTotalVolume": "113,919",
"optionsWeightedImpliedVolatility": "30.31%",
"optionsImpliedVolatilityRank1y": "43.58%",
"optionsImpliedVolatilityPercentile1y": "54%",
"optionsWeightedImpliedVolatilityHigh1y": "40.76%",
"tradeTime": "02/22/24",
"optionsWeightedImpliedVolatilityChange": "-0.18%",
"symbolCode": "STK",
"symbolType": 1,
"hasOptions": "Yes"
},
{...}
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/iv-change
requires authentication
Get Stocks, ETFs and Indices with the most significant changes in implied volatility per options contract.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/options/iv-change'
params = {
'type': 'STOCKS',
'direction': 'UP',
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/options/iv-change';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'type' => 'STOCKS',
'direction' => 'UP',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/options/iv-change"
);
const params = {
"type": "STOCKS",
"direction": "UP",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/options/iv-change?type=STOCKS&direction=UP&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"count": 20,
"total": 273,
"page": "1"
},
"body": [
{
"symbol": "IONQ|20241018|8.00C",
"baseSymbol": "IONQ",
"baseLastPrice": "9.71",
"baseSymbolType": 1,
"symbolType": "Call",
"strikePrice": "8.00",
"expirationDate": "10/18/24",
"daysToExpiration": "20",
"bidPrice": "1.23",
"askPrice": "2.12",
"lastPrice": "1.72",
"volume": "779",
"openInterest": "302",
"delta": "0.79229",
"volatilityPercentChange": "+94.44%",
"volatility": "125.74%",
"tradeTime": "09/27/24"
},
{
"symbol": "BTI|20241220|33.00C",
"baseSymbol": "BTI",
"baseLastPrice": "36.84",
"baseSymbolType": 1,
"symbolType": "Call",
"strikePrice": "33.00",
"expirationDate": "12/20/24",
"daysToExpiration": "83",
"bidPrice": "2.50",
"askPrice": "6.20",
"lastPrice": "4.65",
"volume": "570",
"openInterest": "3,387",
"delta": "0.75360",
"volatilityPercentChange": "+79.42%",
"volatility": "36.71%",
"tradeTime": "09/27/24"
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/most-active
requires authentication
Get Stocks, ETFs, and Indices with the most option activity on the day, with IV Rank and Put/Call ratio.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/options/most-active'
params = {
'type': 'STOCKS',
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/options/most-active';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'type' => 'STOCKS',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/options/most-active"
);
const params = {
"type": "STOCKS",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/options/most-active?type=STOCKS&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"count": 20,
"total": 500,
"page": "1"
},
"body": [
{
"symbol": "NVDA",
"symbolType": 1,
"symbolName": "Nvidia Corp",
"hasOptions": "Yes",
"lastPrice": "785.38",
"priceChange": "+110.66",
"percentChange": "+16.40%",
"optionsImpliedVolatilityRank1y": "38.66%",
"optionsTotalVolume": "2,493,798",
"optionsPutVolumePercent": "38.9%",
"optionsCallVolumePercent": "61.1%",
"optionsPutCallVolumeRatio": "0.64",
"tradeTime": "02/22/24",
"symbolCode": "STK"
},
{
"symbol": "TSLA",
"symbolType": 1,
"symbolName": "Tesla Inc",
"hasOptions": "Yes",
"lastPrice": "197.41",
"priceChange": "+2.64",
"percentChange": "+1.36%",
"optionsImpliedVolatilityRank1y": "29.04%",
"optionsTotalVolume": "1,960,746",
"optionsPutVolumePercent": "36.3%",
"optionsCallVolumePercent": "63.7%",
"optionsPutCallVolumeRatio": "0.57",
"tradeTime": "02/22/24",
"symbolCode": "STK"
},
{...}
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/highest-iv
requires authentication
Get implied volatility options' strikes which may be covered call, cash secured put, or spread candidates to take advantage of inflated option premiums.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/options/highest-iv'
params = {
'sort': 'HIGHEST',
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/options/highest-iv';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'sort' => 'HIGHEST',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/options/highest-iv"
);
const params = {
"sort": "HIGHEST",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/options/highest-iv?sort=HIGHEST&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"count": 20,
"total": 1018,
"page": "1"
},
"body": [
{
"symbol": "WULF|20250117|1.50C",
"baseSymbol": "WULF",
"baseLastPrice": "2.14",
"baseSymbolType": 1,
"symbolType": "Call",
"strikePrice": "1.50",
"expirationDate": "01/17/25",
"daysToExpiration": "329",
"bidPrice": "1.35",
"askPrice": "2.05",
"lastPrice": "1.50",
"volume": "772",
"openInterest": "2,594",
"volumeOpenInterestRatio": "0.30",
"delta": "0.77343",
"volatility": "420.81%",
"tradeTime": "02/22/24"
},
{
"symbol": "IOVA|20240315|5.00C",
"baseSymbol": "IOVA",
"baseLastPrice": "15.94",
"baseSymbolType": 1,
"symbolType": "Call",
"strikePrice": "5.00",
"expirationDate": "03/15/24",
"daysToExpiration": "21",
"bidPrice": "10.70",
"askPrice": "11.20",
"lastPrice": "10.94",
"volume": "588",
"openInterest": "7,372",
"volumeOpenInterestRatio": "0.08",
"delta": "0.96607",
"volatility": "342.47%",
"tradeTime": "02/22/24"
},
{...}
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/options-flow
requires authentication
Get significant option transactions across various US option exchanges. Analyzing the option strikes that large institutional traders are buying or selling can offer valuable insights into both directional sentiment and volatility for the corresponding underlying security.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/options/options-flow'
params = {
'type': 'STOCKS',
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/options/options-flow';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'type' => 'STOCKS',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/options/options-flow"
);
const params = {
"type": "STOCKS",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/options/options-flow?type=STOCKS&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"count": 20,
"total": 11984,
"page": "1"
},
"body": [
{
"symbol": "AMD|20240621|150.00C",
"baseSymbol": "AMD",
"lastPrice": "183.22",
"symbolType": "Call",
"strikePrice": "150.00",
"expiration": "06/21/24",
"dte": "120",
"bidXSize": "41.25 x 237",
"askXSize": "41.50 x 143",
"tradePrice": "41.50",
"tradeSize": "10,000",
"side": "ask",
"premium": "$41,500,000",
"volume": "10,048",
"openInterest": "9,011",
"volatility": "48.50%",
"delta": "0.82194",
"tradeCondition": "SLCN",
"label": "BuyToOpen",
"tradeTime": "02/22/24 12:23:58",
"expirationType": "M",
"askPrice": "41.50",
"bidPrice": "41.25",
"baseSymbolType": 1
},
{
"symbol": "PANW|20240223|335.00P",
"baseSymbol": "PANW",
"lastPrice": "269.24",
"symbolType": "Put",
"strikePrice": "335.00",
"expiration": "02/23/24",
"dte": "1",
"bidXSize": "63.95 x 47",
"askXSize": "66.80 x 31",
"tradePrice": "65.50",
"tradeSize": "3,010",
"side": "mid",
"premium": "$19,715,500",
"volume": "4,233",
"openInterest": "756",
"volatility": "253.36%",
"delta": "-0.94328",
"tradeCondition": "SLFT",
"label": "ToOpen",
"tradeTime": "02/22/24 14:51:42",
"expirationType": "W",
"askPrice": "66.80",
"bidPrice": "63.95",
"baseSymbolType": 1
},
{...}
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v2/options
requires authentication
Get a company's option-chain data.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v2/markets/options'
params = {
'ticker': 'AAPL',
'type': 'STOCKS',
'limit': '50',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v2/markets/options';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL',
'type' => 'STOCKS',
'limit' => '50',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v2/markets/options"
);
const params = {
"ticker": "AAPL",
"type": "STOCKS",
"limit": "50",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v2/markets/options?ticker=AAPL&type=STOCKS&limit=50" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"totalrecords": 48,
"lastTrade": "LAST TRADE: $185.85 (AS OF FEB 2, 2024)",
"headers": {
"expiryDate": "Exp. Date",
"c_Last": "Last",
"c_Change": "Change",
"c_Bid": "Bid",
"c_Ask": "Ask",
"c_Volume": "Volume",
"c_Openinterest": "Open Int.",
"strike": "Strike",
"p_Last": "Last",
"p_Change": "Change",
"p_Bid": "Bid",
"p_Ask": "Ask",
"p_Volume": "Volume",
"p_Openinterest": "Open Int."
},
"from_date": [
{
"label": "February 2024",
"value": "2024-02-09|2024-02-23"
},
{
"label": "March 2024",
"value": "2024-03-01|2024-03-22"
},
{
"label": "April 2024",
"value": "2024-04-19|2024-04-19"
},
{
"label": "May 2024",
"value": "2024-05-17|2024-05-17"
},
{
"label": "June 2024",
"value": "2024-06-21|2024-06-21"
},
{
"label": "July 2024",
"value": "2024-07-19|2024-07-19"
},
{
"label": "August 2024",
"value": "2024-08-16|2024-08-16"
},
{
"label": "September 2024",
"value": "2024-09-20|2024-09-20"
},
{
"label": "December 2024",
"value": "2024-12-20|2024-12-20"
},
{
"label": "January 2025",
"value": "2025-01-17|2025-01-17"
},
{
"label": "March 2025",
"value": "2025-03-21|2025-03-21"
},
{
"label": "June 2025",
"value": "2025-06-20|2025-06-20"
},
{
"label": "September 2025",
"value": "2025-09-19|2025-09-19"
},
{
"label": "December 2025",
"value": "2025-12-19|2025-12-19"
},
{
"label": "January 2026",
"value": "2026-01-16|2026-01-16"
},
{
"label": "June 2026",
"value": "2026-06-18|2026-06-18"
},
{
"label": "All",
"value": "all"
}
]
},
"body": [
{
"expirygroup": "February 9, 2024",
"expiryDate": null,
"c_Last": null,
"c_Change": null,
"c_Bid": null,
"c_Ask": null,
"c_Volume": null,
"c_Openinterest": null,
"c_colour": false,
"strike": null,
"p_Last": null,
"p_Change": null,
"p_Bid": null,
"p_Ask": null,
"p_Volume": null,
"p_Openinterest": null,
"p_colour": false
},
{
"expirygroup": "",
"expiryDate": "Feb 9",
"c_Last": "18.80",
"c_Change": "-0.40",
"c_Bid": "18.20",
"c_Ask": "18.95",
"c_Volume": "5",
"c_Openinterest": "25",
"c_colour": true,
"strike": "167.50",
"p_Last": "0.05",
"p_Change": "-0.20",
"p_Bid": "0.04",
"p_Ask": "0.06",
"p_Volume": "10870",
"p_Openinterest": "11770",
"p_colour": false
},
{
"expirygroup": "",
"expiryDate": "Feb 9",
"c_Last": "16.30",
"c_Change": "-2.55",
"c_Bid": "15.65",
"c_Ask": "16.40",
"c_Volume": "600",
"c_Openinterest": "315",
"c_colour": true,
"strike": "170.00",
"p_Last": "0.05",
"p_Change": "-0.28",
"p_Bid": "0.05",
"p_Ask": "0.07",
"p_Volume": "9310",
"p_Openinterest": "10219",
"p_colour": false
},
...
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Calendar Events
Calendar Events API endpoints provide essential data for tracking key financial events. These include earnings reports, dividends, economic events, initial public offerings (IPOs), and public offerings.
GET /v1/earnings
requires authentication
Get past, present, and upcoming company earnings data. We have newer version of this endpoint here: /v2/earnings.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/calendar/earnings'
params = {
'date': '2023-11-30',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/calendar/earnings';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'date' => '2023-11-30',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/calendar/earnings"
);
const params = {
"date": "2023-11-30",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/calendar/earnings?date=2023-11-30" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"date": "2023-11-30",
"processedTime": "2023-12-01T00:37:56.343683Z"
},
"body": [
{
"lastYearReportDate": "11/30/2022",
"lastYearEPS": "$2.09",
"time": "time-pre-market",
"symbol": "RY",
"name": "Royal Bank Of Canada",
"marketCap": "$120,555,640,740",
"fiscalQuarterEnding": "Oct/2023",
"epsForecast": "$1.90",
"numberOfEstimates": "3"
},
{
"lastYearReportDate": "12/01/2022",
"lastYearEPS": "$1.64",
"time": "time-pre-market",
"symbol": "TD",
"name": "Toronto Dominion Bank (The)",
"marketCap": "$111,276,475,000",
"fiscalQuarterEnding": "Oct/2023",
"epsForecast": "$1.37",
"numberOfEstimates": "4"
},
{
"lastYearReportDate": "11/21/2022",
"lastYearEPS": "$2.01",
"time": "time-after-hours",
"symbol": "DELL",
"name": "Dell Technologies Inc.",
"marketCap": "$53,555,274,381",
"fiscalQuarterEnding": "Oct/2023",
"epsForecast": "$1.23",
"numberOfEstimates": "5"
},
{
"lastYearReportDate": "12/01/2022",
"lastYearEPS": "$0.41",
"time": "time-after-hours",
"symbol": "MRVL",
"name": "Marvell Technology, Inc.",
"marketCap": "$47,954,424,000",
"fiscalQuarterEnding": "Oct/2023",
"epsForecast": "$0.24",
"numberOfEstimates": "13"
},
{
"lastYearReportDate": "12/01/2022",
"lastYearEPS": "$1.08",
"time": "time-pre-market",
"symbol": "CM",
"name": "Canadian Imperial Bank of Commerce",
"marketCap": "$35,676,950,230",
"fiscalQuarterEnding": "Oct/2023",
"epsForecast": "$1.13",
"numberOfEstimates": "4"
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/dividends
requires authentication
Get past, present, and upcoming dividends data. We have newer version of this endpoint here: /v2/dividends
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/calendar/dividends'
params = {
'date': '2023-11-30',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/calendar/dividends';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'date' => '2023-11-30',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/calendar/dividends"
);
const params = {
"date": "2023-11-30",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/calendar/dividends?date=2023-11-30" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"date": "2023-11-30",
"processedTime": "2023-12-01T00:53:49.609846Z"
},
"body": [
{
"companyName": "ACNB Corporation Common Stock",
"symbol": "ACNB",
"dividend_Ex_Date": "11/30/2023",
"payment_Date": "12/15/2023",
"record_Date": "12/01/2023",
"dividend_Rate": 0.3,
"indicated_Annual_Dividend": 1.12,
"announcement_Date": "10/17/2023"
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/economic_events
requires authentication
Get global economic events data.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/calendar/economic_events'
params = {
'date': '2023-11-30',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/calendar/economic_events';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'date' => '2023-11-30',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/calendar/economic_events"
);
const params = {
"date": "2023-11-30",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/calendar/economic_events?date=2023-11-30" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"date": "2023-11-30",
"processedTime": "2023-12-01T01:03:25.016842Z"
},
"body": [
{
"gmt": "24H",
"country": "Japan",
"eventName": "Construction Orders",
"actual": "4.2%",
"consensus": "-",
"previous": "-3.0%",
"description": "Construction Orders number checks with 50 representative construction companies in Japan as subjects, the survey uses mail questionnaires to collect the information. The survey data are used to tabulate: amount of orders received (separately for investors and construction type); completed work amount in a month; amount of unfinished construction at the end of the month; and remaining orders received in terms of the number of months. A higher than expected number should be taken as positive to the JPY, while a lower than expected number as negative."
},
{
"gmt": "24H",
"country": "Japan",
"eventName": "Household Confidence",
"actual": "36.1",
"consensus": "35.6",
"previous": "35.7",
"description": "The Japanese Household Confidence indicator is a measure of the mood of consumers. <br/>The index is based on data collected from a survey of around 5000 households.<br/>\r\nThe consumer confidence indicator is closely linked to consumer spending and correlated with personal income, purchasing power, employment and business conditions.<BR/><BR/>A higher than expected reading should be taken as positive/bullish for the JPY, while a lower than expected reading should be taken as negative/bearish for the JPY."
},
{
"gmt": "24H",
"country": "Japan",
"eventName": "Housing Starts",
"actual": "-6.3%",
"consensus": "-6.8%",
"previous": "-6.8%",
"description": "Housing starts measures the change in the annualized number of new residential buildings that began construction during the reported month. It is a leading indicator of strength in the housing sector.\r\n<BR/><BR/>A higher than expected reading should be taken as positive/bullish for the JPY, while a lower than expected reading should be taken as negative/bearish for the JPY."
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/ipo
requires authentication
Get the latest and upcoming IPO data. These companies are going public.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/calendar/ipo'
params = {
'date': '2023-11',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/calendar/ipo';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'date' => '2023-11',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/calendar/ipo"
);
const params = {
"date": "2023-11",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/calendar/ipo?date=2023-11" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"date": "2023-11",
"processedTime": "2023-12-01T01:12:14.365196Z"
},
"body": [
{
"dealID": "1273030-107900",
"proposedTickerSymbol": "CLBRU",
"companyName": "COLOMBIER ACQUISITION CORP. II",
"proposedExchange": "NYSE",
"proposedSharePrice": "10.00",
"sharesOffered": "15,000,000",
"pricedDate": "11/21/2023",
"dollarValueOfSharesOffered": "$150,000,000",
"dealStatus": "Priced"
},
{
"dealID": "1179767-107817",
"proposedTickerSymbol": "ELAB",
"companyName": "Elevai Labs Inc.",
"proposedExchange": "NASDAQ Capital",
"proposedSharePrice": "4.00",
"sharesOffered": "1,500,000",
"pricedDate": "11/21/2023",
"dollarValueOfSharesOffered": "$6,000,000",
"dealStatus": "Priced"
},
{
"dealID": "1266574-107274",
"proposedTickerSymbol": "RR",
"companyName": "RICHTECH ROBOTICS INC.",
"proposedExchange": "NASDAQ Capital",
"proposedSharePrice": "5.00",
"sharesOffered": "2,100,000",
"pricedDate": "11/17/2023",
"dollarValueOfSharesOffered": "$10,500,000",
"dealStatus": "Priced"
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/public_offerings
requires authentication
Get the past, current and upcoming secondary public offerings (SPO) data.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/calendar/public_offerings'
params = {
'date': '2023-11',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/calendar/public_offerings';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'date' => '2023-11',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/calendar/public_offerings"
);
const params = {
"date": "2023-11",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/calendar/public_offerings?date=2023-11" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"date": "2023-11",
"processedTime": "2023-12-01T01:28:23.124844Z"
},
"body": {
"priced": [
{
"dealID": "1003944-107155",
"proposedTickerSymbol": "SNES",
"companyName": "SenesTech, Inc.",
"proposedExchange": "NASDAQ Capital",
"proposedSharePrice": "1.30",
"sharesOffered": "450,306",
"pricedDate": "11/29/2023",
"dollarValueOfSharesOffered": "$585,398",
"dealStatus": "Priced"
},
{
"dealID": "1178963-108161",
"proposedTickerSymbol": "THAR",
"companyName": "Tharimmune, Inc.",
"proposedExchange": "NASDAQ Capital",
"proposedSharePrice": "1.00",
"sharesOffered": "1,825,000",
"pricedDate": "11/29/2023",
"dollarValueOfSharesOffered": "$1,825,000",
"dealStatus": "Priced"
},
{ ... },
],
"upcoming": [],
"filed": [
{
"dealID": "1153880-108422",
"proposedTickerSymbol": "BWMN",
"companyName": "Bowman Consulting Group Ltd.",
"filedDate": "11/29/2023",
"dollarValueOfSharesOffered": "$100,000,000"
},
{
"dealID": "935042-108420",
"proposedTickerSymbol": "ISTR",
"companyName": "Investar Holding Corp",
"filedDate": "11/29/2023",
"dollarValueOfSharesOffered": "$150,000,000"
},
{ ... },
],
"withdrawn": [
{
"dealID": "1242194-107928",
"proposedTickerSymbol": "SGD",
"companyName": "Safe & Green Development Corp",
"proposedExchange": null,
"sharesOffered": "6,299,212",
"filedDate": "10/12/2023",
"dollarValueOfSharesOffered": "$8,000,000",
"withdrawDate": "11/16/2023"
},
{ ... }
]
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v2/earnings
requires authentication
Get past, present, and upcoming company earnings data.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v2/markets/calendar/earnings'
params = {
'days': '7',
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v2/markets/calendar/earnings';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'days' => '7',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v2/markets/calendar/earnings"
);
const params = {
"days": "7",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v2/markets/calendar/earnings?days=7&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"count": 8,
"total": 8,
"page": "1"
},
"body": [
{
"symbol": "AZO",
"symbolName": "Autozone",
"nextEarningsDate": "09/24/24",
"lastPrice": "3,042.74",
"priceChange": "+22.08",
"percentChange": "+0.73%",
"highPrice": "3,046.28",
"lowPrice": "3,013.05",
"volume": "100,430",
"tradeTime": "15:43 ET",
"timeCode": "Before Open",
"estimatedEarnings": "$53.59",
"lastReportedEarnings": "N/A",
"lastEarningsSurpriseAmount": "N/A",
"lastEarningsSurprisePercent": "N/A",
"symbolCode": "STK",
"symbolType": 1,
"hasOptions": "Yes"
},
{
"symbol": "THO",
"symbolName": "Thor Industries",
"nextEarningsDate": "09/24/24",
"lastPrice": "103.19",
"priceChange": "-0.32",
"percentChange": "-0.31%",
"highPrice": "104.85",
"lowPrice": "102.05",
"volume": "459,102",
"tradeTime": "15:42 ET",
"timeCode": "Before Open",
"estimatedEarnings": "$1.35",
"lastReportedEarnings": "N/A",
"lastEarningsSurpriseAmount": "N/A",
"lastEarningsSurprisePercent": "N/A",
"symbolCode": "STK",
"symbolType": 1,
"hasOptions": "Yes"
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v2/dividends
requires authentication
Get past, present, and upcoming dividends data.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v2/markets/calendar/dividends'
params = {
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v2/markets/calendar/dividends';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v2/markets/calendar/dividends"
);
const params = {
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v2/markets/calendar/dividends?page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"count": 56,
"total": 56,
"page": "1"
},
"body": [
{
"symbol": "ALCO",
"symbolName": "Alico Inc",
"lastPrice": "27.99",
"priceChange": "-0.01",
"amount": "$0.050",
"yield": "0.78%",
"exDivDate": "09/27/24",
"payableDate": "10/11/24",
"symbolType": 1
},
{
"symbol": "CIB",
"symbolName": "Bancolombia S.A. ADR",
"lastPrice": "31.97",
"priceChange": "-1.05",
"amount": "$0.846",
"yield": "9.90%",
"exDivDate": "09/27/24",
"payableDate": "10/11/24",
"symbolType": 1
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Technical Indicator
The Technical Indicator provides access to various indicators essential for market analysis. These include SMA (Simple Moving Average), RSI (Relative Strength Index), MACD (Moving Average Convergence Divergence), CCI (Commodity Channel Index), ADX (Average Directional Index), EMA (Exponential Moving Average), Stoch (Stochastic Oscillator), ADOSC (Accumulation/Distribution Oscillator), and AD (Accumulation/Distribution).
GET /v1/indicators/sma
requires authentication
This technical indicator returns the simple moving average (SMA).
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/indicators/sma'
params = {
'ticker': 'AAPL',
'interval': '5m',
'series_type': 'close',
'time_period': '50',
'limit': '50',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/indicators/sma';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL',
'interval' => '5m',
'series_type' => 'close',
'time_period' => '50',
'limit' => '50',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/indicators/sma"
);
const params = {
"ticker": "AAPL",
"interval": "5m",
"series_type": "close",
"time_period": "50",
"limit": "50",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/indicators/sma?ticker=AAPL&interval=5m&series_type=close&time_period=50&limit=50" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/indicators/rsi
requires authentication
This technical indicator returns the relative strength index (RSI).
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/indicators/rsi'
params = {
'ticker': 'AAPL',
'interval': '5m',
'series_type': 'close',
'time_period': '50',
'limit': '50',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/indicators/rsi';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL',
'interval' => '5m',
'series_type' => 'close',
'time_period' => '50',
'limit' => '50',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/indicators/rsi"
);
const params = {
"ticker": "AAPL",
"interval": "5m",
"series_type": "close",
"time_period": "50",
"limit": "50",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/indicators/rsi?ticker=AAPL&interval=5m&series_type=close&time_period=50&limit=50" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/indicators/macd
requires authentication
This technical indicator returns the moving average convergence/divergence (MACD).
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/indicators/macd'
params = {
'ticker': 'AAPL',
'interval': '5m',
'series_type': 'close',
'fast_period': '12',
'slow_period': '26',
'signal_period': '9',
'limit': '50',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/indicators/macd';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL',
'interval' => '5m',
'series_type' => 'close',
'fast_period' => '12',
'slow_period' => '26',
'signal_period' => '9',
'limit' => '50',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/indicators/macd"
);
const params = {
"ticker": "AAPL",
"interval": "5m",
"series_type": "close",
"fast_period": "12",
"slow_period": "26",
"signal_period": "9",
"limit": "50",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/indicators/macd?ticker=AAPL&interval=5m&series_type=close&fast_period=12&slow_period=26&signal_period=9&limit=50" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/indicators/cci
requires authentication
This technical indicator returns the commodity channel index (CCI).
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/indicators/cci'
params = {
'ticker': 'AAPL',
'interval': '5m',
'series_type': 'close',
'time_period': '50',
'limit': '50',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/indicators/cci';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL',
'interval' => '5m',
'series_type' => 'close',
'time_period' => '50',
'limit' => '50',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/indicators/cci"
);
const params = {
"ticker": "AAPL",
"interval": "5m",
"series_type": "close",
"time_period": "50",
"limit": "50",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/indicators/cci?ticker=AAPL&interval=5m&series_type=close&time_period=50&limit=50" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/indicators/adx
requires authentication
This technical indicator returns the average directional movement index (ADX).
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/indicators/adx'
params = {
'ticker': 'AAPL',
'interval': '5m',
'series_type': 'close',
'time_period': '50',
'limit': '50',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/indicators/adx';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL',
'interval' => '5m',
'series_type' => 'close',
'time_period' => '50',
'limit' => '50',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/indicators/adx"
);
const params = {
"ticker": "AAPL",
"interval": "5m",
"series_type": "close",
"time_period": "50",
"limit": "50",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/indicators/adx?ticker=AAPL&interval=5m&series_type=close&time_period=50&limit=50" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/indicators/ema
requires authentication
This technical indicator returns the average directional movement index (ADX).
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/indicators/ema'
params = {
'ticker': 'AAPL',
'interval': '5m',
'series_type': 'close',
'time_period': '50',
'limit': '50',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/indicators/ema';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL',
'interval' => '5m',
'series_type' => 'close',
'time_period' => '50',
'limit' => '50',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/indicators/ema"
);
const params = {
"ticker": "AAPL",
"interval": "5m",
"series_type": "close",
"time_period": "50",
"limit": "50",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/indicators/ema?ticker=AAPL&interval=5m&series_type=close&time_period=50&limit=50" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/indicators/stoch
requires authentication
This technical indicator returns stochastic (STOCH) data.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/indicators/stoch'
params = {
'ticker': 'AAPL',
'interval': '5m',
'fastK_Period': '5',
'slowK_Period': '3',
'slowD_Period': '3',
'slowK_MAType': '0',
'slowD_MAType': '0',
'limit': '50',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/indicators/stoch';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL',
'interval' => '5m',
'fastK_Period' => '5',
'slowK_Period' => '3',
'slowD_Period' => '3',
'slowK_MAType' => '0',
'slowD_MAType' => '0',
'limit' => '50',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/indicators/stoch"
);
const params = {
"ticker": "AAPL",
"interval": "5m",
"fastK_Period": "5",
"slowK_Period": "3",
"slowD_Period": "3",
"slowK_MAType": "0",
"slowD_MAType": "0",
"limit": "50",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/indicators/stoch?ticker=AAPL&interval=5m&fastK_Period=5&slowK_Period=3&slowD_Period=3&slowK_MAType=0&slowD_MAType=0&limit=50" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/indicators/adosc
requires authentication
This technical indicator returns the moving average convergence/divergence (MACD).
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/indicators/adosc'
params = {
'ticker': 'AAPL',
'interval': '5m',
'series_type': 'close',
'fast_period': '3',
'slow_period': '3',
'limit': '50',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/indicators/adosc';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL',
'interval' => '5m',
'series_type' => 'close',
'fast_period' => '3',
'slow_period' => '3',
'limit' => '50',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/indicators/adosc"
);
const params = {
"ticker": "AAPL",
"interval": "5m",
"series_type": "close",
"fast_period": "3",
"slow_period": "3",
"limit": "50",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/indicators/adosc?ticker=AAPL&interval=5m&series_type=close&fast_period=3&slow_period=3&limit=50" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/indicators/ad
requires authentication
This technical indicator returns the moving average convergence/divergence (MACD).
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/markets/indicators/ad'
params = {
'ticker': 'AAPL',
'interval': '5m',
'limit': '50',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/markets/indicators/ad';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ticker' => 'AAPL',
'interval' => '5m',
'limit' => '50',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/markets/indicators/ad"
);
const params = {
"ticker": "AAPL",
"interval": "5m",
"limit": "50",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/markets/indicators/ad?ticker=AAPL&interval=5m&limit=50" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Reddit Endpoints
The Reddit API provides endpoints for searching content, retrieving posts, accessing individual post details, and fetching user-specific data, enabling streamlined interaction with Reddit's platform features.
GET /v1/search
requires authentication
Search specific topics on Reddit and filter results based on posts, comments, users, and communities. This endpoint also allows you to sort the results based on relevant, hot, new, rising, and time frame.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/reddit/search'
params = {
'search': 'investing',
'subreddit': 'wallstreetbets',
'filter': 'posts',
'timeFilter': 'all',
'sortType': 'relevance',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/reddit/search';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'search' => 'investing',
'subreddit' => 'wallstreetbets',
'filter' => 'posts',
'timeFilter' => 'all',
'sortType' => 'relevance',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/reddit/search"
);
const params = {
"search": "investing",
"subreddit": "wallstreetbets",
"filter": "posts",
"timeFilter": "all",
"sortType": "relevance",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/reddit/search?search=investing&subreddit=wallstreetbets&filter=posts&timeFilter=all&sortType=relevance" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"total": 25
},
"body": [
{
"approved_at_utc": null,
"subreddit": "wallstreetbets",
"selftext": "",
"author_fullname": "t2_f7674uoa",
"saved": false,
"mod_reason_title": null,
"gilded": 0,
"clicked": false,
"title": "Burry has one play",
"link_flair_richtext": [
{
"e": "text",
"t": "Meme"
}
],
"subreddit_name_prefixed": "r/wallstreetbets",
"hidden": false,
"pwls": 7,
"link_flair_css_class": "meme",
"downs": 0,
"thumbnail_height": 140,
"top_awarded_type": null,
"hide_score": false,
"name": "t3_15tq51f",
"quarantine": false,
"link_flair_text_color": "light",
"upvote_ratio": 0.96,
"author_flair_background_color": null,
"ups": 2146,
"total_awards_received": 0,
"media_embed": [],
"thumbnail_width": 140,
"author_flair_template_id": null,
"is_original_content": false,
"user_reports": [],
"secure_media": null,
"is_reddit_media_domain": true,
"is_meta": false,
"category": null,
"secure_media_embed": [],
"link_flair_text": "Meme",
"can_mod_post": false,
"score": 2146,
"approved_by": null,
"is_created_from_ads_ui": false,
"author_premium": false,
"thumbnail": "https://a.thumbs.redditmedia.com/aRzqUDY1KGUN3_BrAPBEUWFDiaQYuR1wCRCsP6J5Yv0.jpg",
"edited": false,
"author_flair_css_class": null,
"author_flair_richtext": [],
"gildings": [],
"post_hint": "image",
"content_categories": null,
"is_self": false,
"subreddit_type": "public",
"created": 1692284657,
"link_flair_type": "richtext",
"wls": 7,
"removed_by_category": null,
"banned_by": null,
"author_flair_type": "text",
"domain": "i.redd.it",
"allow_live_comments": false,
"selftext_html": null,
"likes": null,
"suggested_sort": "confidence",
"banned_at_utc": null,
"url_overridden_by_dest": "https://i.redd.it/3enbey74roib1.jpg",
"view_count": null,
"archived": false,
"no_follow": false,
"is_crosspostable": false,
"pinned": false,
"over_18": false,
...
},
...
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/posts
requires authentication
Retrieve hot, new, and top Reddit posts from a given subreddit URL.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/reddit/posts'
params = {
'url': 'https://www.reddit.com/r/wallstreetbets',
'sortType': 'top',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/reddit/posts';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'url' => 'https://www.reddit.com/r/wallstreetbets',
'sortType' => 'top',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/reddit/posts"
);
const params = {
"url": "https://www.reddit.com/r/wallstreetbets",
"sortType": "top",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/reddit/posts?url=https%3A%2F%2Fwww.reddit.com%2Fr%2Fwallstreetbets&sortType=top" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"total": 25
},
"body": [
{
"approved_at_utc": null,
"subreddit": "wallstreetbets",
"selftext": "",
"author_fullname": "t2_f7674uoa",
"saved": false,
"mod_reason_title": null,
"gilded": 0,
"clicked": false,
"title": "Burry has one play",
"link_flair_richtext": [
{
"e": "text",
"t": "Meme"
}
],
"subreddit_name_prefixed": "r/wallstreetbets",
"hidden": false,
"pwls": 7,
"link_flair_css_class": "meme",
"downs": 0,
"thumbnail_height": 140,
"top_awarded_type": null,
"hide_score": false,
"name": "t3_15tq51f",
"quarantine": false,
"link_flair_text_color": "light",
"upvote_ratio": 0.96,
"author_flair_background_color": null,
"ups": 2146,
"total_awards_received": 0,
"media_embed": [],
"thumbnail_width": 140,
"author_flair_template_id": null,
"is_original_content": false,
"user_reports": [],
"secure_media": null,
"is_reddit_media_domain": true,
"is_meta": false,
"category": null,
"secure_media_embed": [],
"link_flair_text": "Meme",
"can_mod_post": false,
"score": 2146,
"approved_by": null,
"is_created_from_ads_ui": false,
"author_premium": false,
"thumbnail": "https://a.thumbs.redditmedia.com/aRzqUDY1KGUN3_BrAPBEUWFDiaQYuR1wCRCsP6J5Yv0.jpg",
"edited": false,
"author_flair_css_class": null,
"author_flair_richtext": [],
"gildings": [],
"post_hint": "image",
"content_categories": null,
"is_self": false,
"subreddit_type": "public",
"created": 1692284657,
"link_flair_type": "richtext",
"wls": 7,
"removed_by_category": null,
"banned_by": null,
"author_flair_type": "text",
"domain": "i.redd.it",
"allow_live_comments": false,
"selftext_html": null,
"likes": null,
"suggested_sort": "confidence",
"banned_at_utc": null,
"url_overridden_by_dest": "https://i.redd.it/3enbey74roib1.jpg",
"view_count": null,
"archived": false,
"no_follow": false,
"is_crosspostable": false,
"pinned": false,
"over_18": false,
...
},
...
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/post
requires authentication
Get post content such as thread content, upvotes, comments, etc...
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/reddit/post'
params = {
'url': 'https://www.reddit.com/r/wallstreetbets/comments/p0esdp/do_hedge_funds_beat_the_market_i_analyzed_the',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/reddit/post';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'url' => 'https://www.reddit.com/r/wallstreetbets/comments/p0esdp/do_hedge_funds_beat_the_market_i_analyzed_the',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/reddit/post"
);
const params = {
"url": "https://www.reddit.com/r/wallstreetbets/comments/p0esdp/do_hedge_funds_beat_the_market_i_analyzed_the",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/reddit/post?url=https%3A%2F%2Fwww.reddit.com%2Fr%2Fwallstreetbets%2Fcomments%2Fp0esdp%2Fdo_hedge_funds_beat_the_market_i_analyzed_the" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"total": 25
},
"body": [
{
"approved_at_utc": null,
"subreddit": "wallstreetbets",
"selftext": "",
"author_fullname": "t2_f7674uoa",
"saved": false,
"mod_reason_title": null,
"gilded": 0,
"clicked": false,
"title": "Burry has one play",
"link_flair_richtext": [
{
"e": "text",
"t": "Meme"
}
],
"subreddit_name_prefixed": "r/wallstreetbets",
"hidden": false,
"pwls": 7,
"link_flair_css_class": "meme",
"downs": 0,
"thumbnail_height": 140,
"top_awarded_type": null,
"hide_score": false,
"name": "t3_15tq51f",
"quarantine": false,
"link_flair_text_color": "light",
"upvote_ratio": 0.96,
"author_flair_background_color": null,
"ups": 2146,
"total_awards_received": 0,
"media_embed": [],
"thumbnail_width": 140,
"author_flair_template_id": null,
"is_original_content": false,
"user_reports": [],
"secure_media": null,
"is_reddit_media_domain": true,
"is_meta": false,
"category": null,
"secure_media_embed": [],
"link_flair_text": "Meme",
"can_mod_post": false,
"score": 2146,
"approved_by": null,
"is_created_from_ads_ui": false,
"author_premium": false,
"thumbnail": "https://a.thumbs.redditmedia.com/aRzqUDY1KGUN3_BrAPBEUWFDiaQYuR1wCRCsP6J5Yv0.jpg",
"edited": false,
"author_flair_css_class": null,
"author_flair_richtext": [],
"gildings": [],
"post_hint": "image",
"content_categories": null,
"is_self": false,
"subreddit_type": "public",
"created": 1692284657,
"link_flair_type": "richtext",
"wls": 7,
"removed_by_category": null,
"banned_by": null,
"author_flair_type": "text",
"domain": "i.redd.it",
"allow_live_comments": false,
"selftext_html": null,
"likes": null,
"suggested_sort": "confidence",
"banned_at_utc": null,
"url_overridden_by_dest": "https://i.redd.it/3enbey74roib1.jpg",
"view_count": null,
"archived": false,
"no_follow": false,
"is_crosspostable": false,
"pinned": false,
"over_18": false,
...
},
...
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/user-data
requires authentication
Get posts and comments from a given user. This endpoint also allows you to sort the results based on hot, top, and new.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/reddit/user-data'
params = {
'username': 'Real_Grapefruit_5570',
'filter': 'posts',
'sortType': 'new',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/reddit/user-data';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'username' => 'Real_Grapefruit_5570',
'filter' => 'posts',
'sortType' => 'new',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/reddit/user-data"
);
const params = {
"username": "Real_Grapefruit_5570",
"filter": "posts",
"sortType": "new",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/reddit/user-data?username=Real_Grapefruit_5570&filter=posts&sortType=new" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"username": "Real_Grapefruit_5570",
"filter": "comments",
"sortType": "new"
},
"body": [
{
"subreddit_id": "t5_366bm",
"approved_at_utc": null,
"author_is_blocked": false,
"comment_type": null,
"link_title": "help with using APIs in google sheets ",
"mod_reason_by": null,
"banned_by": null,
"ups": 4,
"num_reports": null,
"author_flair_type": "text",
"total_awards_received": 0,
"subreddit": "googlesheets",
"link_author": "Synthetic2802",
"likes": true,
"replies": "",
"user_reports": [],
"saved": false,
"id": "l2r9qy1",
"banned_at_utc": null,
"mod_reason_title": null,
"gilded": 0,
"archived": false,
"collapsed_reason_code": null,
"no_follow": false,
"author": "Real_Grapefruit_5570",
"num_comments": 1,
"can_mod_post": false,
"send_replies": true,
"parent_id": "t3_1cft4pg",
"score": 4,
"author_fullname": "t2_cx7hwzvs",
"over_18": false,
"report_reasons": null,
"removal_reason": null,
"approved_by": null,
"controversiality": 0,
"body": "I will recommend you use an REST API. I know apicalls.io provides dividends, eps, earnings, etc. You also might want to checkout polygon and tiingo",
"edited": false,
"top_awarded_type": null,
"downs": 0,
"author_flair_css_class": null,
"is_submitter": false,
"collapsed": false,
"author_flair_richtext": [],
"author_patreon_flair": false,
"body_html": "<div class=\"md\"><p>I will recommend you use an REST API. I know apicalls.io provides dividends, eps, earnings, etc. You also might want to checkout polygon and tiingo</p>\n</div>",
"gildings": [],
"collapsed_reason": null,
"distinguished": null,
"associated_award": null,
"stickied": false,
"author_premium": false,
"can_gild": false,
"link_id": "t3_1cft4pg",
"unrepliable_reason": null,
"author_flair_text_color": null,
"score_hidden": false,
"permalink": "/r/googlesheets/comments/1cft4pg/help_with_using_apis_in_google_sheets/l2r9qy1/",
"subreddit_type": "public",
"link_permalink": "https://www.reddit.com/r/googlesheets/comments/1cft4pg/help_with_using_apis_in_google_sheets/",
"name": "t1_l2r9qy1",
"created": 1714951748,
"subreddit_name_prefixed": "r/googlesheets",
"author_flair_text": null,
"treatment_tags": [],
"rte_mode": "richtext",
"created_utc": 1714951748,
"awarders": [],
"all_awardings": [],
"locked": false,
"author_flair_background_color": null,
"collapsed_because_crowd_control": null,
"mod_reports": [],
"quarantine": false,
"mod_note": null,
"link_url": "https://www.reddit.com/r/googlesheets/comments/1cft4pg/help_with_using_apis_in_google_sheets/",
"author_flair_template_id": null
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Real Estate Endpoints
The real estate API offers comprehensive data for various properties, including sales, rentals, and general property information. Users can access details related to property availability, pricing, locations, and specific features through the API. Whether users are looking to buy, rent, or simply gather information about properties, the API provides essential data to facilitate informed decision-making in the real estate market.
GET /v1/sale
requires authentication
Get real estate homes, apartments, condo and more for sale.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/real-estate/sale'
params = {
'city': 'San Francisco',
'state': 'CA',
'price_l': '100000',
'price_h': '5000000',
'beds': '3',
'baths': '2',
'page': '1',
'status': 'any',
'type': 'single-family-home',
'sort': 'relevant',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/real-estate/sale';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'city' => 'San Francisco',
'state' => 'CA',
'price_l' => '100000',
'price_h' => '5000000',
'beds' => '3',
'baths' => '2',
'page' => '1',
'status' => 'any',
'type' => 'single-family-home',
'sort' => 'relevant',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/real-estate/sale"
);
const params = {
"city": "San Francisco",
"state": "CA",
"price_l": "100000",
"price_h": "5000000",
"beds": "3",
"baths": "2",
"page": "1",
"status": "any",
"type": "single-family-home",
"sort": "relevant",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/real-estate/sale?city=San+Francisco&state=CA&price_l=100000&price_h=5000000&beds=3&baths=2&page=1&status=any&type=single-family-home&sort=relevant" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"page": 3,
"total": 1999
},
"body": [
{
"property_id": "2811814675",
"list_price": 1395000,
"search_promotions": null,
"primary_photo": {
"href": "https://ap.rdcpix.com/34e315c4ab4bd498dab830cc8f3a52afl-b2127093877s.jpg"
},
"rent_to_own": null,
"listing_id": "2959912309",
"matterport": true,
"virtual_tours": null,
"status": "for_sale",
"products": {
"products": [
"core.agent",
"core.broker",
"co_broke"
],
"brand_name": "essentials"
},
"source": {
"id": "SFCA",
"type": "mls",
"spec_id": null,
"plan_id": null,
"agents": [
{
"office_name": "Sotheby's International Realty"
}
]
},
"lead_attributes": {
"show_contact_an_agent": true,
"opcity_lead_attributes": {
"cashback_enabled": false,
"flip_the_market_enabled": false
},
"lead_type": "co_broke",
"ready_connect_mortgage": {
"show_contact_a_lender": true,
"show_veterans_united": true
}
},
"community": null,
"permalink": "655-41st-Ave_San-Francisco_CA_94121_M28118-14675",
"price_reduced_amount": null,
"description": {
"name": null,
"beds": 2,
"baths_consolidated": "1",
"sqft": 1530,
"lot_sqft": 2408,
"baths_max": null,
"baths_min": null,
"beds_min": null,
"beds_max": null,
"sqft_min": null,
"sqft_max": null,
"type": "single_family",
"sub_type": null,
"sold_price": null,
"sold_date": null
},
"location": {
"address": {
"line": "655 41st Ave",
"postal_code": "94121",
"state": "California",
"state_code": "CA",
"city": "San Francisco",
"coordinate": {
"lat": 37.776332,
"lon": -122.501944
}
},
"county": {
"name": "San Francisco",
"fips_code": "06075"
}
},
"open_houses": [
{
"start_date": "2023-09-24T14:00:00",
"end_date": "2023-09-24T16:00:00"
},
{
"start_date": "2023-09-26T11:00:00",
"end_date": "2023-09-26T13:00:00"
},
{
"start_date": "2023-09-27T18:00:00",
"end_date": "2023-09-27T19:00:00"
},
{
"start_date": "2023-09-30T14:00:00",
"end_date": "2023-09-30T16:00:00"
},
{
"start_date": "2023-10-01T14:00:00",
"end_date": "2023-10-01T16:00:00"
}
],
"branding": [
{
"type": "Office",
"name": "Sotheby's International Realty - San Francisco Brokerage – Eureka Valley",
"photo": null
}
],
"flags": {
"is_coming_soon": null,
"is_new_listing": true,
"is_price_reduced": null,
"is_foreclosure": null,
"is_new_construction": null,
"is_pending": null,
"is_contingent": null
},
"list_date": "2023-09-22T18:20:18Z",
"photos": [
{
"href": "https://ap.rdcpix.com/34e315c4ab4bd498dab830cc8f3a52afl-b2127093877s.jpg"
},
{
"href": "https://ap.rdcpix.com/34e315c4ab4bd498dab830cc8f3a52afl-b2118379801s.jpg"
}
]
},
...
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/rent
requires authentication
Get real estate homes, apartments, condo and more for rent.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/real-estate/rent'
params = {
'city': 'San Francisco',
'state': 'CA',
'beds': '3',
'baths': '2',
'page': '1',
'status': 'any',
'type': 'single-family-home',
'sort': 'relevant',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/real-estate/rent';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'city' => 'San Francisco',
'state' => 'CA',
'beds' => '3',
'baths' => '2',
'page' => '1',
'status' => 'any',
'type' => 'single-family-home',
'sort' => 'relevant',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/real-estate/rent"
);
const params = {
"city": "San Francisco",
"state": "CA",
"beds": "3",
"baths": "2",
"page": "1",
"status": "any",
"type": "single-family-home",
"sort": "relevant",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/real-estate/rent?city=San+Francisco&state=CA&beds=3&baths=2&page=1&status=any&type=single-family-home&sort=relevant" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"page": 3,
"total": 1785
},
"body": [
{
"property_id": "2122107984",
"listing_id": "2951090168",
"list_price": null,
"list_price_max": 3695,
"list_price_min": 3695,
"permalink": "355-Fulton-St_San-Francisco_CA_94102_M21221-07984",
"price_reduced_amount": null,
"matterport": false,
"has_specials": false,
"virtual_tours": null,
"status": "for_rent",
"list_date": "2022-12-22T19:15:22Z",
"lead_attributes": {
"lead_type": "rental_go_direct",
"is_premium_ldp": null
},
"pet_policy": {
"cats": true,
"dogs": true,
"dogs_small": false,
"dogs_large": false
},
"other_listings": {
"rdc": [
{
"listing_id": "2951090168",
"status": "for_rent"
},
{
"listing_id": "2925113393",
"status": "off_market"
},
{
"listing_id": "610625012",
"status": "off_market"
},
{...}
]
},
"flags": {
"is_pending": null,
"is_new_listing": false
},
"photos": [
{
"href": "https://ar.rdcpix.com/29e72d994e89c3678eccaaca5177eb7ec-f4117143636s.jpg"
},
{
"href": "https://ar.rdcpix.com/29e72d994e89c3678eccaaca5177eb7ec-f1531969781s.jpg"
}
],
"primary_photo": {
"href": "https://ar.rdcpix.com/29e72d994e89c3678eccaaca5177eb7ec-f4117143636s.jpg"
},
"advertisers": [
{
"office": {
"name": "Veritas Investments, Inc.",
"phones": [
{
"number": "4157548732",
"type": "office",
"primary": false,
"trackable": null,
"ext": null
},
{
"number": "4157548732",
"type": "primary",
"primary": false,
"trackable": null,
"ext": null
},
{
"number": "8888433510",
"type": "primary",
"primary": false,
"trackable": true,
"ext": null
}
]
},
"phones": null,
"rental_management": null
},
{
"office": {
"name": "355 Fulton St",
"phones": [
{
"number": "4157548732",
"type": "office",
"primary": false,
"trackable": null,
"ext": null
},
{
"number": "8888433510",
"type": "primary",
"primary": false,
"trackable": true,
"ext": null
}
]
},
"phones": null,
"rental_management": null
}
],
"location": {
"address": {
"line": "355 Fulton St",
"city": "San Francisco",
"coordinate": {
"lat": 37.778555,
"lon": -122.42261
},
"country": "USA",
"state_code": "CA",
"postal_code": "94102"
},
"county": {
"name": "San Francisco",
"fips_code": "06075"
}
},
"description": {
"beds": null,
"beds_max": 2,
"beds_min": 0,
"baths_min": 1,
"baths_max": 1,
"baths_consolidated": null,
"garage": null,
"garage_min": null,
"garage_max": null,
"sqft": null,
"sqft_max": 615,
"sqft_min": 403,
"name": "355 Fulton St",
"sub_type": null,
"type": "apartment",
"year_built": null
},
"units": [
{
"availability": null,
"description": {
"baths_consolidated": null,
"baths": 1,
"beds": 0,
"sqft": 405
},
"list_price": null
},
{
"availability": null,
"description": {
"baths_consolidated": null,
"baths": 1,
"beds": 1,
"sqft": 403
},
"list_price": null
},
{
"availability": null,
"description": {
"baths_consolidated": null,
"baths": 1,
"beds": 1,
"sqft": 403
},
"list_price": null
},
{
"availability": null,
"description": {
"baths_consolidated": null,
"baths": 1,
"beds": 0,
"sqft": 405
},
"list_price": null
},
{
"availability": {
"date": "2023-07-13"
},
"description": {
"baths_consolidated": null,
"baths": 1,
"beds": 2,
"sqft": 615
},
"list_price": 3695
}
],
"branding": [
{
"type": "Office",
"photo": null,
"name": null
}
],
"source": {
"id": "APTL",
"community_id": 3598446,
"type": "community",
"feed_type": "Syndicator Community"
},
"details": [
{
"category": "Community Features",
"text": [
"Elevator",
"On-site laundry",
"Pool",
"Garage",
"Parking",
"Pet friendly",
"E-payments",
"Internet access",
"Online portal",
"Dogs Allowed",
"Cats Allowed"
],
"parent_category": "Community"
},
{
"category": "Unit Features",
"text": [
"Dishwasher",
"Hardwood floors",
"In unit laundry",
"Range",
"Refrigerator",
"Bathtub",
"Cable included",
"Carpet",
"Oven",
"Stainless steel",
"Walk in closets"
],
"parent_category": "Unit"
}
],
"products": {
"products": [
"rentals_cost_per_lead_hybrid",
"co_broke"
],
"brand_name": "basic_opt_in"
}
},
{...}
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/property
requires authentication
Get a property detail such as price history, address, description of the property and more.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/real-estate/property'
params = {
'property_id': '1883015994',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/real-estate/property';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'property_id' => '1883015994',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/real-estate/property"
);
const params = {
"property_id": "1883015994",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/real-estate/property?property_id=1883015994" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"property_id": "2811814675"
},
"body": {
"buyers": null,
"community": null,
"days_on_market": null,
"move_in_date": null,
"description": {
"baths": 1,
"baths_3qtr": null,
"baths_full": 1,
"baths_full_calc": 1,
"baths_half": null,
"baths_max": null,
"baths_min": null,
"baths_partial_calc": null,
"baths_total": null,
"baths_consolidated": "1",
"beds": 2,
"beds_max": null,
"beds_min": null,
"construction": null,
"cooling": null,
"exterior": null,
"fireplace": null,
"garage": null,
"garage_max": null,
"garage_min": null,
"garage_type": null,
"heating": null,
"logo": null,
"lot_sqft": 2408,
"name": null,
"pool": null,
"roofing": null,
"rooms": null,
"sqft": 1530,
"sqft_max": null,
"sqft_min": null,
"stories": null,
"styles": [
"spanish_eclectic"
],
"sub_type": null,
"text": "Beautiful light-filled Mediterranean Revival home in pristine condition with an excellent floor plan, upgraded finishes, ocean views, large rooms, huge garage with significant expansion potential, and peaceful and private garden backyard with patio. This lovingly maintained home with its significant improvements features hardwood floors throughout, sunny east facing formal living room with gas fireplace, large formal dining room, sunny south-facing kitchen, with access to bright airy porch and stairs to tradesman entrance. The hallway provides access to the updated split bathroom, two generous west facing bedrooms and large sunroom with closet. Enjoy gorgeous ocean views from the bedrooms and sunroom! Interior stairs descend to the huge 2-carp lus garage with significant expansion potential, updated systems, extra storage, laundry, and access to the manicured backyard. Situated in the serene and vibrant Richmond District, known for excellent schools, this home is just blocks away from neighborhood shops, playgrounds and restaurants, Golden Gate Park, Land's End, Lincoln Park Golf Course, the Legion of Honor, and Ocean Beach.",
"type": "single_family",
"units": null,
"year_built": 1924,
"year_renovated": null,
"zoning": null
},
"details": [
{
"category": "Bedrooms",
"parent_category": "Interior",
"text": [
"Bedrooms: 2"
]
},
{
"category": "Other Rooms",
"parent_category": "Interior",
"text": [
"Total Rooms: 6"
]
},
{
"category": "Bathrooms",
"parent_category": "Interior",
"text": [
"Total Bathrooms: 1",
"Full Bathrooms: 1"
]
},
{
"category": "Kitchen and Dining",
"parent_category": "Interior",
"text": [
"Quartz Counter",
"Dining Room Features: Formal Room"
]
},
{...}
],
"flags": {
"is_coming_soon": null,
"is_contingent": null,
"is_deal_available": null,
"is_for_rent": null,
"is_foreclosure": null,
"is_garage_present": true,
"is_new_construction": null,
"is_pending": null,
"is_price_excludes_land": null,
"is_senior_community": null,
"is_short_sale": null,
"is_subdivision": null,
"is_price_reduced": null,
"is_new_listing": true
},
"floorplans": {
"floorplan_interactive": []
},
"href": "https://www.realtor.com/realestateandhomes-detail/655-41st-Ave_San-Francisco_CA_94121_M28118-14675",
"last_sold_date": null,
"last_sold_price": null,
"list_date": "2023-09-22T18:20:18Z",
"list_price": 1395000,
"last_price_change_amount": null,
"listing_id": "2959912309",
"local": {
"flood": {
"flood_factor_severity": "minimal",
"flood_trend": "This property’s flood risk is not changing."
},
"wildfire": {
"fire_factor_severity": "Moderate",
"fire_trend": "This property’s wildfire risk is increasing."
},
"noise": {
"score": 74,
"noise_categories": [
{
"text": "Low",
"type": "airport"
},
{
"text": "Medium",
"type": "traffic"
},
{
"text": "Medium",
"type": "local"
},
{
"text": "Medium",
"type": "score"
}
]
}
},
"location": {
"street_view_url": "https://maps.googleapis.com/maps/api/streetview?channel=rdc-streetview&client=gme-movesalesinc&location=655%2041st%20Ave%2C%20San%20Francisco%2C%20CA%2094121&size=736x420&source=outdoor&signature=ErLtmXVR1vcQFb9YnOBrANBAHJc=",
"street_view_metadata_url": "https://maps.googleapis.com/maps/api/streetview/metadata?channel=rdc-streetview&client=gme-movesalesinc&location=655%2041st%20Ave%2C%20San%20Francisco%2C%20CA%2094121&size=640x480&source=outdoor&signature=hliBZbjYbmiFqSOh4pb3vCjYxw4=",
"address": {
"city": "San Francisco",
"coordinate": {
"lat": 37.776332,
"lon": -122.501944
},
"country": "USA",
"line": "655 41st Ave",
"postal_code": "94121",
"state": "California",
"state_code": "CA",
"street_direction": null,
"street_name": "41st",
"street_number": "655",
"street_post_direction": null,
"street_suffix": "Ave",
"unit": null,
"validation_code": "121"
},
"county": {
"fips_code": "06075",
"name": "San Francisco",
"state_code": "CA"
},
"neighborhoods": [
{
"city": "San Francisco",
"id": "532c63d7-17d5-5034-9dc8-4b10e57e51b7",
"level": "neighborhood",
"name": "Outer Richmond",
"geo_type": "neighborhood",
"state_code": "CA",
"slug_id": "Outer-Richmond_San-Francisco_CA",
"geo_statistics": {
"housing_market": {
"median_listing_price": 1620000
}
}
},
{
"city": "San Francisco",
"id": "9aba2392-d304-5519-9a60-29614f7d70a2",
"level": "macro_neighborhood",
"name": "Northwest San Francisco",
"geo_type": "neighborhood",
"state_code": "CA",
"slug_id": "Northwest-San-Francisco_San-Francisco_CA",
"geo_statistics": {
"housing_market": {
"median_listing_price": 1795000
}
}
}
],
"search_areas": [
{
"city": "san francisco",
"state_code": "ca"
}
],
"city": {
"county_needed_for_uniq": false,
"slug_id": "San-Francisco_CA"
},
"postal_code": {
"geo_statistics": {
"housing_market": {
"hot_market_badge": "Other"
}
}
}
},
"matterport": {
"property_id": "2811814675",
"videos": [
{
"href": "https://my.matterport.com/show/?m=RMgpenYTkdR&brand=0"
}
]
},
"virtual_tours": null,
"home_tours": {
"virtual_tours": [
{
"category": "3d",
"href": "https://my.matterport.com/show/?m=RMgpenYTkdR&brand=0",
"type": "matterport"
}
]
},
"open_houses": [
{
"start_date": "2023-09-24T14:00:00",
"end_date": "2023-09-24T16:00:00",
"description": null,
"time_zone": "PST",
"dst": true
},
{...}
],
"permalink": "655-41st-Ave_San-Francisco_CA_94121_M28118-14675",
"photos": [
"http://ap.rdcpix.com/34e315c4ab4bd498dab830cc8f3a52afl-b2127093877s-w1024_h768.jpg",
"http://ap.rdcpix.com/34e315c4ab4bd498dab830cc8f3a52afl-b2118379801s-w1024_h768.jpg",
"http://ap.rdcpix.com/34e315c4ab4bd498dab830cc8f3a52afl-b125423275s-w1024_h768.jpg",
...
],
"price_per_sqft": 912,
"primary_photo": {
"href": "http://ap.rdcpix.com/34e315c4ab4bd498dab830cc8f3a52afl-b2127093877s.jpg"
},
"hoa": {
"fee": 0
},
"property_history": [
{
"date": "2023-09-22",
"event_name": "Listed",
"price": 1395000,
"price_sqft": 911.7647058823529,
"source_listing_id": "423911645",
"source_name": "SanFrancisco",
"listing": null
},
{
"date": "2012-09-18",
"event_name": "Sold",
"price": 747000,
"price_sqft": 488.2352941176471,
"source_listing_id": "400145",
"source_name": "SanFrancisco",
"listing": null
},
{...}
],
"property_id": "2811814675",
"provider_url": {
"href": "https://www.sothebysrealty.com/id/t5xgyy",
"level": "listing",
"type": "detail_url"
},
"status": "for_sale",
"tags": [
"central_heat",
"hardwood_floors",
"laundry_room",
"ocean_view",
"view",
"garage_1_or_more",
"private_backyard",
"floor_plan",
"playground",
"golf_course",
"beach",
"shopping"
],
"tax_history": [
{
"assessment": {
"building": 254943,
"land": 594872,
"total": 849815
},
"market": null,
"tax": 10679,
"year": 2021
},
{...}
]
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Football (Soccer) Endpoints
The Football API provides extensive endpoints covering live and upcoming match details, tournament information, and country-specific data. Users can access match summaries, predictions, and in-depth team statistics such as defensive and offensive performance, goals scored, and overall team summaries. Additionally, detailed player statistics including defensive prowess, offensive capabilities, passing accuracy, and goal-scoring records are available.
General
The General endpoints in the Football API cover a range of functionalities essential for accessing tournament details, country-specific information, and general match statistics.
GET /v1/countries
requires authentication
Get all countries name and IDs to use with other endpoints.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/football/countries'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/football/countries';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/football/countries"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/football/countries" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"total": 142
},
"body": [
{
"CountryId": 3,
"Name": "Albania"
},
{
"CountryId": 4,
"Name": "Algeria"
},
{
"CountryId": 7,
"Name": "Angola"
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/tournaments
requires authentication
Get all regions and tournaments data to use with other endpoints.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/football/tournaments'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/football/tournaments';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/football/tournaments"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/football/tournaments" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": [
{
"regionID": 248,
"name": "Africa",
"tournaments": [
{
"tournamentID": 290,
"name": "CAF Champions League"
},
{
"tournamentID": 574,
"name": "CAF Confederations Cup"
},
{
"tournamentID": 573,
"name": "CAF Super Cup"
},
{
"tournamentID": 505,
"name": "CECAFA Senior Challenge Cup"
}
]
},
{
"regionID": 3,
"name": "Albania",
"tournaments": [
{
"tournamentID": 182,
"name": "Kategoria Superiore"
},
{
"tournamentID": 451,
"name": "Kategoria Superiore qualification"
},
{
"tournamentID": 618,
"name": "Kupa e Shqipërisë"
}
]
},
{
"regionID": 4,
"name": "Algeria",
"tournaments": [
{
"tournamentID": 281,
"name": "Ligue Professionnelle 1"
}
]
},
{
"regionID": 6,
"name": "Andorra",
"tournaments": [
{
"tournamentID": 619,
"name": "Andorran Cup"
},
{
"tournamentID": 142,
"name": "Primera Divisio"
},
{
"tournamentID": 526,
"name": "Primera Divisio Qualification"
}
]
},
{
"regionID": 11,
"name": "Argentina",
"tournaments": [
{
"tournamentID": 68,
"name": "Liga Profesional"
},
{
"tournamentID": 317,
"name": "Primera B Nacional"
},
{
"tournamentID": 697,
"name": "Copa de la Superliga"
},
{
"tournamentID": 504,
"name": "Cup"
},
{
"tournamentID": 541,
"name": "Super Cup"
},
{
"tournamentID": 605,
"name": "Argentina 4"
},
{
"tournamentID": 463,
"name": "Primera B Metropolitana"
}
]
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/matches-live
requires authentication
Get live football matches from tournaments around the world.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/football/matches-live'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/football/matches-live';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/football/matches-live"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/football/matches-live" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"createdAt": "2024-05-24T15:44:35Z"
},
"body": [
{
"tournamentId": 295,
"stageId": 22212,
"stageName": "Pro League",
"regionId": 231,
"tournamentName": "Pro League",
"seasonName": "2023/2024",
"seasonId": 9696,
"stageSortOrder": 1,
"sex": 1,
"tournamentSortOrder": 0,
"regionCode": "ae",
"regionName": "U.A.E.",
"isOpta": false,
"navigationDisplayMode": 0,
"matches": [
{
"stageId": 22212,
"id": 1737534,
"status": "live",
"startTime": "2024-05-24T15:15:00",
"homeTeamId": 5765,
"homeTeamName": "Ajman",
"homeYellowCards": 1,
"homeRedCards": 0,
"awayTeamId": 5141,
"awayTeamName": "Sharjah Cultural Club",
"awayYellowCards": 0,
"awayRedCards": 0,
"hasIncidentsSummary": true,
"hasPreview": false,
"scoreChangedAt": "2024-05-24 16:40:22Z",
"elapsed": "66'",
"lastScorer": 1,
"isTopMatch": false,
"homeTeamCountryCode": "ae",
"awayTeamCountryCode": "ae",
"commentCount": 0,
"isLineupConfirmed": true,
"isStreamAvailable": false,
"matchIsOpta": false,
"homeTeamCountryName": "U.A.E.",
"awayTeamCountryName": "U.A.E.",
"startTimeUtc": "2024-05-24T14:15:00Z",
"homeScore": 1,
"awayScore": 1,
"incidents": [
{
"minute": "1",
"type": 1,
"subType": 1,
"playerName": "Isam Faiz",
"playerId": 375470,
"participatingPlayerName": null,
"participatingPlayerId": 0,
"runningScore": null,
"field": 0,
"period": 0
},
{
"minute": "2",
"type": 1,
"subType": 1,
"playerName": "Majid Rashid",
"playerId": 455398,
"participatingPlayerName": null,
"participatingPlayerId": 0,
"runningScore": null,
"field": 1,
"period": 0
}
],
"bets": null,
"aggregateWinnerField": null,
"winnerField": null,
"period": 3,
"extraResultField": null,
"homeExtratimeScore": null,
"awayExtratimeScore": null,
"homePenaltyScore": null,
"awayPenaltyScore": null,
"startedAtUtc": "2024-05-24T14:16:01Z",
"firstHalfEndedAtUtc": "2024-05-24T15:05:57Z",
"secondHalfStartedAtUtc": "2024-05-24T15:23:59Z"
},
{
"stageId": 22212,
"id": 1737544,
"status": "live",
"startTime": "2024-05-24T15:15:00",
"homeTeamId": 5130,
"homeTeamName": "Hatta",
"homeYellowCards": 0,
"homeRedCards": 0,
"awayTeamId": 5128,
"awayTeamName": "Al-Jazira",
"awayYellowCards": 0,
"awayRedCards": 0,
"hasIncidentsSummary": true,
"hasPreview": false,
"scoreChangedAt": "2024-05-24 15:39:55Z",
"elapsed": "65'",
"lastScorer": 0,
"isTopMatch": false,
"homeTeamCountryCode": "ae",
"awayTeamCountryCode": "ae",
"commentCount": 0,
"isLineupConfirmed": true,
"isStreamAvailable": false,
"matchIsOpta": false,
"homeTeamCountryName": "U.A.E.",
"awayTeamCountryName": "U.A.E.",
"startTimeUtc": "2024-05-24T14:15:00Z",
"homeScore": 1,
"awayScore": 0,
"incidents": [
{
"minute": "24",
"type": 1,
"subType": 1,
"playerName": "Gabrielzinho",
"playerId": 342732,
"participatingPlayerName": null,
"participatingPlayerId": 0,
"runningScore": null,
"field": 0,
"period": 0
}
],
"bets": null,
"aggregateWinnerField": null,
"winnerField": null,
"period": 3,
"extraResultField": null,
"homeExtratimeScore": null,
"awayExtratimeScore": null,
"homePenaltyScore": null,
"awayPenaltyScore": null,
"startedAtUtc": "2024-05-24T14:16:52Z",
"firstHalfEndedAtUtc": "2024-05-24T15:06:49Z",
"secondHalfStartedAtUtc": "2024-05-24T15:25:12Z"
}
]
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/matches-upcoming
requires authentication
Get upcoming football matches from tournaments around the world.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/football/matches-upcoming'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/football/matches-upcoming';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/football/matches-upcoming"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/football/matches-upcoming" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"createdAt": "2024-05-24T15:34:18Z"
},
"body": [
{
"tournamentId": 156,
"stageId": 22326,
"stageName": "Premier League",
"regionId": 12,
"tournamentName": "Premier League",
"seasonName": "2023/2024",
"seasonId": 9761,
"stageSortOrder": 1,
"sex": 1,
"tournamentSortOrder": 0,
"regionCode": "am",
"regionName": "Armenia",
"isOpta": false,
"navigationDisplayMode": 0,
"matches": [
{
"stageId": 22326,
"id": 1760076,
"status": "upcoming",
"startTime": "2024-05-24T14:00:00",
"homeTeamId": 27145,
"homeTeamName": "FC Noah",
"homeYellowCards": 0,
"homeRedCards": 0,
"awayTeamId": 28665,
"awayTeamName": "West Armenia",
"awayYellowCards": 0,
"awayRedCards": 0,
"hasIncidentsSummary": false,
"hasPreview": false,
"scoreChangedAt": "",
"elapsed": "",
"lastScorer": null,
"isTopMatch": false,
"homeTeamCountryCode": "am",
"awayTeamCountryCode": "am",
"commentCount": 0,
"isLineupConfirmed": false,
"isStreamAvailable": false,
"matchIsOpta": false,
"homeTeamCountryName": "Armenia",
"awayTeamCountryName": "Armenia",
"startTimeUtc": "2024-05-24T13:00:00Z",
"homeScore": null,
"awayScore": null,
"incidents": [],
"bets": null,
"aggregateWinnerField": null,
"winnerField": null,
"period": 0,
"extraResultField": null,
"homeExtratimeScore": null,
"awayExtratimeScore": null,
"homePenaltyScore": null,
"awayPenaltyScore": null,
"startedAtUtc": null,
"firstHalfEndedAtUtc": null,
"secondHalfStartedAtUtc": null
},
{
"stageId": 22326,
"id": 1760077,
"status": "upcoming",
"startTime": "2024-05-24T14:00:00",
"homeTeamId": 570,
"homeTeamName": "Shirak",
"homeYellowCards": 0,
"homeRedCards": 0,
"awayTeamId": 1713,
"awayTeamName": "Pyunik",
"awayYellowCards": 0,
"awayRedCards": 0,
"hasIncidentsSummary": false,
"hasPreview": false,
"scoreChangedAt": "",
"elapsed": "",
"lastScorer": null,
"isTopMatch": false,
"homeTeamCountryCode": "am",
"awayTeamCountryCode": "am",
"commentCount": 0,
"isLineupConfirmed": false,
"isStreamAvailable": false,
"matchIsOpta": false,
"homeTeamCountryName": "Armenia",
"awayTeamCountryName": "Armenia",
"startTimeUtc": "2024-05-24T13:00:00Z",
"homeScore": null,
"awayScore": null,
"incidents": [],
"bets": null,
"aggregateWinnerField": null,
"winnerField": null,
"period": 0,
"extraResultField": null,
"homeExtratimeScore": null,
"awayExtratimeScore": null,
"homePenaltyScore": null,
"awayPenaltyScore": null,
"startedAtUtc": null,
"firstHalfEndedAtUtc": null,
"secondHalfStartedAtUtc": null
},
{
"stageId": 22326,
"id": 1760078,
"status": "upcoming",
"startTime": "2024-05-24T14:00:00",
"homeTeamId": 11168,
"homeTeamName": "Alashkert FC",
"homeYellowCards": 0,
"homeRedCards": 0,
"awayTeamId": 27146,
"awayTeamName": "Ararat Armenia",
"awayYellowCards": 0,
"awayRedCards": 0,
"hasIncidentsSummary": false,
"hasPreview": false,
"scoreChangedAt": "",
"elapsed": "",
"lastScorer": null,
"isTopMatch": false,
"homeTeamCountryCode": "am",
"awayTeamCountryCode": "am",
"commentCount": 0,
"isLineupConfirmed": false,
"isStreamAvailable": false,
"matchIsOpta": false,
"homeTeamCountryName": "Armenia",
"awayTeamCountryName": "Armenia",
"startTimeUtc": "2024-05-24T13:00:00Z",
"homeScore": null,
"awayScore": null,
"incidents": [],
"bets": null,
"aggregateWinnerField": null,
"winnerField": null,
"period": 0,
"extraResultField": null,
"homeExtratimeScore": null,
"awayExtratimeScore": null,
"homePenaltyScore": null,
"awayPenaltyScore": null,
"startedAtUtc": null,
"firstHalfEndedAtUtc": null,
"secondHalfStartedAtUtc": null
},
{
"stageId": 22326,
"id": 1760079,
"status": "upcoming",
"startTime": "2024-05-24T14:00:00",
"homeTeamId": 2173,
"homeTeamName": "Urartu FC",
"homeYellowCards": 0,
"homeRedCards": 0,
"awayTeamId": 687,
"awayTeamName": "Ararat",
"awayYellowCards": 0,
"awayRedCards": 0,
"hasIncidentsSummary": false,
"hasPreview": false,
"scoreChangedAt": "",
"elapsed": "",
"lastScorer": null,
"isTopMatch": false,
"homeTeamCountryCode": "am",
"awayTeamCountryCode": "am",
"commentCount": 0,
"isLineupConfirmed": false,
"isStreamAvailable": false,
"matchIsOpta": false,
"homeTeamCountryName": "Armenia",
"awayTeamCountryName": "Armenia",
"startTimeUtc": "2024-05-24T13:00:00Z",
"homeScore": null,
"awayScore": null,
"incidents": [],
"bets": null,
"aggregateWinnerField": null,
"winnerField": null,
"period": 0,
"extraResultField": null,
"homeExtratimeScore": null,
"awayExtratimeScore": null,
"homePenaltyScore": null,
"awayPenaltyScore": null,
"startedAtUtc": null,
"firstHalfEndedAtUtc": null,
"secondHalfStartedAtUtc": null
},
{
"stageId": 22326,
"id": 1760086,
"status": "upcoming",
"startTime": "2024-05-24T14:00:00",
"homeTeamId": 28667,
"homeTeamName": "BKMA",
"homeYellowCards": 0,
"homeRedCards": 0,
"awayTeamId": 28666,
"awayTeamName": "Van",
"awayYellowCards": 0,
"awayRedCards": 0,
"hasIncidentsSummary": false,
"hasPreview": false,
"scoreChangedAt": "",
"elapsed": "",
"lastScorer": null,
"isTopMatch": false,
"homeTeamCountryCode": "am",
"awayTeamCountryCode": "am",
"commentCount": 0,
"isLineupConfirmed": false,
"isStreamAvailable": false,
"matchIsOpta": false,
"homeTeamCountryName": "Armenia",
"awayTeamCountryName": "Armenia",
"startTimeUtc": "2024-05-24T13:00:00Z",
"homeScore": null,
"awayScore": null,
"incidents": [],
"bets": null,
"aggregateWinnerField": null,
"winnerField": null,
"period": 0,
"extraResultField": null,
"homeExtratimeScore": null,
"awayExtratimeScore": null,
"homePenaltyScore": null,
"awayPenaltyScore": null,
"startedAtUtc": null,
"firstHalfEndedAtUtc": null,
"secondHalfStartedAtUtc": null
}
]
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Matches
The Matches endpoints in the Football API provide access to live match updates and upcoming game schedules, enabling developers to integrate real-time scores, detailed match summaries, and predictive analytics into sports applications and services.
GET /v1/matches
requires authentication
Get current, past, and future football matches from tournaments around the world.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/football/matches'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/football/matches';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/football/matches"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/football/matches" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"createdAt": "2024-05-03T22:52:26Z"
},
"body": [
{
"tournamentId": 383,
"stageId": 22896,
"stageName": "Cup",
"regionId": 31,
"tournamentName": "Cup",
"seasonName": "2024",
"seasonId": 9973,
"stageSortOrder": 38,
"sex": 1,
"tournamentSortOrder": 10,
"regionCode": "br",
"regionName": "Brazil",
"isOpta": false,
"navigationDisplayMode": 0,
"matches": [
{
"stageId": 22896,
"id": 1813983,
"status": 6,
"startTime": "2024-05-03T00:30:00",
"homeTeamId": 4621,
"homeTeamName": "CRB",
"homeYellowCards": 2,
"homeRedCards": 0,
"awayTeamId": 7334,
"awayTeamName": "Ceara",
"awayYellowCards": 2,
"awayRedCards": 0,
"hasIncidentsSummary": true,
"hasPreview": false,
"scoreChangedAt": "2024-05-03 02:26:33Z",
"elapsed": "FT",
"lastScorer": 0,
"isTopMatch": false,
"homeTeamCountryCode": "br",
"awayTeamCountryCode": "br",
"commentCount": 0,
"isLineupConfirmed": true,
"isStreamAvailable": false,
"matchIsOpta": false,
"homeTeamCountryName": "Brazil",
"awayTeamCountryName": "Brazil",
"startTimeUtc": "2024-05-02T23:30:00Z",
"homeScore": 1,
"awayScore": 0,
"incidents": [
{
"minute": "90",
"type": 1,
"subType": 1,
"playerName": "João Neto",
"playerId": 418453,
"participatingPlayerName": null,
"participatingPlayerId": 0,
"runningScore": null,
"field": 0,
"period": 0
}
],
"bets": null,
"aggregateWinnerField": null,
"winnerField": 0,
"period": 0,
"extraResultField": null,
"homeExtratimeScore": null,
"awayExtratimeScore": null,
"homePenaltyScore": null,
"awayPenaltyScore": null,
"startedAtUtc": "2024-05-02T23:31:40Z",
"firstHalfEndedAtUtc": "2024-05-03T00:24:12Z",
"secondHalfStartedAtUtc": "2024-05-03T00:40:58Z"
},
{
"stageId": 22896,
"id": 1813977,
"status": 6,
"startTime": "2024-05-03T01:30:00",
"homeTeamId": 1234,
"homeTeamName": "Palmeiras",
"homeYellowCards": 2,
"homeRedCards": 0,
"awayTeamId": 1223,
"awayTeamName": "Botafogo SP",
"awayYellowCards": 4,
"awayRedCards": 0,
"hasIncidentsSummary": true,
"hasPreview": false,
"scoreChangedAt": "2024-05-03 03:28:21Z",
"elapsed": "FT",
"lastScorer": 0,
"isTopMatch": false,
"homeTeamCountryCode": "br",
"awayTeamCountryCode": "br",
"commentCount": 0,
"isLineupConfirmed": true,
"isStreamAvailable": false,
"matchIsOpta": false,
"homeTeamCountryName": "Brazil",
"awayTeamCountryName": "Brazil",
"startTimeUtc": "2024-05-03T00:30:00Z",
"homeScore": 2,
"awayScore": 1,
"incidents": [
{
"minute": "57",
"type": 1,
"subType": 1,
"playerName": "Rony",
"playerId": 328287,
"participatingPlayerName": null,
"participatingPlayerId": 0,
"runningScore": null,
"field": 0,
"period": 0
},
{
"minute": "90",
"type": 1,
"subType": 1,
"playerName": "Patrick Brey",
"playerId": 356764,
"participatingPlayerName": null,
"participatingPlayerId": 0,
"runningScore": null,
"field": 1,
"period": 0
},
{
"minute": "90",
"type": 1,
"subType": 1,
"playerName": "Estevao",
"playerId": 509633,
"participatingPlayerName": null,
"participatingPlayerId": 0,
"runningScore": null,
"field": 0,
"period": 0
}
],
"bets": null,
"aggregateWinnerField": null,
"winnerField": 0,
"period": 0,
"extraResultField": null,
"homeExtratimeScore": null,
"awayExtratimeScore": null,
"homePenaltyScore": null,
"awayPenaltyScore": null,
"startedAtUtc": "2024-05-03T00:30:28Z",
"firstHalfEndedAtUtc": "2024-05-03T01:20:16Z",
"secondHalfStartedAtUtc": "2024-05-03T01:35:22Z"
},
{
"stageId": 22896,
"id": 1813982,
"status": 6,
"startTime": "2024-05-03T01:30:00",
"homeTeamId": 1218,
"homeTeamName": "Goias",
"homeYellowCards": 2,
"homeRedCards": 0,
"awayTeamId": 8938,
"awayTeamName": "Cuiaba",
"awayYellowCards": 4,
"awayRedCards": 0,
"hasIncidentsSummary": true,
"hasPreview": false,
"scoreChangedAt": "2024-05-03 02:18:26Z",
"elapsed": "FT",
"lastScorer": 0,
"isTopMatch": false,
"homeTeamCountryCode": "br",
"awayTeamCountryCode": "br",
"commentCount": 0,
"isLineupConfirmed": true,
"isStreamAvailable": false,
"matchIsOpta": false,
"homeTeamCountryName": "Brazil",
"awayTeamCountryName": "Brazil",
"startTimeUtc": "2024-05-03T00:30:00Z",
"homeScore": 1,
"awayScore": 0,
"incidents": [
{
"minute": "45",
"type": 1,
"subType": 1,
"playerName": "Thiago Galhardo",
"playerId": 101729,
"participatingPlayerName": null,
"participatingPlayerId": 0,
"runningScore": null,
"field": 0,
"period": 0
}
],
"bets": null,
"aggregateWinnerField": null,
"winnerField": 0,
"period": 0,
"extraResultField": null,
"homeExtratimeScore": null,
"awayExtratimeScore": null,
"homePenaltyScore": null,
"awayPenaltyScore": null,
"startedAtUtc": "2024-05-03T00:30:16Z",
"firstHalfEndedAtUtc": "2024-05-03T01:19:48Z",
"secondHalfStartedAtUtc": "2024-05-03T01:36:40Z"
}
]
},
{
"tournamentId": 504,
"stageId": 22811,
"stageName": "Cup",
"regionId": 11,
"tournamentName": "Cup",
"seasonName": "2024",
"seasonId": 9937,
"stageSortOrder": 65,
"sex": 1,
"tournamentSortOrder": 10,
"regionCode": "ar",
"regionName": "Argentina",
"isOpta": false,
"navigationDisplayMode": 0,
"matches": [
{
"stageId": 22811,
"id": 1814345,
"status": 6,
"startTime": "2024-05-03T01:10:00",
"homeTeamId": 890,
"homeTeamName": "Racing Club",
"homeYellowCards": 2,
"homeRedCards": 0,
"awayTeamId": 19969,
"awayTeamName": "CA Talleres Remedios de Escalada",
"awayYellowCards": 3,
"awayRedCards": 1,
"hasIncidentsSummary": true,
"hasPreview": false,
"scoreChangedAt": "2024-05-03 03:03:59Z",
"elapsed": "FT",
"lastScorer": 1,
"isTopMatch": false,
"homeTeamCountryCode": "ar",
"awayTeamCountryCode": "ar",
"commentCount": 0,
"isLineupConfirmed": true,
"isStreamAvailable": false,
"matchIsOpta": false,
"homeTeamCountryName": "Argentina",
"awayTeamCountryName": "Argentina",
"startTimeUtc": "2024-05-03T00:10:00Z",
"homeScore": 1,
"awayScore": 2,
"incidents": [
{
"minute": "7",
"type": 1,
"subType": 1,
"playerName": "Fernando Dure",
"playerId": 495858,
"participatingPlayerName": null,
"participatingPlayerId": 0,
"runningScore": null,
"field": 1,
"period": 0
},
{
"minute": "67",
"type": 1,
"subType": 1,
"playerName": "Maximiliano Salas",
"playerId": 512636,
"participatingPlayerName": null,
"participatingPlayerId": 0,
"runningScore": null,
"field": 0,
"period": 0
},
{
"minute": "90",
"type": 2,
"subType": 3,
"playerName": "Sebastián Benega",
"playerId": 361994,
"participatingPlayerName": null,
"participatingPlayerId": 0,
"runningScore": null,
"field": 1,
"period": 0
},
{
"minute": "90",
"type": 1,
"subType": 1,
"playerName": "Diego Guzman",
"playerId": 515416,
"participatingPlayerName": null,
"participatingPlayerId": 0,
"runningScore": null,
"field": 1,
"period": 0
}
],
"bets": null,
"aggregateWinnerField": null,
"winnerField": 1,
"period": 0,
"extraResultField": null,
"homeExtratimeScore": null,
"awayExtratimeScore": null,
"homePenaltyScore": null,
"awayPenaltyScore": null,
"startedAtUtc": "2024-05-03T00:10:09Z",
"firstHalfEndedAtUtc": "2024-05-03T00:57:50Z",
"secondHalfStartedAtUtc": "2024-05-03T01:14:31Z"
}
]
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/match-prediction
requires authentication
Get football match predictions based on teams and player stats from tournaments around the world.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/football/match-prediction'
params = {
'matchId': '1734903',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/football/match-prediction';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'matchId' => '1734903',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/football/match-prediction"
);
const params = {
"matchId": "1734903",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/football/match-prediction?matchId=1734903" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": {
"match": {
"RegionId": 206,
"RegionCode": "es",
"RegionName": "Spain",
"RegionNavigationDisplayMode": 0,
"RegionIsInternational": false,
"TournamentId": 4,
"TournamentName": "LaLiga",
"TournamentShortName": "SLL",
"TournamentSortOrder": 190,
"TournamentNavigationDisplayMode": 2,
"TournamentIsPopular": true,
"SeasonId": 9682,
"SeasonName": "2023/2024",
"StageId": 22176,
"StageName": "LaLiga",
"StageIsOpta": true,
"StageType": {
"Value": 1,
"DisplayName": "League"
},
"StageIsLeague": true,
"StageSortOrder": 1,
"Id": 1734903,
"Name": "Real Betis-Sevilla",
"PreviewStatus": {
"Value": 2,
"DisplayName": "Published"
},
"PreviewAuthor": "alexburton",
"Status": {
"Value": 6,
"DisplayName": "Finished"
},
"Period": {
"Value": 7,
"DisplayName": "FullTime"
},
...
},
"homePlayers": [
{
"PlayerId": 82989,
"FirstName": "Francisco Román",
"LastName": "Alarcón Suárez",
"KnownName": "Isco",
"WSName": null,
"Field": 0,
"Rating": 7.398965517241381,
"PlayerName": null,
"Name": "Isco"
},
{
"PlayerId": 379230,
"FirstName": "Johnny",
"LastName": "Cardoso",
"KnownName": null,
"WSName": null,
"Field": 0,
"Rating": 7.07375,
"PlayerName": null,
"Name": "Johnny Cardoso"
},
{ ... }
],
"awayPlayers": [
{
"PlayerId": 9909,
"FirstName": "Sergio",
"LastName": "Ramos",
"KnownName": null,
"WSName": null,
"Field": 1,
"Rating": 7.081481481481482,
"PlayerName": null,
"Name": "Sergio Ramos"
},
{
"PlayerId": 22732,
"FirstName": "Ivan",
"LastName": "Rakitic",
"KnownName": null,
"WSName": null,
"Field": 1,
"Rating": 6.94888888888889,
"PlayerName": null,
"Name": "Ivan Rakitic"
},
{ ... }
]
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
All Teams' Stats
These endpoints allow developers to access detailed statistical data such as defensive metrics, offensive performance, and overall goals scored by teams.
GET /v1/team-summary
requires authentication
Get football team summary stats such as goals, ratings, possessions, shorts per game, yellow cards, and more.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/football/team-summary'
params = {
'tournamentIds': '2,3,4',
'teamIds': '52,65,26',
'sort': 'rating',
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/football/team-summary';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'tournamentIds' => '2,3,4',
'teamIds' => '52,65,26',
'sort' => 'rating',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/football/team-summary"
);
const params = {
"tournamentIds": "2,3,4",
"teamIds": "52,65,26",
"sort": "rating",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/football/team-summary?tournamentIds=2%2C3%2C4&teamIds=%E2%80%8B52%2C65%2C26&sort=rating&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"currentPage": 1,
"totalPages": 1,
"resultsPerPage": 20,
"totalResults": 3,
"firstRecordIndex": 1,
"lastRecordIndex": 3,
"sort": "rating",
"field": "away",
"tournamentIds": "2,3,4",
"teamIds": "52,65,26"
},
"body": [
{
"name": "Real Madrid",
"teamId": 52,
"teamName": "Real Madrid",
"teamRegionName": "Spain",
"seasonId": 0,
"seasonName": null,
"tournamentId": 4,
"isOpta": true,
"tournamentRegionId": 206,
"tournamentRegionCode": "es",
"tournamentRegionName": "Spain",
"regionCode": "es",
"tournamentName": "LaLiga",
"rating": 6.82,
"ranking": 1,
"apps": 17,
"goal": 31,
"yellowCard": 33,
"redCard": 4,
"shotsPerGame": 13.705882352941176,
"aerialWonPerGame": 9.941176470588236,
"possession": 0.5689941176470588,
"passSuccess": 0.891869668002878,
"teamLogo": "https://d2zywfiolv4f83.cloudfront.net/img/teams/52.png"
},
{
"name": "Barcelona",
"teamId": 65,
"teamName": "Barcelona",
"teamRegionName": "Spain",
"seasonId": 0,
"seasonName": null,
"tournamentId": 4,
"isOpta": true,
"tournamentRegionId": 206,
"tournamentRegionCode": "es",
"tournamentRegionName": "Spain",
"regionCode": "es",
"tournamentName": "LaLiga",
"rating": 6.74,
"ranking": 2,
"apps": 17,
"goal": 32,
"yellowCard": 39,
"redCard": 2,
"shotsPerGame": 13.352941176470589,
"aerialWonPerGame": 12.705882352941176,
"possession": 0.6370647058823529,
"passSuccess": 0.8783851807107621,
"teamLogo": "https://d2zywfiolv4f83.cloudfront.net/img/teams/65.png"
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/team-defensive
requires authentication
Get football team defensive stats such as shorts conceded, tackles, interceptions, fouls, offsides per game and more.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/football/team-defensive'
params = {
'tournamentIds': '2,3,4',
'teamIds': '52,65,26',
'sort': 'tackles',
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/football/team-defensive';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'tournamentIds' => '2,3,4',
'teamIds' => '52,65,26',
'sort' => 'tackles',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/football/team-defensive"
);
const params = {
"tournamentIds": "2,3,4",
"teamIds": "52,65,26",
"sort": "tackles",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/football/team-defensive?tournamentIds=2%2C3%2C4&teamIds=%E2%80%8B52%2C65%2C26&sort=tackles&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"currentPage": 1,
"totalPages": 1,
"resultsPerPage": 20,
"totalResults": 3,
"firstRecordIndex": 1,
"lastRecordIndex": 3,
"sort": "shots-conceded",
"field": "away",
"tournamentIds": "2,3,4",
"teamIds": "52,65,26"
},
"body": [
{
"name": "Real Madrid",
"teamId": 52,
"teamName": "Real Madrid",
"teamRegionName": "Spain",
"seasonId": 0,
"seasonName": null,
"tournamentId": 4,
"isOpta": true,
"tournamentRegionId": 206,
"tournamentRegionCode": "es",
"tournamentRegionName": "Spain",
"regionCode": "es",
"tournamentName": "LaLiga",
"rating": 6.82,
"ranking": 1,
"apps": 17,
"tacklePerGame": 15.117647058823529,
"interceptionPerGame": 7.882352941176471,
"foulsPerGame": 10.411764705882353,
"offsideGivenPerGame": 1.8823529411764706,
"shotsConcededPerGame": 11.294117647058824,
"teamLogo": "https://d2zywfiolv4f83.cloudfront.net/img/teams/52.png"
},
{
"name": "Barcelona",
"teamId": 65,
"teamName": "Barcelona",
"teamRegionName": "Spain",
"seasonId": 0,
"seasonName": null,
"tournamentId": 4,
"isOpta": true,
"tournamentRegionId": 206,
"tournamentRegionCode": "es",
"tournamentRegionName": "Spain",
"regionCode": "es",
"tournamentName": "LaLiga",
"rating": 6.74,
"ranking": 2,
"apps": 17,
"tacklePerGame": 16.705882352941178,
"interceptionPerGame": 6.9411764705882355,
"foulsPerGame": 10.529411764705882,
"offsideGivenPerGame": 2.7058823529411766,
"shotsConcededPerGame": 11.176470588235293,
"teamLogo": "https://d2zywfiolv4f83.cloudfront.net/img/teams/65.png"
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/team-offensive
requires authentication
Get football team offensive stats such as shorts, dribbles won, fouls, shorts on target, and more.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/football/team-offensive'
params = {
'tournamentIds': '2,3,4',
'teamIds': '52,65,26',
'sort': 'shots',
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/football/team-offensive';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'tournamentIds' => '2,3,4',
'teamIds' => '52,65,26',
'sort' => 'shots',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/football/team-offensive"
);
const params = {
"tournamentIds": "2,3,4",
"teamIds": "52,65,26",
"sort": "shots",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/football/team-offensive?tournamentIds=2%2C3%2C4&teamIds=%E2%80%8B52%2C65%2C26&sort=shots&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"currentPage": 1,
"totalPages": 1,
"resultsPerPage": 20,
"totalResults": 3,
"firstRecordIndex": 1,
"lastRecordIndex": 3,
"sort": "shots",
"field": "away",
"tournamentIds": "2,3,4",
"teamIds": "52,65,26"
},
"body": [
{
"name": "Real Madrid",
"teamId": 52,
"teamName": "Real Madrid",
"teamRegionName": "Spain",
"seasonId": 0,
"seasonName": null,
"tournamentId": 4,
"isOpta": true,
"tournamentRegionId": 206,
"tournamentRegionCode": "es",
"tournamentRegionName": "Spain",
"regionCode": "es",
"tournamentName": "LaLiga",
"rating": 6.82,
"ranking": 1,
"apps": 17,
"shotsPerGame": 13.705882352941176,
"shotOnTargetPerGame": 5.647058823529412,
"dribbleWonPerGame": 10,
"foulGivenPerGame": 15.058823529411764,
"teamLogo": "https://d2zywfiolv4f83.cloudfront.net/img/teams/52.png"
},
{
"name": "Barcelona",
"teamId": 65,
"teamName": "Barcelona",
"teamRegionName": "Spain",
"seasonId": 0,
"seasonName": null,
"tournamentId": 4,
"isOpta": true,
"tournamentRegionId": 206,
"tournamentRegionCode": "es",
"tournamentRegionName": "Spain",
"regionCode": "es",
"tournamentName": "LaLiga",
"rating": 6.74,
"ranking": 2,
"apps": 17,
"shotsPerGame": 13.352941176470589,
"shotOnTargetPerGame": 5.235294117647059,
"dribbleWonPerGame": 9.470588235294118,
"foulGivenPerGame": 13.294117647058824,
"teamLogo": "https://d2zywfiolv4f83.cloudfront.net/img/teams/65.png"
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/team-goals
requires authentication
Get football team goals stats such as expected goals per game, total goals, goals to expected goals ratio, shots, and more.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/football/team-goals'
params = {
'tournamentIds': '2,3,4',
'teamIds': '52,65,26',
'sort': 'shots',
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/football/team-goals';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'tournamentIds' => '2,3,4',
'teamIds' => '52,65,26',
'sort' => 'shots',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/football/team-goals"
);
const params = {
"tournamentIds": "2,3,4",
"teamIds": "52,65,26",
"sort": "shots",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/football/team-goals?tournamentIds=2%2C3%2C4&teamIds=%E2%80%8B52%2C65%2C26&sort=shots&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"currentPage": 1,
"totalPages": 3,
"resultsPerPage": 20,
"totalResults": 58,
"firstRecordIndex": 1,
"lastRecordIndex": 20,
"sort": "rating",
"field": "both",
"tournamentIds": "2,3,4",
"teamIds": null
},
"body": [
{
"name": "Bayern",
"teamId": 37,
"teamName": "Bayern Munich",
"teamRegionName": "Germany",
"seasonId": 0,
"seasonName": null,
"tournamentId": 3,
"isOpta": true,
"tournamentRegionId": 81,
"tournamentRegionCode": "de",
"tournamentRegionName": "Germany",
"regionCode": null,
"tournamentName": "Bundesliga",
"rating": 6.97,
"ranking": 1,
"apps": 32,
"expectedGoals": 89.14805754463394,
"goalExcOwn": 89,
"totalShots": 621,
"goalToExpectedGoals": -0.14805754463394294,
"expectedGoalsPerShot": 0.14355564822002245,
"teamLogo": "https://d2zywfiolv4f83.cloudfront.net/img/teams/37.png"
},
{
"name": "Leverkusen",
"teamId": 36,
"teamName": "Bayer Leverkusen",
"teamRegionName": "Germany",
"seasonId": 0,
"seasonName": null,
"tournamentId": 3,
"isOpta": true,
"tournamentRegionId": 81,
"tournamentRegionCode": "de",
"tournamentRegionName": "Germany",
"regionCode": null,
"tournamentName": "Bundesliga",
"rating": 6.96,
"ranking": 2,
"apps": 32,
"expectedGoals": 72.88692517374402,
"goalExcOwn": 80,
"totalShots": 570,
"goalToExpectedGoals": 7.113074826255982,
"expectedGoalsPerShot": 0.1278717985504281,
"teamLogo": "https://d2zywfiolv4f83.cloudfront.net/img/teams/36.png"
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
All Players' Stats
The All Players' Statistics endpoints in the Football API provide detailed insights into various aspects of player performance, including defensive, offensive, passing, and goal-related statistics.
GET /v1/player-summary
requires authentication
Get football player summary stats such as rating, goals, assists, shorts per game, yellow cards, and more.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/football/player-summary'
params = {
'playerId': '11119',
'tournamentIds': '2,3,4',
'teamIds': '52,65,26',
'sort': 'rating',
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/football/player-summary';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'playerId' => '11119',
'tournamentIds' => '2,3,4',
'teamIds' => '52,65,26',
'sort' => 'rating',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/football/player-summary"
);
const params = {
"playerId": "11119",
"tournamentIds": "2,3,4",
"teamIds": "52,65,26",
"sort": "rating",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/football/player-summary?playerId=11119&tournamentIds=2%2C3%2C4&teamIds=%E2%80%8B52%2C65%2C26&sort=rating&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"currentPage": 1,
"totalPages": 1,
"resultsPerPage": 10,
"totalResults": 2,
"firstRecordIndex": 1,
"lastRecordIndex": 2,
"sort": "rating",
"field": "home",
"tournamentIds": null,
"teamIds": null,
"playerId": "11119",
"matchId": null
},
"body": {
"height": 170,
"weight": 72,
"age": 36,
"isManOfTheMatch": false,
"isActive": true,
"playedPositions": "-AMC-AMR-FW-",
"playedPositionsShort": "AM(CR),FW",
"teamRegionName": "USA",
"regionCode": "ar",
"tournamentShortName": "UMLS",
"apps": 5,
"subOn": 1,
"manOfTheMatch": 3,
"goal": 6,
"assistTotal": 7,
"shotsPerGame": 4.8,
"aerialWonPerGame": 0.2,
"name": "Lionel Messi",
"firstName": "Lionel",
"lastName": "Messi",
"playerId": 11119,
"positionText": "Forward",
"teamId": 28925,
"teamName": "Inter Miami CF",
"seasonId": 9927,
"seasonName": "2024",
"isOpta": true,
"tournamentId": 85,
"tournamentRegionId": 233,
"tournamentRegionCode": "us",
"tournamentRegionName": "USA",
"tournamentName": "Major League Soccer",
"rating": 9.154,
"minsPlayed": 405,
"yellowCard": 0,
"redCard": 0,
"passSuccess": 83.55555555555556,
"ranking": 1,
"playerHeadshot": "https://d2zywfiolv4f83.cloudfront.net/img/players/11119.jpg"
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/player-defensive
requires authentication
Get football players defensive stats such as rating, goals, assists, shots per game, yellow cards, and more.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/football/player-defensive'
params = {
'playerId': '11119',
'tournamentIds': '2,3,4',
'teamIds': '52,65,26',
'sort': 'rating',
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/football/player-defensive';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'playerId' => '11119',
'tournamentIds' => '2,3,4',
'teamIds' => '52,65,26',
'sort' => 'rating',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/football/player-defensive"
);
const params = {
"playerId": "11119",
"tournamentIds": "2,3,4",
"teamIds": "52,65,26",
"sort": "rating",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/football/player-defensive?playerId=11119&tournamentIds=2%2C3%2C4&teamIds=%E2%80%8B52%2C65%2C26&sort=rating&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"currentPage": 1,
"totalPages": 635,
"resultsPerPage": 10,
"totalResults": 6343,
"firstRecordIndex": 1,
"lastRecordIndex": 10,
"sort": "tackles",
"field": "home",
"tournamentIds": null,
"teamIds": null,
"playerId": null,
"matchId": null
},
"body": [
{
"height": 190,
"weight": 84,
"age": 28,
"isManOfTheMatch": false,
"isActive": true,
"playedPositions": "-DMC-",
"playedPositionsShort": "DMC",
"teamRegionName": "England",
"regionCode": "pt",
"tournamentShortName": "EPL",
"apps": 16,
"subOn": 1,
"tacklePerGame": 4.5625,
"interceptionPerGame": 1.1875,
"foulsPerGame": 1.6875,
"offsideWonPerGame": 0.0625,
"clearancePerGame": 1.4375,
"wasDribbledPerGame": 1.4375,
"outfielderBlockPerGame": 0.375,
"name": "João Palhinha",
"firstName": "João Maria",
"lastName": "Lobo Alves Palhares Costa Palhinha Gonçalves",
"playerId": 322774,
"positionText": "Midfielder",
"teamId": 170,
"teamName": "Fulham",
"seasonId": 9618,
"seasonName": "2023/2024",
"isOpta": true,
"tournamentId": 2,
"tournamentRegionId": 252,
"tournamentRegionCode": "gb-eng",
"tournamentRegionName": "England",
"tournamentName": "Premier League",
"rating": 7.028124999999999,
"minsPlayed": 1298,
"goalOwn": 0,
"ranking": 1,
"playerHeadshot": "https://d2zywfiolv4f83.cloudfront.net/img/players/322774.jpg"
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/player-offensive
requires authentication
Get football player offensive stats such as goals, assists, fouls given, dribbles won, turnovers, and more.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/football/player-offensive'
params = {
'tournamentIds': '2,3,4',
'teamIds': '52,65,26',
'sort': 'goals',
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/football/player-offensive';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'tournamentIds' => '2,3,4',
'teamIds' => '52,65,26',
'sort' => 'goals',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/football/player-offensive"
);
const params = {
"tournamentIds": "2,3,4",
"teamIds": "52,65,26",
"sort": "goals",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/football/player-offensive?tournamentIds=2%2C3%2C4&teamIds=%E2%80%8B52%2C65%2C26&sort=goals&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"currentPage": 1,
"totalPages": 1019,
"resultsPerPage": 10,
"totalResults": 10183,
"firstRecordIndex": 1,
"lastRecordIndex": 10,
"sort": "goals",
"field": "home",
"tournamentIds": null,
"teamIds": null,
"playerId": null,
"matchId": null
},
"body": [
{
"height": 188,
"weight": 86,
"age": 30,
"isManOfTheMatch": false,
"isActive": true,
"playedPositions": "-AMC-FW-",
"playedPositionsShort": "AM(C),FW",
"teamRegionName": "Germany",
"regionCode": "gb-eng",
"tournamentShortName": "GB",
"apps": 16,
"subOn": 0,
"goal": 22,
"assistTotal": 5,
"shotsPerGame": 5.375,
"keyPassPerGame": 1,
"dribbleWonPerGame": 0.75,
"foulGivenPerGame": 1,
"offsideGivenPerGame": 0.4375,
"dispossessedPerGame": 1.5,
"turnoverPerGame": 1.3125,
"name": "Harry Kane",
"firstName": "Harry",
"lastName": "Kane",
"playerId": 83532,
"positionText": "Forward",
"teamId": 37,
"teamName": "Bayern",
"seasonId": 9649,
"seasonName": "2023/2024",
"isOpta": true,
"tournamentId": 3,
"tournamentRegionId": 81,
"tournamentRegionCode": "de",
"tournamentRegionName": "Germany",
"tournamentName": "Bundesliga",
"rating": 8.058125,
"minsPlayed": 1418,
"ranking": 1,
"playerHeadshot": "https://d2zywfiolv4f83.cloudfront.net/img/players/83532.jpg"
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/player-passing
requires authentication
Get football player passing stats such as passing per game, crosses, long balls, through balls, and more.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/football/player-passing'
params = {
'tournamentIds': '2,3,4',
'teamIds': '52,65,26',
'sort': 'rating',
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/football/player-passing';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'tournamentIds' => '2,3,4',
'teamIds' => '52,65,26',
'sort' => 'rating',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/football/player-passing"
);
const params = {
"tournamentIds": "2,3,4",
"teamIds": "52,65,26",
"sort": "rating",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/football/player-passing?tournamentIds=2%2C3%2C4&teamIds=%E2%80%8B52%2C65%2C26&sort=rating&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"currentPage": 1,
"totalPages": 681,
"resultsPerPage": 10,
"totalResults": 6801,
"firstRecordIndex": 1,
"lastRecordIndex": 10,
"sort": "passes-per-game",
"field": "home",
"tournamentIds": null,
"teamIds": null,
"playerId": null,
"matchId": null
},
"body": [
{
"height": 186,
"weight": 80,
"age": 31,
"isManOfTheMatch": false,
"isActive": true,
"playedPositions": "-DL-MC-",
"playedPositionsShort": "D(L),M(C)",
"teamRegionName": "Switzerland",
"regionCode": "ch",
"tournamentShortName": "UEC",
"apps": 5,
"subOn": 0,
"assistTotal": 1,
"keyPassPerGame": 2.2,
"totalPassesPerGame": 111,
"accurateCrossesPerGame": 0.2,
"accurateLongPassPerGame": 5.2,
"accurateThroughBallPerGame": 0.2,
"name": "Granit Xhaka",
"firstName": "Granit",
"lastName": "Xhaka",
"playerId": 89401,
"positionText": "Midfielder",
"teamId": 423,
"teamName": "Switzerland",
"seasonId": 9300,
"seasonName": "2023",
"isOpta": true,
"tournamentId": 124,
"tournamentRegionId": 247,
"tournamentRegionCode": "cint",
"tournamentRegionName": "International",
"tournamentName": "European Championship",
"rating": 7.298,
"minsPlayed": 450,
"passSuccess": 90.45045045045045,
"ranking": 1,
"playerHeadshot": "https://d2zywfiolv4f83.cloudfront.net/img/players/89401.jpg"
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/player-goals
requires authentication
Get football player goals stats such as expected goals per game, total goals, goals to expected goals ratio, shots, and more.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/football/player-goals'
params = {
'tournamentIds': '2,3,4',
'sort': 'rating',
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/football/player-goals';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'tournamentIds' => '2,3,4',
'sort' => 'rating',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/football/player-goals"
);
const params = {
"tournamentIds": "2,3,4",
"sort": "rating",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/football/player-goals?tournamentIds=2%2C3%2C4&sort=rating&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"currentPage": 1,
"totalPages": 88,
"resultsPerPage": 10,
"totalResults": 871,
"firstRecordIndex": 1,
"lastRecordIndex": 10,
"sort": "rating",
"field": null,
"tournamentIds": "2,3,4",
"teamIds": null,
"playerId": null,
"matchId": null
},
"body": [
{
"regionCode": "gb-eng",
"tournamentShortName": "GB",
"name": "Harry Kane",
"firstName": "Harry",
"lastName": "Kane",
"playerId": 83532,
"positionText": "Forward",
"teamId": 37,
"height": 188,
"weight": 86,
"age": 30,
"teamRegionName": "Germany",
"teamName": "Bayern",
"seasonId": 9649,
"seasonName": "2023/2024",
"isActive": true,
"isOpta": true,
"tournamentId": 3,
"tournamentRegionId": 81,
"tournamentRegionCode": "de",
"tournamentRegionName": "Germany",
"tournamentName": "Bundesliga",
"rating": 7.8215625,
"minsPlayed": 2844,
"ranking": 1,
"playedPositions": "-AMC-FW-",
"playedPositionsShort": "AM(C),FW",
"totalShots": 146,
"apps": 32,
"subOn": 0,
"expectedGoals": 32.0595,
"goal": 36,
"goalToExpectedGoals": 3.9405,
"expectedGoalsPerGame": 1.0145411392405064,
"expectedGoalsPerShot": 0.21958561643835617,
"playerHeadshot": "https://d2zywfiolv4f83.cloudfront.net/img/players/83532.jpg"
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Baseball (MLB) Endpoints
The MLB API offers comprehensive endpoints to access schedules, leagues, seasons, venues, and detailed game information such as box scores, play-by-play actions, probabilities, and matrices. It also provides data on teams including rosters, historical records, personnel, affiliates, and coaching staff, enabling developers to integrate rich baseball data into their applications with ease.
General
These endpoints allow developers to retrieve up-to-date data on game schedules, league details, current seasons, and venue specifics, facilitating the integration of comprehensive baseball information into applications and services.
GET /v1/seasons
requires authentication
Get baseball season information.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/mlb/seasons'
params = {
'seasonId': '2023',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/mlb/seasons';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'seasonId' => '2023',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/mlb/seasons"
);
const params = {
"seasonId": "2023",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/mlb/seasons?seasonId=2023" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": [
{
"seasonId": "2023",
"hasWildcard": true,
"preSeasonStartDate": "2023-01-01",
"preSeasonEndDate": "2023-02-23",
"seasonStartDate": "2023-02-24",
"springStartDate": "2023-02-24",
"springEndDate": "2023-03-28",
"regularSeasonStartDate": "2023-03-30",
"lastDate1stHalf": "2023-07-09",
"allStarDate": "2023-07-11",
"firstDate2ndHalf": "2023-07-14",
"regularSeasonEndDate": "2023-10-02",
"postSeasonStartDate": "2023-10-03",
"postSeasonEndDate": "2023-11-04",
"seasonEndDate": "2023-11-04",
"offseasonStartDate": "2023-11-05",
"offSeasonEndDate": "2023-12-31",
"seasonLevelGamedayType": "P",
"gameLevelGamedayType": "P",
"qualifierPlateAppearances": 3.1,
"qualifierOutsPitched": 3
}
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/leagues
requires authentication
Get baseball league information.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/mlb/leagues'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/mlb/leagues';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/mlb/leagues"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/mlb/leagues" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": [
{
"id": 103,
"name": "American League",
"abbreviation": "AL",
"nameShort": "American",
"seasonState": "postseason",
"hasWildCard": true,
"hasSplitSeason": false,
"numGames": 162,
"hasPlayoffPoints": false,
"numTeams": 15,
"numWildcardTeams": 3,
"seasonDateInfo": {
"seasonId": "2023",
"preSeasonStartDate": "2023-01-01",
"preSeasonEndDate": "2023-02-23",
"seasonStartDate": "2023-02-24",
"springStartDate": "2023-02-24",
"springEndDate": "2023-03-28",
"regularSeasonStartDate": "2023-03-30",
"lastDate1stHalf": "2023-07-09",
"allStarDate": "2023-07-11",
"firstDate2ndHalf": "2023-07-14",
"regularSeasonEndDate": "2023-10-01",
"postSeasonStartDate": "2023-10-03",
"postSeasonEndDate": "2023-11-04",
"seasonEndDate": "2023-11-04",
"offseasonStartDate": "2023-11-05",
"offSeasonEndDate": "2023-12-31",
"seasonLevelGamedayType": "P",
"gameLevelGamedayType": "P",
"qualifierPlateAppearances": 3.1,
"qualifierOutsPitched": 3
},
"season": "2023",
"orgCode": "AL",
"conferencesInUse": false,
"divisionsInUse": true,
"sport": {
"id": 1
},
"sortOrder": 21,
"active": true
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/venues
requires authentication
Get baseball venues information.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/mlb/venues'
params = {
'seasonId': '2023',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/mlb/venues';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'seasonId' => '2023',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/mlb/venues"
);
const params = {
"seasonId": "2023",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/mlb/venues?seasonId=2023" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": [
{
"id": 1,
"name": "Angel Stadium",
"active": true,
"season": "2023"
},
{
"id": 2,
"name": "Oriole Park at Camden Yards",
"active": true,
"season": "2023"
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/players
requires authentication
Get baseball player information.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/mlb/players'
params = {
'personIds': '676265',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/mlb/players';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'personIds' => '676265',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/mlb/players"
);
const params = {
"personIds": "676265",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/mlb/players?personIds=676265" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": [
{
"id": 676265,
"fullName": "Cory Abbott",
"firstName": "Cory",
"lastName": "Abbott",
"primaryNumber": "77",
"birthDate": "1995-09-20",
"currentAge": 28,
"birthCity": "San Diego",
"birthStateProvince": "CA",
"birthCountry": "USA",
"height": "6' 2\"",
"weight": 217,
"active": true,
"primaryPosition": {
"code": "1",
"name": "Pitcher",
"type": "Pitcher",
"abbreviation": "P"
},
"useName": "Cory",
"useLastName": "Abbott",
"middleName": "James",
"boxscoreName": "Abbott, C",
"gender": "M",
"isPlayer": true,
"isVerified": true,
"draftYear": 2017,
"mlbDebutDate": "2021-06-05",
"batSide": {
"code": "R",
"description": "Right"
},
"pitchHand": {
"code": "R",
"description": "Right"
},
"nameFirstLast": "Cory Abbott",
"nameSlug": "cory-abbott-676265",
"firstLastName": "Cory Abbott",
"lastFirstName": "Abbott, Cory",
"lastInitName": "Abbott, C",
"initLastName": "C Abbott",
"fullFMLName": "Cory James Abbott",
"fullLFMName": "Abbott, Cory James",
"strikeZoneTop": 3.467,
"strikeZoneBottom": 1.589
}
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/free-agents
requires authentication
Get free agent information.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/mlb/free-agents'
params = {
'seasonId': '2023',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/mlb/free-agents';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'seasonId' => '2023',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/mlb/free-agents"
);
const params = {
"seasonId": "2023",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/mlb/free-agents?seasonId=2023" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": {
"season": "2023",
"freeAgents": [
{
"player": {
"id": 501659,
"fullName": "Abraham Almonte"
},
"originalTeam": {
"id": 121,
"name": "New York Mets"
},
"newTeam": [],
"notes": "Minor League Free Agent",
"dateDeclared": "2023-10-04",
"position": {
"code": "O",
"name": "Outfield",
"type": "Outfielder",
"abbreviation": "OF"
}
},
{
"player": {
"id": 605119,
"fullName": "Brian Anderson"
},
"originalTeam": {
"id": 158,
"name": "Milwaukee Brewers"
},
"newTeam": [],
"dateDeclared": "2023-10-03",
"position": {
"code": "5",
"name": "Third Base",
"type": "Infielder",
"abbreviation": "3B"
}
},
{ ... }
]
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/schedule
requires authentication
Get baseball schedule information.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/mlb/schedule'
params = {
'date': '2021-07-30',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/mlb/schedule';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'date' => '2021-07-30',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/mlb/schedule"
);
const params = {
"date": "2021-07-30",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/mlb/schedule?date=2021-07-30" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"date": "2021-07-30",
"totalEvents": 0,
"totalGames": 15,
"totalGamesInProgress": 0
},
"body": {
"0": {
"gamePk": 633094,
"gameGuid": "cedf2489-1963-4910-b66a-ea0f2d0206d3",
"gameType": "R",
"season": "2021",
"gameDate": "2021-07-30T23:05:00Z",
"officialDate": "2021-07-30",
"status": {
"abstractGameState": "Final",
"codedGameState": "F",
"detailedState": "Final",
"statusCode": "F",
"startTimeTBD": false,
"abstractGameCode": "F"
},
"teams": {
"away": {
"leagueRecord": {
"wins": 50,
"losses": 55,
"pct": ".476"
},
"score": 3,
"team": {
"id": 112,
"name": "Chicago Cubs"
},
"isWinner": false,
"splitSquad": false,
"seriesNumber": 34
},
"home": {
"leagueRecord": {
"wins": 48,
"losses": 55,
"pct": ".466"
},
"score": 4,
"team": {
"id": 120,
"name": "Washington Nationals"
},
"isWinner": true,
"splitSquad": false,
"seriesNumber": 34
}
},
"venue": {
"id": 3309,
"name": "Nationals Park"
},
"content": [],
"isTie": false,
"gameNumber": 1,
"publicFacing": true,
"doubleHeader": "N",
"gamedayType": "P",
"tiebreaker": "N",
"calendarEventID": "14-633094-2021-07-30",
"seasonDisplay": "2021",
"dayNight": "night",
"scheduledInnings": 9,
"reverseHomeAwayStatus": false,
"inningBreakLength": 120,
"gamesInSeries": 3,
"seriesGameNumber": 1,
"seriesDescription": "Regular Season",
"recordSource": "S",
"ifNecessary": "N",
"ifNecessaryDescription": "Normal Game"
},
{ .. },
"events": []
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Teams
Team section offers a range of endpoints that provide detailed information about baseball teams. Developers can access general team data, team rosters, historical records, personnel details, affiliated teams, and coaching staff information.
GET /v1/teams
requires authentication
Get baseball team information.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/mlb/teams'
params = {
'teamId': '4164',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/mlb/teams';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'teamId' => '4164',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/mlb/teams"
);
const params = {
"teamId": "4164",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/mlb/teams?teamId=4164" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": [
{
"springLeague": {
"id": 114,
"name": "Cactus League",
"abbreviation": "CL"
},
"allStarStatus": "N",
"id": 133,
"name": "Oakland Athletics",
"season": 2023,
"venue": {
"id": 10,
"name": "Oakland Coliseum"
},
"springVenue": {
"id": 2507
},
"teamCode": "oak",
"fileCode": "oak",
"abbreviation": "OAK",
"teamName": "Athletics",
"locationName": "Oakland",
"firstYearOfPlay": "1901",
"league": {
"id": 103,
"name": "American League"
},
"division": {
"id": 200,
"name": "American League West"
},
"sport": {
"id": 1,
"name": "Major League Baseball"
},
"shortName": "Oakland",
"franchiseName": "Oakland",
"clubName": "Athletics",
"active": true
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (403, Unauthorized):
{
"message": "This action is unauthorized."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/teams-history
requires authentication
Get baseball team's history information.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/mlb/teams-history'
params = {
'teamIds': '145',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://api.apicalls.io/v1/mlb/teams-history';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'teamIds' => '145',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/mlb/teams-history"
);
const params = {
"teamIds": "145",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept