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": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
curl --request GET \
--get "https://api.apicalls.io/v1/mlb/teams-history?teamIds=145" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": [
{
"allStarStatus": "N",
"id": 149,
"name": "Middletown Mansfields",
"season": 1872,
"venue": {
"id": 401,
"name": "TBD"
},
"teamCode": "mid",
"fileCode": "t149",
"abbreviation": "MID",
"teamName": "Mansfields",
"firstYearOfPlay": "1872",
"league": {
"id": 102,
"name": "National Association"
},
"sport": {
"id": 6,
"name": "Historical Professional League"
},
"shortName": "Middletown",
"franchiseName": "Middletown",
"clubName": "Mansfields",
"active": 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/teams-coaches
requires authentication
Get baseball team's coaches information.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/mlb/teams-coaches'
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-coaches';
$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-coaches"
);
const params = {
"teamIds": "145",
};
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-coaches?teamIds=145" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": {
"roster": [
{
"person": {
"id": 437073,
"fullName": "Pedro Grifol"
},
"jerseyNumber": "5",
"job": "Manager",
"jobId": "MNGR",
"title": "Manager"
},
{
"person": {
"id": 119271,
"fullName": "Charlie Montoyo"
},
"jerseyNumber": "75",
"job": "Bench Coach",
"jobId": "COAB",
"title": "Bench Coach"
},
{ ... }
],
"teamId": 145,
"rosterType": "coach"
}
}
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-personnel
requires authentication
Get baseball team's personnel information.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/mlb/teams-personnel'
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-personnel';
$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-personnel"
);
const params = {
"teamIds": "145",
};
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-personnel?teamIds=145" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": {
"roster": [
{
"person": {
"id": 580104,
"fullName": "Geoff Head"
},
"jerseyNumber": "",
"job": "Director of Conditioning",
"jobId": "DCON",
"title": "Senior Director of Sports Performance"
}
]
}
}
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-affiliates
requires authentication
Get baseball team's affiliates information.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/mlb/teams-affiliates'
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-affiliates';
$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-affiliates"
);
const params = {
"teamIds": "145",
};
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-affiliates?teamIds=145" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": {
"teams": [
{
"springLeague": {
"id": 114,
"name": "Cactus League",
"abbreviation": "CL"
},
"allStarStatus": "N",
"id": 145,
"name": "Chicago White Sox",
"season": 2023,
"venue": {
"id": 4,
"name": "Guaranteed Rate Field"
},
"springVenue": {
"id": 3809
},
"teamCode": "cha",
"fileCode": "cws",
"abbreviation": "CWS",
"teamName": "White Sox",
"locationName": "Chicago",
"firstYearOfPlay": "1901",
"league": {
"id": 103,
"name": "American League"
},
"division": {
"id": 202,
"name": "American League Central"
},
"sport": {
"id": 1,
"name": "Major League Baseball"
},
"shortName": "Chi White Sox",
"franchiseName": "Chicago",
"clubName": "White Sox",
"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-roster
requires authentication
Get baseball team's roster information.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/mlb/teams-roster'
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-roster';
$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-roster"
);
const params = {
"teamIds": "145",
};
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-roster?teamIds=145" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": {
"roster": [
{
"person": {
"id": 607481,
"fullName": "Aaron Bummer"
},
"jerseyNumber": "39",
"position": {
"code": "1",
"name": "Pitcher",
"type": "Pitcher",
"abbreviation": "P"
},
"status": {
"code": "A",
"description": "Active"
},
"parentTeamId": 145
},
{
"person": {
"id": 656514,
"fullName": "Adam Haseley"
},
"jerseyNumber": "51",
"position": {
"code": "9",
"name": "Outfielder",
"type": "Outfielder",
"abbreviation": "RF"
},
"status": {
"code": "A",
"description": "Active"
},
"parentTeamId": 145
},
{
"person": {
"id": 666208,
"fullName": "Alex Speas"
},
"jerseyNumber": "",
"position": {
"code": "1",
"name": "Pitcher",
"type": "Pitcher",
"abbreviation": "P"
},
"status": {
"code": "A",
"description": "Active"
},
"parentTeamId": 145
},
{ ... }
],
"teamId": 145,
"rosterType": "active"
}
}
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.
Games
Game section includes endpoints for retrieving detailed box score data, play-by-play descriptions, statistical probabilities, and visual game matrices.
GET /v1/games
requires authentication
Get baseball games information.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/mlb/games'
params = {
'gamePk': '633282',
}
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/games';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'gamePk' => '633282',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/mlb/games"
);
const params = {
"gamePk": "633282",
};
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/games?gamePk=633282" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"wait": 10,
"timeStamp": "20210711_205415",
"gameEvents": [
"field_out",
"game_finished"
],
"logicalEvents": [
"midInning",
"countChange",
"count10",
"newLeftHandedHit",
"basesEmpty",
"gameStateChangeToGameOver"
]
},
"body": {
"game": {
"pk": 633282,
"type": "R",
"doubleHeader": "N",
"id": "2021/07/11/chamlb-balmlb-1",
"gamedayType": "P",
"tiebreaker": "N",
"gameNumber": 1,
"calendarEventID": "14-633282-2021-07-11",
"season": "2021",
"seasonDisplay": "2021"
},
"datetime": {
{...}
},
"status": {
{...}
},
"teams": {
{...}
},
"players": {
{...}
},
"venue": {
{...}
},
"officialVenue": {
{...}
},
"weather": {
{...}
},
"gameInfo": {
{...}
},
"review": {
{...}
},
"flags": {
{...}
},
"alerts": [],
"probablePitchers": {
{...}
},
"officialScorer": {
{...}
},
"primaryDatacaster": {
{...}
},
"moundVisits": {
{...}
}
}
}
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/games-boxscore
requires authentication
Get baseball game's boxscore information.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/mlb/games-boxscore'
params = {
'gamePk': '633282',
}
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/games-boxscore';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'gamePk' => '633282',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/mlb/games-boxscore"
);
const params = {
"gamePk": "633282",
};
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/games-boxscore?gamePk=633282" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": {
"away": {
"team": {
"springLeague": {
"id": 114,
"name": "Cactus League",
"abbreviation": "CL"
},
"allStarStatus": "N",
"id": 145,
"name": "Chicago White Sox",
"season": 2021,
"venue": {
"id": 4,
"name": "Guaranteed Rate Field"
},
"springVenue": {
"id": 3809
},
"teamCode": "cha",
"fileCode": "cws",
"abbreviation": "CWS",
"teamName": "White Sox",
"locationName": "Chicago",
"firstYearOfPlay": "1901",
"league": {
"id": 103,
"name": "American League"
},
"division": {
"id": 202,
"name": "American League Central"
},
"sport": {
"id": 1,
"name": "Major League Baseball"
},
"shortName": "Chi White Sox",
"record": {
"gamesPlayed": 89,
"wildCardGamesBack": "-",
"leagueGamesBack": "-",
"springLeagueGamesBack": "-",
"sportGamesBack": "-",
"divisionGamesBack": "-",
"conferenceGamesBack": "-",
"leagueRecord": {
"wins": 54,
"losses": 35,
"ties": 0,
"pct": ".607"
},
"records": [],
"divisionLeader": false,
"wins": 54,
"losses": 35,
"winningPercentage": ".607"
},
"franchiseName": "Chicago",
"clubName": "White Sox",
"active": true
},
"teamStats": {
"batting": {
"flyOuts": 4,
"groundOuts": 7,
"runs": 7,
"doubles": 1,
"triples": 0,
"homeRuns": 3,
"strikeOuts": 11,
"baseOnBalls": 5,
"intentionalWalks": 0,
"hits": 8,
"hitByPitch": 1,
"avg": ".257",
"atBats": 35,
"obp": ".341",
"slg": ".417",
"ops": ".758",
"caughtStealing": 1,
"stolenBases": 0,
"stolenBasePercentage": ".000",
"groundIntoDoublePlay": 0,
"groundIntoTriplePlay": 0,
"plateAppearances": 42,
"totalBases": 18,
"rbi": 7,
"leftOnBase": 13,
"sacBunts": 1,
"sacFlies": 0,
"catchersInterference": 0,
"pickoffs": 1,
"atBatsPerHomeRun": "11.67"
},
"pitching": {
"groundOuts": 0,
"airOuts": 0,
"runs": 5,
"doubles": 0,
"triples": 0,
"homeRuns": 2,
"strikeOuts": 14,
"baseOnBalls": 4,
"intentionalWalks": 0,
"hits": 5,
"hitByPitch": 1,
"atBats": 34,
"obp": ".250",
"caughtStealing": 0,
"stolenBases": 1,
"stolenBasePercentage": "1.000",
"numberOfPitches": 167,
"era": "3.58",
"inningsPitched": "10.0",
"saveOpportunities": 0,
"earnedRuns": 4,
"whip": "1.21",
"battersFaced": 40,
"outs": 30,
"completeGames": 0,
"shutouts": 0,
"pitchesThrown": 167,
"balls": 60,
"strikes": 107,
"strikePercentage": ".640",
"hitBatsmen": 1,
"balks": 0,
"wildPitches": 2,
"pickoffs": 0,
"groundOutsToAirouts": "-.--",
"rbi": 5,
"pitchesPerInning": "16.70",
"runsScoredPer9": "4.50",
"homeRunsPer9": "1.80",
"inheritedRunners": 0,
"inheritedRunnersScored": 0,
"catchersInterference": 0,
"sacBunts": 0,
"sacFlies": 1,
"passedBall": 0
},
"fielding": {
"caughtStealing": 0,
"stolenBases": 1,
"stolenBasePercentage": "1.000",
"assists": 6,
"putOuts": 30,
"errors": 1,
"chances": 37,
"passedBall": 0,
"pickoffs": 0
}
},
"players": {
"ID621114": {
"person": {
"id": 621114,
"fullName": "Ryan Burr"
},
"jerseyNumber": "61",
"position": {
"code": "1",
"name": "Pitcher",
"type": "Pitcher",
"abbreviation": "P"
},
"status": {
"code": "A",
"description": "Active"
},
"parentTeamId": 145,
"stats": {
"batting": [],
"pitching": [],
"fielding": []
},
"seasonStats": {
"batting": {
"gamesPlayed": 2,
"flyOuts": 0,
"groundOuts": 0,
"runs": 0,
"doubles": 0,
"triples": 0,
"homeRuns": 0,
"strikeOuts": 0,
"baseOnBalls": 0,
"intentionalWalks": 0,
"hits": 0,
"hitByPitch": 0,
"avg": ".000",
"atBats": 0,
"obp": ".000",
"slg": ".000",
"ops": ".000",
"caughtStealing": 0,
"stolenBases": 0,
"stolenBasePercentage": ".---",
"groundIntoDoublePlay": 0,
"groundIntoTriplePlay": 0,
"plateAppearances": 0,
"totalBases": 0,
"rbi": 0,
"leftOnBase": 0,
"sacBunts": 0,
"sacFlies": 0,
"babip": ".---",
"catchersInterference": 0,
"pickoffs": 0,
"atBatsPerHomeRun": "-.--"
},
"pitching": {
"gamesPlayed": 14,
"gamesStarted": 1,
"groundOuts": 19,
"airOuts": 15,
"runs": 2,
"doubles": 1,
"triples": 0,
"homeRuns": 1,
"strikeOuts": 14,
"baseOnBalls": 8,
"intentionalWalks": 0,
"hits": 5,
"hitByPitch": 0,
"atBats": 52,
"obp": ".217",
"caughtStealing": 0,
"stolenBases": 1,
"stolenBasePercentage": "1.000",
"numberOfPitches": 262,
"era": "1.08",
"inningsPitched": "16.2",
"wins": 1,
"losses": 0,
"saves": 0,
"saveOpportunities": 0,
"holds": 2,
"blownSaves": 0,
"earnedRuns": 2,
"whip": "0.78",
"battersFaced": 61,
"outs": 50,
"gamesPitched": 14,
"completeGames": 0,
"shutouts": 0,
"pitchesThrown": 262,
"balls": 104,
"strikes": 158,
"strikePercentage": ".600",
"hitBatsmen": 0,
"balks": 0,
"wildPitches": 4,
"pickoffs": 0,
"groundOutsToAirouts": "1.27",
"rbi": 0,
"winPercentage": "1.000",
"pitchesPerInning": "15.72",
"gamesFinished": 3,
"strikeoutWalkRatio": "1.75",
"strikeoutsPer9Inn": "7.56",
"walksPer9Inn": "4.32",
"hitsPer9Inn": "2.70",
"runsScoredPer9": "1.08",
"homeRunsPer9": "0.54",
"inheritedRunners": 6,
"inheritedRunnersScored": 2,
"catchersInterference": 0,
"sacBunts": 1,
"sacFlies": 0,
"passedBall": 0
},
"fielding": {
"caughtStealing": 0,
"stolenBases": 0,
"stolenBasePercentage": ".---",
"assists": 1,
"putOuts": 2,
"errors": 0,
"chances": 3,
"fielding": "1.000",
"passedBall": 0,
"pickoffs": 0
}
},
"gameStatus": {
"isCurrentBatter": false,
"isCurrentPitcher": false,
"isOnBench": true,
"isSubstitute": false
}
},
{ ... },
},
"batters": [
641313,
660162,
547989,
571718,
641553,
544725,
683734,
657757,
571740,
664874,
656302,
656629,
676051,
676979,
521230,
614179,
641582
],
"pitchers": [
656302,
656629,
676051,
676979,
521230,
614179,
641582
],
"bench": [
669394,
641470,
664901
],
"bullpen": [
621114,
605240,
608337,
572971,
458681,
607074
],
"battingOrder": [
641313,
660162,
547989,
571718,
641553,
544725,
683734,
571740,
664874
],
"info": [
{
"title": "BATTING",
"fieldList": [
{
"label": "2B",
"value": "Zavala (2, Watkins)."
},
{
"label": "HR",
"value": "Vaughn 2 (10, 4th inning off Watkins, 0 on, 2 out, 6th inning off Sulser, 2 on, 1 out); Engel (5, 10th inning off Wells, T, 2 on, 2 out)."
},
{
"label": "TB",
"value": "Abreu, J; Anderson, Ti; Engel 5; García; Vaughn 8; Zavala 2."
},
{
"label": "RBI",
"value": "Engel 3 (11); Vaughn 4 (26)."
},
{
"label": "2-out RBI",
"value": "Engel 3; Vaughn."
},
{
"label": "Runners left in scoring position, 2 out",
"value": "Goodwin 2."
},
{
"label": "SAC",
"value": "García."
},
{
"label": "Team RISP",
"value": "2-for-7."
},
{
"label": "Team LOB",
"value": "6."
}
]
},
{
"title": "BASERUNNING",
"fieldList": [
{
"label": "CS",
"value": "Engel (1, 3rd base by Watkins/Severino)."
},
{
"label": "PO",
"value": "Engel (2nd base by Watkins)."
}
]
},
{
"title": "FIELDING",
"fieldList": [
{
"label": "E",
"value": "Zavala (1, throw)."
}
]
}
],
"note": []
},
"home": {
"team": {
"springLeague": {
"id": 115,
"name": "Grapefruit League",
"abbreviation": "GL"
},
"allStarStatus": "N",
"id": 110,
"name": "Baltimore Orioles",
"season": 2021,
"venue": {
"id": 2,
"name": "Oriole Park at Camden Yards"
},
"springVenue": {
"id": 2508
},
"teamCode": "bal",
"fileCode": "bal",
"abbreviation": "BAL",
"teamName": "Orioles",
"locationName": "Baltimore",
"firstYearOfPlay": "1901",
"league": {
"id": 103,
"name": "American League"
},
"division": {
"id": 201,
"name": "American League East"
},
"sport": {
"id": 1,
"name": "Major League Baseball"
},
"shortName": "Baltimore",
"record": {
"gamesPlayed": 89,
"wildCardGamesBack": "-",
"leagueGamesBack": "-",
"springLeagueGamesBack": "-",
"sportGamesBack": "-",
"divisionGamesBack": "-",
"conferenceGamesBack": "-",
"leagueRecord": {
"wins": 28,
"losses": 61,
"ties": 0,
"pct": ".315"
},
"records": [],
"divisionLeader": false,
"wins": 28,
"losses": 61,
"winningPercentage": ".315"
},
"franchiseName": "Baltimore",
"clubName": "Orioles",
"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/games-playbyplay
requires authentication
Get baseball game playbyplay information.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/mlb/games-playbyplay'
params = {
'gamePk': '633282',
}
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/games-playbyplay';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'gamePk' => '633282',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/mlb/games-playbyplay"
);
const params = {
"gamePk": "633282",
};
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/games-playbyplay?gamePk=633282" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": [
{
"result": {
"type": "atBat",
"event": "Flyout",
"eventType": "field_out",
"description": "Tim Anderson flies out to right fielder Austin Hays.",
"rbi": 0,
"awayScore": 0,
"homeScore": 0,
"isOut": true
},
"about": {
"atBatIndex": 0,
"halfInning": "top",
"isTopInning": true,
"inning": 1,
"startTime": "2021-07-11T17:06:43.879Z",
"endTime": "2021-07-11T17:07:08.386Z",
"isComplete": true,
"isScoringPlay": false,
"hasReview": false,
"hasOut": true,
"captivatingIndex": 0
},
"count": {
"balls": 1,
"strikes": 0,
"outs": 1
},
"matchup": {
"batter": {
"id": 641313,
"fullName": "Tim Anderson"
},
"batSide": {
"code": "R",
"description": "Right"
},
"pitcher": {
"id": 657093,
"fullName": "Spenser Watkins"
},
"pitchHand": {
"code": "R",
"description": "Right"
},
"batterHotColdZones": [],
"pitcherHotColdZones": [],
"splits": {
"batter": "vs_RHP",
"pitcher": "vs_RHB",
"menOnBase": "Empty"
}
},
"pitchIndex": [
3,
4
],
"actionIndex": [
0,
1,
2
],
"runnerIndex": [
0
],
"runners": [
{
"movement": {
"originBase": null,
"start": null,
"end": null,
"outBase": "1B",
"isOut": true,
"outNumber": 1
},
"details": {
"event": "Flyout",
"eventType": "field_out",
"movementReason": null,
"runner": {
"id": 641313,
"fullName": "Tim Anderson"
},
"responsiblePitcher": null,
"isScoringEvent": false,
"rbi": false,
"earned": false,
"teamUnearned": false,
"playIndex": 4
},
"credits": [
{
"player": {
"id": 669720
},
"position": {
"code": "9",
"name": "Outfielder",
"type": "Outfielder",
"abbreviation": "RF"
},
"credit": "f_putout"
}
]
}
],
"playEvents": [
{
"details": {
"description": "Status Change - Pre-Game",
"event": "Game Advisory",
"eventType": "game_advisory",
"awayScore": 0,
"homeScore": 0,
"isScoringPlay": false,
"isOut": false,
"hasReview": false
},
"count": {
"balls": 0,
"strikes": 0,
"outs": 0
},
"index": 0,
"startTime": "2021-07-11T15:44:37.970Z",
"endTime": "2021-07-11T16:44:02.445Z",
"isPitch": false,
"type": "action",
"player": {
"id": 641313
}
},
{
"details": {
"description": "Status Change - Warmup",
"event": "Game Advisory",
"eventType": "game_advisory",
"awayScore": 0,
"homeScore": 0,
"isScoringPlay": false,
"isOut": false,
"hasReview": false
},
"count": {
"balls": 0,
"strikes": 0,
"outs": 0
},
"index": 1,
"startTime": "2021-07-11T16:44:02.445Z",
"endTime": "2021-07-11T17:05:06.480Z",
"isPitch": false,
"type": "action",
"player": {
"id": 641313
}
},
{
"details": {
"description": "Status Change - In Progress",
"event": "Game Advisory",
"eventType": "game_advisory",
"awayScore": 0,
"homeScore": 0,
"isScoringPlay": false,
"isOut": false,
"hasReview": false
},
"count": {
"balls": 0,
"strikes": 0,
"outs": 0
},
"index": 2,
"startTime": "2021-07-11T17:05:06.480Z",
"endTime": "2021-07-11T17:06:46.187Z",
"isPitch": false,
"type": "action",
"player": {
"id": 641313
}
},
{
"details": {
"call": {
"code": "B",
"description": "Ball"
},
"description": "Ball",
"code": "B",
"ballColor": "rgba(39, 161, 39, 1.0)",
"trailColor": "rgba(188, 0, 33, 1.0)",
"isInPlay": false,
"isStrike": false,
"isBall": true,
"type": {
"code": "FF",
"description": "Four-Seam Fastball"
},
"isOut": false,
"hasReview": false
},
"count": {
"balls": 1,
"strikes": 0,
"outs": 0
},
"pitchData": {
"startSpeed": 91.2,
"endSpeed": 83,
"strikeZoneTop": 3.40999999999662,
"strikeZoneBottom": 1.5949440880005,
"coordinates": {
"aY": 29.99485647835065,
"aZ": -14.188669282525067,
"pfxX": -0.23275926979375328,
"pfxZ": 10.119957913784841,
"pX": -0.8404390482023597,
"pZ": 3.5539286414226545,
"vX0": 0.23585784006349836,
"vY0": -132.84404166305208,
"vZ0": -4.391249208564353,
"x": 149.04,
"y": 142.82,
"x0": -0.900379505009517,
"y0": 50.00158299770269,
"z0": 6.2688366315464625,
"aX": -0.4136018115942549
},
"breaks": {
"breakAngle": 1.2,
"breakLength": 3.6,
"breakY": 24,
"breakVertical": -15.5,
"breakVerticalInduced": 17.5,
"breakHorizontal": 0.4,
"spinRate": 2176,
"spinDirection": 188
},
"zone": 11,
"typeConfidence": 0.92,
"plateTime": 0.4132325218665098,
"extension": 6.385069523352935
},
"index": 3,
"playId": "87340bd5-da0a-4ca0-9ece-17adb65967b8",
"pitchNumber": 1,
"startTime": "2021-07-11T17:06:46.187Z",
"endTime": "2021-07-11T17:06:50.197Z",
"isPitch": true,
"type": "pitch"
},
{
"details": {
"call": {
"code": "X",
"description": "In play, out(s)"
},
"description": "In play, out(s)",
"code": "X",
"ballColor": "rgba(26, 86, 190, 1.0)",
"trailColor": "rgba(188, 0, 33, 1.0)",
"isInPlay": true,
"isStrike": false,
"isBall": false,
"type": {
"code": "FF",
"description": "Four-Seam Fastball"
},
"isOut": true,
"hasReview": false
},
"count": {
"balls": 1,
"strikes": 0,
"outs": 0
},
"pitchData": {
"startSpeed": 91.6,
"endSpeed": 82.9,
"strikeZoneTop": 3.411,
"strikeZoneBottom": 1.565,
"coordinates": {
"aY": 31.674777114213374,
"aZ": -13.747835784020623,
"pfxX": -0.3926811158439465,
"pfxZ": 10.38313783739772,
"pX": -0.4738551978738176,
"pZ": 2.535457568165602,
"vX0": 1.211448304759197,
"vY0": -133.1441610441423,
"vZ0": -6.912802115526949,
"x": 135.06,
"y": 170.32,
"x0": -0.8860750373551041,
"y0": 50.00458439281981,
"z0": 6.1829605164761166,
"aX": -0.6971762080581045
},
"breaks": {
"breakAngle": 1.2,
"breakLength": 3.6,
"breakY": 24,
"breakVertical": -15.6,
"breakVerticalInduced": 17.3,
"breakHorizontal": 0.4,
"spinRate": 2178,
"spinDirection": 189
},
"zone": 4,
"typeConfidence": 0.93,
"plateTime": 0.41322251347201533,
"extension": 6.394053303916425
},
"hitData": {
"launchSpeed": 93.5,
"launchAngle": 36,
"totalDistance": 325,
"trajectory": "fly_ball",
"hardness": "medium",
"location": "9",
"coordinates": {
"coordX": 181.16,
"coordY": 80.51
}
},
"index": 4,
"playId": "445c6e78-ce7e-4a48-8b12-0aa974317530",
"pitchNumber": 2,
"startTime": "2021-07-11T17:07:00.736Z",
"endTime": "2021-07-11T17:07:08.386Z",
"isPitch": true,
"type": "pitch"
}
],
"playEndTime": "2021-07-11T17:07:08.386Z",
"atBatIndex": 0
},
{ ... }
]
}
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/games-matrix
requires authentication
Get baseball game matrix information.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/mlb/games-matrix'
params = {
'gamePk': '633282',
}
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/games-matrix';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'gamePk' => '633282',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/mlb/games-matrix"
);
const params = {
"gamePk": "633282",
};
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/games-matrix?gamePk=633282" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": {
"game": {
"gamePk": 633282,
"gameGuid": "151b2de5-9939-4305-849c-41b8a806d5a1",
"gameType": "R",
"season": "2021",
"gameDate": "2021-07-11T17:05:00Z",
"officialDate": "2021-07-11",
"status": {
"abstractGameState": "Final",
"codedGameState": "F",
"detailedState": "Final",
"statusCode": "F",
"startTimeTBD": false,
"abstractGameCode": "F"
},
"teams": {
"away": {
"leagueRecord": {
"wins": 54,
"losses": 35,
"pct": ".607"
},
"score": 7,
"team": {
"id": 145,
"name": "Chicago White Sox"
},
"isWinner": true,
"probablePitcher": {
"id": 656302,
"fullName": "Dylan Cease"
},
"splitSquad": false,
"seriesNumber": 29
},
"home": {
"leagueRecord": {
"wins": 28,
"losses": 61,
"pct": ".315"
},
"score": 5,
"team": {
"id": 110,
"name": "Baltimore Orioles"
},
"isWinner": false,
"probablePitcher": {
"id": 657093,
"fullName": "Spenser Watkins"
},
"splitSquad": false,
"seriesNumber": 29
}
},
"venue": {
"id": 2,
"name": "Oriole Park at Camden Yards"
},
"content": [],
"isTie": false,
"gameNumber": 1,
"publicFacing": true,
"doubleHeader": "N",
"gamedayType": "P",
"tiebreaker": "N",
"calendarEventID": "14-633282-2021-07-11",
"seasonDisplay": "2021",
"dayNight": "day",
"scheduledInnings": 9,
"reverseHomeAwayStatus": false,
"inningBreakLength": 120,
"gamesInSeries": 3,
"seriesGameNumber": 3,
"seriesDescription": "Regular Season",
"recordSource": "S",
"ifNecessary": "N",
"ifNecessaryDescription": "Normal Game",
"gameId": "2021/07/11/chamlb-balmlb-1"
},
"leftFieldSacFlyProbability": [],
"centerFieldSacFlyProbability": [],
"rightFieldSacFlyProbability": [],
"awayWinProbability": 100,
"homeWinProbability": 0
}
}
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/games-timestamps
requires authentication
Get baseball game timestamps information.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/mlb/games-timestamps'
params = {
'gamePk': '633282',
}
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/games-timestamps';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'gamePk' => '633282',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/mlb/games-timestamps"
);
const params = {
"gamePk": "633282",
};
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/games-timestamps?gamePk=633282" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": [
"20210711_154437",
"20210711_164402",
"20210711_170506",
"20210711_170643",
"20210711_170646",
"20210711_170700",
"20210711_170708",
"20210711_170713",
"20210711_170737",
...
]
}
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/games-probability
requires authentication
Get baseball game probabilities information.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/mlb/games-probability'
params = {
'gamePk': '633282',
}
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/games-probability';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'gamePk' => '633282',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/mlb/games-probability"
);
const params = {
"gamePk": "633282",
};
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/games-probability?gamePk=633282" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": [
{
"result": {
"type": "atBat",
"event": "Flyout",
"eventType": "field_out",
"description": "Tim Anderson flies out to right fielder Austin Hays.",
"rbi": 0,
"awayScore": 0,
"homeScore": 0,
"isOut": true
},
"about": {
"atBatIndex": 0,
"halfInning": "top",
"isTopInning": true,
"inning": 1,
"startTime": "2021-07-11T17:06:43.879Z",
"endTime": "2021-07-11T17:07:08.386Z",
"isComplete": true,
"isScoringPlay": false,
"hasReview": false,
"hasOut": true,
"captivatingIndex": 0
},
"count": {
"balls": 1,
"strikes": 0,
"outs": 1
},
"matchup": {
"batter": {
"id": 641313,
"fullName": "Tim Anderson"
},
"batSide": {
"code": "R",
"description": "Right"
},
"pitcher": {
"id": 657093,
"fullName": "Spenser Watkins"
},
"pitchHand": {
"code": "R",
"description": "Right"
},
"batterHotColdZones": [],
"pitcherHotColdZones": [],
"splits": {
"batter": "vs_RHP",
"pitcher": "vs_RHB",
"menOnBase": "Empty"
}
},
"pitchIndex": [
3,
4
],
"actionIndex": [
0,
1,
2
],
"runnerIndex": [
0
],
"runners": [
{
"movement": {
"originBase": null,
"start": null,
"end": null,
"outBase": "1B",
"isOut": true,
"outNumber": 1
},
"details": {
"event": "Flyout",
"eventType": "field_out",
"movementReason": null,
"runner": {
"id": 641313,
"fullName": "Tim Anderson"
},
"responsiblePitcher": null,
"isScoringEvent": false,
"rbi": false,
"earned": false,
"teamUnearned": false,
"playIndex": 4
},
"credits": [
{
"player": {
"id": 669720
},
"position": {
"code": "9",
"name": "Outfielder",
"type": "Outfielder",
"abbreviation": "RF"
},
"credit": "f_putout"
}
]
}
],
"playEvents": [
{
"details": {
"description": "Status Change - Pre-Game",
"event": "Game Advisory",
"eventType": "game_advisory",
"awayScore": 0,
"homeScore": 0,
"isScoringPlay": false,
"isOut": false,
"hasReview": false
},
"count": {
"balls": 0,
"strikes": 0,
"outs": 0
},
"preCount": {
"balls": 0,
"strikes": 0,
"outs": 0
},
"index": 0,
"startTime": "2021-07-11T15:44:37.970Z",
"endTime": "2021-07-11T16:44:02.445Z",
"isPitch": false,
"type": "action",
"player": {
"id": 641313
},
"contextMetrics": []
},
{
"details": {
"description": "Status Change - Warmup",
"event": "Game Advisory",
"eventType": "game_advisory",
"awayScore": 0,
"homeScore": 0,
"isScoringPlay": false,
"isOut": false,
"hasReview": false
},
"count": {
"balls": 0,
"strikes": 0,
"outs": 0
},
"preCount": {
"balls": 0,
"strikes": 0,
"outs": 0
},
"index": 1,
"startTime": "2021-07-11T16:44:02.445Z",
"endTime": "2021-07-11T17:05:06.480Z",
"isPitch": false,
"type": "action",
"player": {
"id": 641313
},
"contextMetrics": []
},
{
"details": {
"description": "Status Change - In Progress",
"event": "Game Advisory",
"eventType": "game_advisory",
"awayScore": 0,
"homeScore": 0,
"isScoringPlay": false,
"isOut": false,
"hasReview": false
},
"count": {
"balls": 0,
"strikes": 0,
"outs": 0
},
"preCount": {
"balls": 0,
"strikes": 0,
"outs": 0
},
"index": 2,
"startTime": "2021-07-11T17:05:06.480Z",
"endTime": "2021-07-11T17:06:46.187Z",
"isPitch": false,
"type": "action",
"player": {
"id": 641313
},
"contextMetrics": []
},
{
"details": {
"call": {
"code": "B",
"description": "Ball"
},
"description": "Ball",
"code": "B",
"ballColor": "rgba(39, 161, 39, 1.0)",
"trailColor": "rgba(188, 0, 33, 1.0)",
"isInPlay": false,
"isStrike": false,
"isBall": true,
"type": {
"code": "FF",
"description": "Four-Seam Fastball"
},
"isOut": false,
"hasReview": false
},
"count": {
"balls": 1,
"strikes": 0,
"outs": 0
},
"preCount": {
"balls": 0,
"strikes": 0,
"outs": 0
},
"pitchData": {
"startSpeed": 91.2,
"endSpeed": 83,
"strikeZoneTop": 3.40999999999662,
"strikeZoneBottom": 1.5949440880005,
"coordinates": {
"aY": 29.99485647835065,
"aZ": -14.188669282525067,
"pfxX": -0.23275926979375328,
"pfxZ": 10.119957913784841,
"pX": -0.8404390482023597,
"pZ": 3.5539286414226545,
"vX0": 0.23585784006349836,
"vY0": -132.84404166305208,
"vZ0": -4.391249208564353,
"x": 149.04,
"y": 142.82,
"x0": -0.900379505009517,
"y0": 50.00158299770269,
"z0": 6.2688366315464625,
"aX": -0.4136018115942549
},
"breaks": {
"breakAngle": 1.2,
"breakLength": 3.6,
"breakY": 24,
"breakVertical": -15.5,
"breakVerticalInduced": 17.5,
"breakHorizontal": 0.4,
"spinRate": 2176,
"spinDirection": 188
},
"zone": 11,
"typeConfidence": 0.92,
"plateTime": 0.4132325218665098,
"extension": 6.385069523352935
},
"index": 3,
"playId": "87340bd5-da0a-4ca0-9ece-17adb65967b8",
"pitchNumber": 1,
"startTime": "2021-07-11T17:06:46.187Z",
"endTime": "2021-07-11T17:06:50.197Z",
"isPitch": true,
"type": "pitch",
"defense": {
"pitcher": {
"id": 657093,
"pitchHand": {
"code": "R",
"description": "Right"
}
},
"catcher": {
"id": 600474
},
"first": {
"id": 663624
},
"second": {
"id": 642736
},
"third": {
"id": 642721
},
"shortstop": {
"id": 602104
},
"left": {
"id": 663630
},
"center": {
"id": 656775
},
"right": {
"id": 669720
}
},
"offense": {
"batter": {
"id": 641313,
"batSide": {
"code": "R",
"description": "Right"
}
},
"batterPosition": {
"code": "6",
"name": "Shortstop",
"type": "Infielder",
"abbreviation": "SS"
}
},
"officials": [
{
"official": {
"id": 598411
},
"officialType": "Home Plate"
},
{
"official": {
"id": 427235
},
"officialType": "First Base"
},
{
"official": {
"id": 484499
},
"officialType": "Second Base"
},
{
"official": {
"id": 483912
},
"officialType": "Third Base"
}
],
"contextMetrics": []
},
{
"details": {
"call": {
"code": "X",
"description": "In play, out(s)"
},
"description": "In play, out(s)",
"code": "X",
"ballColor": "rgba(26, 86, 190, 1.0)",
"trailColor": "rgba(188, 0, 33, 1.0)",
"isInPlay": true,
"isStrike": false,
"isBall": false,
"type": {
"code": "FF",
"description": "Four-Seam Fastball"
},
"isOut": true,
"hasReview": false
},
"count": {
"balls": 1,
"strikes": 0,
"outs": 0
},
"preCount": {
"balls": 1,
"strikes": 0,
"outs": 0
},
"pitchData": {
"startSpeed": 91.6,
"endSpeed": 82.9,
"strikeZoneTop": 3.411,
"strikeZoneBottom": 1.565,
"coordinates": {
"aY": 31.674777114213374,
"aZ": -13.747835784020623,
"pfxX": -0.3926811158439465,
"pfxZ": 10.38313783739772,
"pX": -0.4738551978738176,
"pZ": 2.535457568165602,
"vX0": 1.211448304759197,
"vY0": -133.1441610441423,
"vZ0": -6.912802115526949,
"x": 135.06,
"y": 170.32,
"x0": -0.8860750373551041,
"y0": 50.00458439281981,
"z0": 6.1829605164761166,
"aX": -0.6971762080581045
},
"breaks": {
"breakAngle": 1.2,
"breakLength": 3.6,
"breakY": 24,
"breakVertical": -15.6,
"breakVerticalInduced": 17.3,
"breakHorizontal": 0.4,
"spinRate": 2178,
"spinDirection": 189
},
"zone": 4,
"typeConfidence": 0.93,
"plateTime": 0.41322251347201533,
"extension": 6.394053303916425
},
"hitData": {
"launchSpeed": 93.5,
"launchAngle": 36,
"totalDistance": 325,
"trajectory": "fly_ball",
"hardness": "medium",
"location": "9",
"coordinates": {
"coordX": 181.16,
"coordY": 80.51
}
},
"index": 4,
"playId": "445c6e78-ce7e-4a48-8b12-0aa974317530",
"pitchNumber": 2,
"startTime": "2021-07-11T17:07:00.736Z",
"endTime": "2021-07-11T17:07:08.386Z",
"isPitch": true,
"type": "pitch",
"defense": {
"pitcher": {
"id": 657093,
"pitchHand": {
"code": "R",
"description": "Right"
}
},
"catcher": {
"id": 600474
},
"first": {
"id": 663624
},
"second": {
"id": 642736
},
"third": {
"id": 642721
},
"shortstop": {
"id": 602104
},
"left": {
"id": 663630
},
"center": {
"id": 656775
},
"right": {
"id": 669720
}
},
"offense": {
"batter": {
"id": 641313,
"batSide": {
"code": "R",
"description": "Right"
}
},
"batterPosition": {
"code": "6",
"name": "Shortstop",
"type": "Infielder",
"abbreviation": "SS"
}
},
"officials": [
{
"official": {
"id": 598411
},
"officialType": "Home Plate"
},
{
"official": {
"id": 427235
},
"officialType": "First Base"
},
{
"official": {
"id": 484499
},
"officialType": "Second Base"
},
{
"official": {
"id": 483912
},
"officialType": "Third Base"
}
],
"contextMetrics": []
}
],
"credits": [
{
"player": {
"id": 641313
},
"credit": "b_ab"
},
{
"player": {
"id": 657093
},
"credit": "p_ab"
},
{
"player": {
"id": 641313
},
"credit": "b_pa"
},
{
"player": {
"id": 657093
},
"credit": "p_pa"
}
],
"flags": [],
"homeTeamWinProbability": 52.2,
"awayTeamWinProbability": 47.8,
"homeTeamWinProbabilityAdded": 2.200000000000003,
"contextMetrics": [],
"playEndTime": "2021-07-11T17:07:08.386Z",
"atBatIndex": 0
},
{ ... }
]
}
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/games-diffPatch
requires authentication
Get baseball game diffPatch information.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/mlb/games-diffPatch'
params = {
'gamePk': '633282',
}
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/games-diffPatch';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'gamePk' => '633282',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/mlb/games-diffPatch"
);
const params = {
"gamePk": "633282",
};
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/games-diffPatch?gamePk=633282" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"wait": 10,
"timeStamp": "20210711_205415",
"gameEvents": [
"field_out",
"game_finished"
],
"logicalEvents": [
"midInning",
"countChange",
"count10",
"newLeftHandedHit",
"basesEmpty",
"gameStateChangeToGameOver"
]
},
"body": {
"game": {
"pk": 633282,
"type": "R",
"doubleHeader": "N",
"id": "2021/07/11/chamlb-balmlb-1",
"gamedayType": "P",
"tiebreaker": "N",
"gameNumber": 1,
"calendarEventID": "14-633282-2021-07-11",
"season": "2021",
"seasonDisplay": "2021"
},
"datetime": {
"dateTime": "2021-07-11T17:05:00Z",
"originalDate": "2021-07-11",
"officialDate": "2021-07-11",
"dayNight": "day",
"time": "1:05",
"ampm": "PM"
},
"status": {
{...}
},
"teams": {
{...}
},
"players": {
{...}
}
"venue": {
{...}
},
"officialVenue": {
{...}
},
"weather": {
{...}
},
"gameInfo": {
{...}
},
"review": {
{...}
},
"flags": {
{...}
},
{ ... }
}
}
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.
Hockey (NHL) Endpoints
The NHL API offers essential endpoints for retrieving hockey schedules, current standings, and live scores. These endpoints enable developers and fans to access up-to-date information about NHL games, team rankings, and ongoing match results, enhancing the experience of following hockey events and statistics.
General
General endpoints include essential features such as accessing the league schedule, current standings across teams, and live scores of ongoing games.
GET /v1/schedule
requires authentication
Get hockey schedule information.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/nhl/schedule'
params = {
'date': '2024-01-25',
}
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/nhl/schedule';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'date' => '2024-01-25',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/nhl/schedule"
);
const params = {
"date": "2024-01-25",
};
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/nhl/schedule?date=2024-01-25" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"nextStartDate": "2024-02-01",
"numberOfGames": 35,
"playoffEndDate": "2024-06-18",
"preSeasonStartDate": "2023-09-23",
"previousStartDate": "2024-01-18",
"regularSeasonEndDate": "2024-04-18",
"regularSeasonStartDate": "2023-10-10"
},
"body": [
{
"date": "2024-01-25",
"dayAbbrev": "THU",
"numberOfGames": 9,
"games": [
{
"id": 2023020747,
"season": 20232024,
"gameType": 2,
"venue": {
"default": "Little Caesars Arena"
},
"neutralSite": false,
"startTimeUTC": "2024-01-26T00:00:00Z",
"easternUTCOffset": "-05:00",
"venueUTCOffset": "-05:00",
"venueTimezone": "America/Detroit",
"gameState": "FUT",
"gameScheduleState": "OK",
"tvBroadcasts": [
{
"id": 287,
"market": "N",
"countryCode": "CA",
"network": "SNE",
"sequenceNumber": 26
},
{
"id": 288,
"market": "N",
"countryCode": "CA",
"network": "SNO",
"sequenceNumber": 27
},
{
"id": 290,
"market": "N",
"countryCode": "CA",
"network": "SNP",
"sequenceNumber": 29
},
{
"id": 322,
"market": "A",
"countryCode": "US",
"network": "NBCSP",
"sequenceNumber": 59
},
{
"id": 351,
"market": "H",
"countryCode": "US",
"network": "BSDET",
"sequenceNumber": 51
}
],
"awayTeam": {
"id": 4,
"placeName": {
"default": "Philadelphia",
"fr": "Philadelphie"
},
"abbrev": "PHI",
"logo": "https://assets.nhle.com/logos/nhl/svg/PHI_light.svg",
"darkLogo": "https://assets.nhle.com/logos/nhl/svg/PHI_dark.svg",
"awaySplitSquad": false,
"radioLink": "https://d2igy0yla8zi0u.cloudfront.net/PHI/20232024/PHI-radio.m3u8",
"odds": [
{
"providerId": 2,
"value": "163.0000"
},
{
"providerId": 3,
"value": "4.1000"
},
{
"providerId": 9,
"value": "-105.0000"
},
{
"providerId": 7,
"value": "-102.0000"
},
{
"providerId": 6,
"value": "2.5400"
}
]
},
"homeTeam": {
"id": 17,
"placeName": {
"default": "Detroit"
},
"abbrev": "DET",
"logo": "https://assets.nhle.com/logos/nhl/svg/DET_light.svg",
"darkLogo": "https://assets.nhle.com/logos/nhl/svg/DET_dark.svg",
"homeSplitSquad": false,
"radioLink": "https://d2igy0yla8zi0u.cloudfront.net/DET/20232024/DET-radio.m3u8",
"odds": [
{
"providerId": 2,
"value": "133.0000"
},
{
"providerId": 3,
"value": "4.1000"
},
{
"providerId": 9,
"value": "-115.0000"
},
{
"providerId": 7,
"value": "-118.0000"
},
{
"providerId": 6,
"value": "2.3200"
}
]
},
"periodDescriptor": {
"number": 1,
"periodType": "REG"
},
"ticketsLink": "https://www.ticketmaster.com/event/08005ED5C3A83C6F?brand=nhl&wt.mc_id=NHL_LEAGUE_DET_SCHED_PAGE_LINK_GM25&utm_source=nhl.com&utm_medium=client&utm_campaign=NHL_LEAGUE_DET&utm_content=SCHED_PAGE_LINK_GM25",
"gameCenterLink": "/gamecenter/phi-vs-det/2024/01/25/2023020747"
},
{
"id": 2023020748,
"season": 20232024,
"gameType": 2,
"venue": {
"default": "Centre Bell"
},
"neutralSite": false,
"startTimeUTC": "2024-01-26T00:00:00Z",
"easternUTCOffset": "-05:00",
"venueUTCOffset": "-05:00",
"venueTimezone": "America/Montreal",
"gameState": "FUT",
"gameScheduleState": "OK",
"tvBroadcasts": [
{
"id": 33,
"market": "H",
"countryCode": "CA",
"network": "RDS",
"sequenceNumber": 66
},
{
"id": 131,
"market": "H",
"countryCode": "CA",
"network": "TSN2",
"sequenceNumber": 50
},
{
"id": 409,
"market": "A",
"countryCode": "US",
"network": "MSGSN",
"sequenceNumber": 88
}
],
"awayTeam": {
"id": 2,
"placeName": {
"default": "Islanders"
},
"abbrev": "NYI",
"logo": "https://assets.nhle.com/logos/nhl/svg/NYI_light.svg",
"darkLogo": "https://assets.nhle.com/logos/nhl/svg/NYI_dark.svg",
"awaySplitSquad": false,
"radioLink": "https://d2igy0yla8zi0u.cloudfront.net/NYI/20232024/NYI-radio.m3u8",
"odds": [
{
"providerId": 2,
"value": "107.0000"
},
{
"providerId": 3,
"value": "4.0100"
},
{
"providerId": 9,
"value": "-148.0000"
},
{
"providerId": 7,
"value": "-148.0000"
},
{
"providerId": 6,
"value": "2.0800"
}
]
},
"homeTeam": {
"id": 8,
"placeName": {
"default": "Montréal"
},
"abbrev": "MTL",
"logo": "https://assets.nhle.com/logos/nhl/svg/MTL_light.svg",
"darkLogo": "https://assets.nhle.com/logos/nhl/svg/MTL_dark.svg",
"homeSplitSquad": false,
"radioLink": "https://d2igy0yla8zi0u.cloudfront.net/MTL/20232024/MTL-radio.m3u8",
"odds": [
{
"providerId": 2,
"value": "205.0000"
},
{
"providerId": 3,
"value": "4.0100"
},
{
"providerId": 9,
"value": "124.0000"
},
{
"providerId": 7,
"value": "125.0000"
},
{
"providerId": 6,
"value": "2.8800"
}
]
},
"periodDescriptor": {
"number": 1,
"periodType": "REG"
},
"ticketsLink": "https://www.ticketmaster.ca/event/31005EF47A7D0EDA?lang=en-ca&brand=nhl&wt.mc_id=NHL_LEAGUE_MTL_SCHED_PAGE_LINK_GM25&utm_source=nhl.com&utm_medium=client&utm_campaign=NHL_LEAGUE_MTL&utm_content=SCHED_PAGE_LINK_GM25",
"gameCenterLink": "/gamecenter/nyi-vs-mtl/2024/01/25/2023020748"
},
{
"id": 2023020749,
"season": 20232024,
"gameType": 2,
"venue": {
"default": "Canadian Tire Centre",
"fr": "Centre Canadian Tire"
},
"neutralSite": false,
"startTimeUTC": "2024-01-26T00:00:00Z",
"easternUTCOffset": "-05:00",
"venueUTCOffset": "-05:00",
"venueTimezone": "US/Eastern",
"gameState": "FUT",
"gameScheduleState": "OK",
"tvBroadcasts": [
{
"id": 31,
"market": "A",
"countryCode": "US",
"network": "NESN",
"sequenceNumber": 78
},
{
"id": 230,
"market": "H",
"countryCode": "CA",
"network": "RDS2",
"sequenceNumber": 71
},
{
"id": 294,
"market": "H",
"countryCode": "CA",
"network": "TSN5",
"sequenceNumber": 80
}
],
"awayTeam": {
"id": 6,
"placeName": {
"default": "Boston"
},
"abbrev": "BOS",
"logo": "https://assets.nhle.com/logos/nhl/svg/BOS_light.svg",
"darkLogo": "https://assets.nhle.com/logos/nhl/svg/BOS_dark.svg",
"awaySplitSquad": false,
"radioLink": "https://d2igy0yla8zi0u.cloudfront.net/BOS/20232024/BOS-radio.m3u8",
"odds": [
{
"providerId": 2,
"value": "112.0000"
},
{
"providerId": 3,
"value": "4.2900"
},
{
"providerId": 9,
"value": "-135.0000"
},
{
"providerId": 7,
"value": "-137.0000"
},
{
"providerId": 6,
"value": "2.0200"
}
]
},
"homeTeam": {
"id": 9,
"placeName": {
"default": "Ottawa"
},
"abbrev": "OTT",
"logo": "https://assets.nhle.com/logos/nhl/svg/OTT_light.svg",
"darkLogo": "https://assets.nhle.com/logos/nhl/svg/OTT_dark.svg",
"homeSplitSquad": false,
"radioLink": "https://d2igy0yla8zi0u.cloudfront.net/OTT/20232024/OTT-radio.m3u8",
"odds": [
{
"providerId": 2,
"value": "188.0000"
},
{
"providerId": 3,
"value": "4.2900"
},
{
"providerId": 9,
"value": "114.0000"
},
{
"providerId": 7,
"value": "116.0000"
},
{
"providerId": 6,
"value": "2.7800"
}
]
},
"periodDescriptor": {
"number": 1,
"periodType": "REG"
},
"ticketsLink": "https://www.nhl.com/senators/tickets/",
"gameCenterLink": "/gamecenter/bos-vs-ott/2024/01/25/2023020749"
},
{
"id": 2023020750,
"season": 20232024,
"gameType": 2,
"venue": {
"default": "Amalie Arena"
},
"neutralSite": false,
"startTimeUTC": "2024-01-26T00:00:00Z",
"easternUTCOffset": "-05:00",
"venueUTCOffset": "-05:00",
"venueTimezone": "US/Eastern",
"gameState": "FUT",
"gameScheduleState": "OK",
"tvBroadcasts": [
{
"id": 359,
"market": "H",
"countryCode": "US",
"network": "BSSUN",
"sequenceNumber": 86
},
{
"id": 521,
"market": "A",
"countryCode": "US",
"network": "SCRIPPS",
"sequenceNumber": 87
}
],
"awayTeam": {
"id": 53,
"placeName": {
"default": "Arizona"
},
"abbrev": "ARI",
"logo": "https://assets.nhle.com/logos/nhl/svg/ARI_light.svg",
"darkLogo": "https://assets.nhle.com/logos/nhl/svg/ARI_dark.svg",
"awaySplitSquad": false,
"radioLink": "https://d2igy0yla8zi0u.cloudfront.net/ARI/20232024/ARI-radio.m3u8",
"odds": [
{
"providerId": 2,
"value": "300.0000"
},
{
"providerId": 3,
"value": "4.4700"
},
{
"providerId": 9,
"value": "180.0000"
},
{
"providerId": 7,
"value": "180.0000"
},
{
"providerId": 6,
"value": "3.7500"
}
]
},
"homeTeam": {
"id": 14,
"placeName": {
"default": "Tampa Bay"
},
"abbrev": "TBL",
"logo": "https://assets.nhle.com/logos/nhl/svg/TBL_light.svg",
"darkLogo": "https://assets.nhle.com/logos/nhl/svg/TBL_dark.svg",
"homeSplitSquad": false,
"radioLink": "https://d2igy0yla8zi0u.cloudfront.net/TBL/20232024/TBL-radio.m3u8",
"odds": [
{
"providerId": 2,
"value": "-134.0000"
},
{
"providerId": 3,
"value": "4.4700"
},
{
"providerId": 9,
"value": "-218.0000"
},
{
"providerId": 7,
"value": "-221.0000"
},
{
"providerId": 6,
"value": "1.7200"
}
]
},
"periodDescriptor": {
"number": 1,
"periodType": "REG"
},
"ticketsLink": "https://www.nhl.com/lightning/tickets/",
"gameCenterLink": "/gamecenter/ari-vs-tbl/2024/01/25/2023020750"
},
{
"id": 2023020746,
"season": 20232024,
"gameType": 2,
"venue": {
"default": "PNC Arena"
},
"neutralSite": false,
"startTimeUTC": "2024-01-26T00:30:00Z",
"easternUTCOffset": "-05:00",
"venueUTCOffset": "-05:00",
"venueTimezone": "US/Eastern",
"gameState": "FUT",
"gameScheduleState": "OK",
"tvBroadcasts": [
{
"id": 375,
"market": "H",
"countryCode": "US",
"network": "BSSO",
"sequenceNumber": 70
},
{
"id": 410,
"market": "A",
"countryCode": "US",
"network": "MSGSN2",
"sequenceNumber": 79
}
],
"awayTeam": {
"id": 1,
"placeName": {
"default": "New Jersey"
},
"abbrev": "NJD",
"logo": "https://assets.nhle.com/logos/nhl/svg/NJD_light.svg",
"darkLogo": "https://assets.nhle.com/logos/nhl/svg/NJD_dark.svg",
"awaySplitSquad": false,
"radioLink": "https://d2igy0yla8zi0u.cloudfront.net/NJD/20232024/NJD-radio.m3u8",
"odds": [
{
"providerId": 2,
"value": "205.0000"
},
{
"providerId": 3,
"value": "4.1900"
},
{
"providerId": 9,
"value": "136.0000"
},
{
"providerId": 7,
"value": "136.0000"
},
{
"providerId": 6,
"value": "3.1500"
}
]
},
"homeTeam": {
"id": 12,
"placeName": {
"default": "Carolina",
"fr": "Caroline"
},
"abbrev": "CAR",
"logo": "https://assets.nhle.com/logos/nhl/svg/CAR_light.svg",
"darkLogo": "https://assets.nhle.com/logos/nhl/svg/CAR_dark.svg",
"homeSplitSquad": false,
"radioLink": "https://d2igy0yla8zi0u.cloudfront.net/CAR/20232024/CAR-radio.m3u8",
"odds": [
{
"providerId": 2,
"value": "102.0000"
},
{
"providerId": 3,
"value": "4.1900"
},
{
"providerId": 9,
"value": "-162.0000"
},
{
"providerId": 7,
"value": "-162.0000"
},
{
"providerId": 6,
"value": "1.9200"
}
]
},
"periodDescriptor": [],
"ticketsLink": "https://www.ticketmaster.com/event/2D005EF4A0023F98?brand=nhl&wt.mc_id=NHL_LEAGUE_CAR_SCHED_PAGE_LINK_GM23&utm_source=nhl.com&utm_medium=client&utm_campaign=NHL_LEAGUE_CAR&utm_content=SCHED_PAGE_LINK_GM23",
"gameCenterLink": "/gamecenter/njd-vs-car/2024/01/25/2023020746"
},
{
"id": 2023020751,
"season": 20232024,
"gameType": 2,
"venue": {
"default": "American Airlines Center"
},
"neutralSite": false,
"startTimeUTC": "2024-01-26T01:00:00Z",
"easternUTCOffset": "-05:00",
"venueUTCOffset": "-06:00",
"venueTimezone": "US/Central",
"gameState": "FUT",
"gameScheduleState": "OK",
"tvBroadcasts": [
{
"id": 341,
"market": "A",
"countryCode": "US",
"network": "BSSC",
"sequenceNumber": 84
},
{
"id": 349,
"market": "H",
"countryCode": "US",
"network": "BSSW",
"sequenceNumber": 61
},
{
"id": 365,
"market": "A",
"countryCode": "US",
"network": "BSSD",
"sequenceNumber": 81
}
],
"awayTeam": {
"id": 24,
"placeName": {
"default": "Anaheim"
},
"abbrev": "ANA",
"logo": "https://assets.nhle.com/logos/nhl/svg/ANA_light.svg",
"darkLogo": "https://assets.nhle.com/logos/nhl/svg/ANA_dark.svg",
"awaySplitSquad": false,
"radioLink": "https://d2igy0yla8zi0u.cloudfront.net/ANA/20232024/ANA-radio.m3u8",
"odds": [
{
"providerId": 2,
"value": "390.0000"
},
{
"providerId": 3,
"value": "4.9100"
},
{
"providerId": 9,
"value": "275.0000"
},
{
"providerId": 7,
"value": "267.0000"
},
{
"providerId": 6,
"value": "5.0000"
}
]
},
"homeTeam": {
"id": 25,
"placeName": {
"default": "Dallas"
},
"abbrev": "DAL",
"logo": "https://assets.nhle.com/logos/nhl/svg/DAL_light.svg",
"darkLogo": "https://assets.nhle.com/logos/nhl/svg/DAL_dark.svg",
"homeSplitSquad": false,
"radioLink": "https://d2igy0yla8zi0u.cloudfront.net/DAL/20232024/DAL-radio.m3u8",
"odds": [
{
"providerId": 2,
"value": "-190.0000"
},
{
"providerId": 3,
"value": "4.9100"
},
{
"providerId": 9,
"value": "-345.0000"
},
{
"providerId": 7,
"value": "-340.0000"
},
{
"providerId": 6,
"value": "1.4600"
}
]
},
"periodDescriptor": [],
"ticketsLink": "https://www.ticketmaster.com/event/0C005EDA97201D9D?brand=nhl&wt.mc_id=NHL_LEAGUE_DAL_SCHED_PAGE_LINK_GM25&utm_source=nhl.com&utm_medium=client&utm_campaign=NHL_LEAGUE_DAL&utm_content=SCHED_PAGE_LINK_GM25",
"gameCenterLink": "/gamecenter/ana-vs-dal/2024/01/25/2023020751"
},
{
"id": 2023020752,
"season": 20232024,
"gameType": 2,
"venue": {
"default": "Xcel Energy Center"
},
"neutralSite": false,
"startTimeUTC": "2024-01-26T01:00:00Z",
"easternUTCOffset": "-05:00",
"venueUTCOffset": "-06:00",
"venueTimezone": "US/Central",
"gameState": "FUT",
"gameScheduleState": "OK",
"tvBroadcasts": [
{
"id": 361,
"market": "H",
"countryCode": "US",
"network": "BSN",
"sequenceNumber": 77
},
{
"id": 363,
"market": "H",
"countryCode": "US",
"network": "BSWI",
"sequenceNumber": 90
},
{
"id": 375,
"market": "A",
"countryCode": "US",
"network": "BSSO",
"sequenceNumber": 70
}
],
"awayTeam": {
"id": 18,
"placeName": {
"default": "Nashville"
},
"abbrev": "NSH",
"logo": "https://assets.nhle.com/logos/nhl/svg/NSH_light.svg",
"darkLogo": "https://assets.nhle.com/logos/nhl/svg/NSH_dark.svg",
"awaySplitSquad": false,
"radioLink": "https://d2igy0yla8zi0u.cloudfront.net/NSH/20232024/NSH-radio.m3u8",
"odds": [
{
"providerId": 2,
"value": "165.0000"
},
{
"providerId": 3,
"value": "4.0800"
},
{
"providerId": 9,
"value": "-102.0000"
},
{
"providerId": 7,
"value": "102.0000"
},
{
"providerId": 6,
"value": "2.6600"
}
]
},
"homeTeam": {
"id": 30,
"placeName": {
"default": "Minnesota"
},
"abbrev": "MIN",
"logo": "https://assets.nhle.com/logos/nhl/svg/MIN_light.svg",
"darkLogo": "https://assets.nhle.com/logos/nhl/svg/MIN_dark.svg",
"homeSplitSquad": false,
"radioLink": "https://d2igy0yla8zi0u.cloudfront.net/MIN/20232024/MIN-radio.m3u8",
"odds": [
{
"providerId": 2,
"value": "132.0000"
},
{
"providerId": 3,
"value": "4.0800"
},
{
"providerId": 9,
"value": "-118.0000"
},
{
"providerId": 7,
"value": "-122.0000"
},
{
"providerId": 6,
"value": "2.1800"
}
]
},
"periodDescriptor": [],
"ticketsLink": "https://www.ticketmaster.com/event/06005EDB2597862F?brand=nhl&wt.mc_id=NHL_LEAGUE_MIN_SCHED_PAGE_LINK_GM25&utm_source=nhl.com&utm_medium=client&utm_campaign=NHL_LEAGUE_MIN&utm_content=SCHED_PAGE_LINK_GM25",
"gameCenterLink": "/gamecenter/nsh-vs-min/2024/01/25/2023020752"
},
{
"id": 2023020753,
"season": 20232024,
"gameType": 2,
"venue": {
"default": "Scotiabank Saddledome"
},
"neutralSite": false,
"startTimeUTC": "2024-01-26T02:00:00Z",
"easternUTCOffset": "-05:00",
"venueUTCOffset": "-07:00",
"venueTimezone": "US/Mountain",
"gameState": "FUT",
"gameScheduleState": "OK",
"tvBroadcasts": [
{
"id": 289,
"market": "H",
"countryCode": "CA",
"network": "SNW",
"sequenceNumber": 30
},
{
"id": 347,
"market": "A",
"countryCode": "US",
"network": "BSOH",
"sequenceNumber": 72
}
],
"awayTeam": {
"id": 29,
"placeName": {
"default": "Columbus"
},
"abbrev": "CBJ",
"logo": "https://assets.nhle.com/logos/nhl/svg/CBJ_light.svg",
"darkLogo": "https://assets.nhle.com/logos/nhl/svg/CBJ_dark.svg",
"awaySplitSquad": false,
"radioLink": "https://d2igy0yla8zi0u.cloudfront.net/CBJ/20232024/CBJ-radio.m3u8",
"odds": [
{
"providerId": 2,
"value": "265.0000"
},
{
"providerId": 3,
"value": "4.2400"
},
{
"providerId": 9,
"value": "160.0000"
},
{
"providerId": 7,
"value": "160.0000"
},
{
"providerId": 6,
"value": "3.5000"
}
]
},
"homeTeam": {
"id": 20,
"placeName": {
"default": "Calgary"
},
"abbrev": "CGY",
"logo": "https://assets.nhle.com/logos/nhl/svg/CGY_light.svg",
"darkLogo": "https://assets.nhle.com/logos/nhl/svg/CGY_dark.svg",
"homeSplitSquad": false,
"radioLink": "https://d2igy0yla8zi0u.cloudfront.net/CGY/20232024/CGY-radio.m3u8",
"odds": [
{
"providerId": 2,
"value": "-120.0000"
},
{
"providerId": 3,
"value": "4.2400"
},
{
"providerId": 9,
"value": "-192.0000"
},
{
"providerId": 7,
"value": "-194.0000"
},
{
"providerId": 6,
"value": "1.8000"
}
]
},
"periodDescriptor": [],
"ticketsLink": "https://www.ticketmaster.com/event/11005EF4C06131DB?brand=nhl&wt.mc_id=NHL_LEAGUE_CGY_SCHED_PAGE_LINK_GM23&utm_source=nhl.com&utm_medium=client&utm_campaign=NHL_LEAGUE_CGY&utm_content=SCHED_PAGE_LINK_GM23",
"gameCenterLink": "/gamecenter/cbj-vs-cgy/2024/01/25/2023020753"
},
{
"id": 2023020754,
"season": 20232024,
"gameType": 2,
"venue": {
"default": "Rogers Place"
},
"neutralSite": false,
"startTimeUTC": "2024-01-26T02:00:00Z",
"easternUTCOffset": "-05:00",
"venueUTCOffset": "-07:00",
"venueTimezone": "America/Edmonton",
"gameState": "FUT",
"gameScheduleState": "OK",
"tvBroadcasts": [
{
"id": 281,
"market": "N",
"countryCode": "CA",
"network": "TVAS",
"sequenceNumber": 31
},
{
"id": 284,
"market": "N",
"countryCode": "CA",
"network": "SN1",
"sequenceNumber": 22
},
{
"id": 318,
"market": "A",
"countryCode": "US",
"network": "NBCSCH",
"sequenceNumber": 54
}
],
"awayTeam": {
"id": 16,
"placeName": {
"default": "Chicago"
},
"abbrev": "CHI",
"logo": "https://assets.nhle.com/logos/nhl/svg/CHI_light.svg",
"darkLogo": "https://assets.nhle.com/logos/nhl/svg/CHI_dark.svg",
"awaySplitSquad": false,
"radioLink": "https://d2igy0yla8zi0u.cloudfront.net/CHI/20232024/CHI-radio.m3u8",
"odds": [
{
"providerId": 2,
"value": "750.0000"
},
{
"providerId": 3,
"value": "6.3200"
},
{
"providerId": 9,
"value": "455.0000"
},
{
"providerId": 7,
"value": "458.0000"
},
{
"providerId": 6,
"value": "8.0000"
}
]
},
"homeTeam": {
"id": 22,
"placeName": {
"default": "Edmonton"
},
"abbrev": "EDM",
"logo": "https://assets.nhle.com/logos/nhl/svg/EDM_light.svg",
"darkLogo": "https://assets.nhle.com/logos/nhl/svg/EDM_dark.svg",
"homeSplitSquad": false,
"radioLink": "https://d2igy0yla8zi0u.cloudfront.net/EDM/20232024/EDM-radio.m3u8",
"odds": [
{
"providerId": 2,
"value": "-335.0000"
},
{
"providerId": 3,
"value": "6.3200"
},
{
"providerId": 9,
"value": "-625.0000"
},
{
"providerId": 7,
"value": "-640.0000"
},
{
"providerId": 6,
"value": "1.2800"
}
]
},
"periodDescriptor": [],
"ticketsLink": "https://www.ticketmaster.com/event/11005F17C68D48D0?brand=nhl&wt.mc_id=NHL_LEAGUE_EDM_SCHED_PAGE_LINK_GM22&utm_source=nhl.com&utm_medium=client&utm_campaign=NHL_LEAGUE_EDM&utm_content=SCHED_PAGE_LINK_GM22",
"gameCenterLink": "/gamecenter/chi-vs-edm/2024/01/25/2023020754"
}
]
},
...
]
}
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/standings
requires authentication
Get standings data for each team broken up by divisions.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/nhl/standings'
params = {
'date': '2024-01-25',
}
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/nhl/standings';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'date' => '2024-01-25',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/nhl/standings"
);
const params = {
"date": "2024-01-25",
};
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/nhl/standings?date=2024-01-25" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": [
{
"conferenceAbbrev": "W",
"conferenceHomeSequence": 3,
"conferenceL10Sequence": 2,
"conferenceName": "Western",
"conferenceRoadSequence": 1,
"conferenceSequence": 1,
"date": "2024-01-25",
"divisionAbbrev": "P",
"divisionHomeSequence": 2,
"divisionL10Sequence": 2,
"divisionName": "Pacific",
"divisionRoadSequence": 1,
"divisionSequence": 1,
"gameTypeId": 2,
"gamesPlayed": 48,
"goalDifferential": 58,
"goalDifferentialPctg": 1.208333,
"goalAgainst": 123,
"goalFor": 181,
"goalsForPctg": 3.770833,
"homeGamesPlayed": 23,
"homeGoalDifferential": 37,
"homeGoalsAgainst": 52,
"homeGoalsFor": 89,
"homeLosses": 4,
"homeOtLosses": 2,
"homePoints": 36,
"homeRegulationPlusOtWins": 17,
"homeRegulationWins": 16,
"homeTies": 0,
"homeWins": 17,
"l10GamesPlayed": 10,
"l10GoalDifferential": 13,
"l10GoalsAgainst": 25,
"l10GoalsFor": 38,
"l10Losses": 0,
"l10OtLosses": 2,
"l10Points": 18,
"l10RegulationPlusOtWins": 8,
"l10RegulationWins": 7,
"l10Ties": 0,
"l10Wins": 8,
"leagueHomeSequence": 3,
"leagueL10Sequence": 2,
"leagueRoadSequence": 1,
"leagueSequence": 1,
"losses": 11,
"otLosses": 5,
"placeName": {
"default": "Vancouver"
},
"pointPctg": 0.71875,
"points": 69,
"regulationPlusOtWinPctg": 0.666667,
"regulationPlusOtWins": 32,
"regulationWinPctg": 0.625,
"regulationWins": 30,
"roadGamesPlayed": 25,
"roadGoalDifferential": 21,
"roadGoalsAgainst": 71,
"roadGoalsFor": 92,
"roadLosses": 7,
"roadOtLosses": 3,
"roadPoints": 33,
"roadRegulationPlusOtWins": 15,
"roadRegulationWins": 14,
"roadTies": 0,
"roadWins": 15,
"seasonId": 20232024,
"shootoutLosses": 2,
"shootoutWins": 0,
"streakCode": "OT",
"streakCount": 1,
"teamName": {
"default": "Vancouver Canucks",
"fr": "Canucks de Vancouver"
},
"teamCommonName": {
"default": "Canucks"
},
"teamAbbrev": {
"default": "VAN"
},
"teamLogo": "https://assets.nhle.com/logos/nhl/svg/VAN_light.svg",
"ties": 0,
"waiversSequence": 32,
"wildcardSequence": 0,
"winPctg": 0.666667,
"wins": 32
},
...
]
}
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/scores
requires authentication
Get live game scores for all hockey games.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/nhl/scores'
params = {
'date': '2024-01-25',
}
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/nhl/scores';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'date' => '2024-01-25',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/nhl/scores"
);
const params = {
"date": "2024-01-25",
};
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/nhl/scores?date=2024-01-25" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": {
"currentDate": "2024-01-25",
"gameWeek": [
{
"date": "2024-01-22",
"dayAbbrev": "MON",
"numberOfGames": 6
},
...
],
"oddsPartners": [
{
"partnerId": 2,
"country": "SE",
"name": "Unibet",
"imageUrl": "https://assets.nhle.com/betting_partner/unibet.svg",
"siteUrl": "https://www.unibet.se/betting/sports/filter/ice_hockey/nhl/all/matches",
"bgColor": "#14805E",
"textColor": "#FFFFFF",
"accentColor": "#3AAA35"
},
...
],
"games": [
{
"id": 2023020747,
"season": 20232024,
"gameType": 2,
"gameDate": "2024-01-25",
"venue": {
"default": "Little Caesars Arena"
},
"startTimeUTC": "2024-01-26T00:00:00Z",
"easternUTCOffset": "-05:00",
"venueUTCOffset": "-05:00",
"tvBroadcasts": [
{
"id": 287,
"market": "N",
"countryCode": "CA",
"network": "SNE",
"sequenceNumber": 26
},
{
"id": 288,
"market": "N",
"countryCode": "CA",
"network": "SNO",
"sequenceNumber": 27
},
{
"id": 290,
"market": "N",
"countryCode": "CA",
"network": "SNP",
"sequenceNumber": 29
},
{
"id": 322,
"market": "A",
"countryCode": "US",
"network": "NBCSP",
"sequenceNumber": 59
},
{
"id": 351,
"market": "H",
"countryCode": "US",
"network": "BSDET",
"sequenceNumber": 51
}
],
"gameState": "PRE",
"gameScheduleState": "OK",
"awayTeam": {
"id": 4,
"name": {
"default": "Flyers"
},
"abbrev": "PHI",
"record": "25-17-6",
"logo": "https://assets.nhle.com/logos/nhl/svg/PHI_light.svg",
"odds": [
{
"providerId": 2,
"value": "163.0000"
},
{
"providerId": 3,
"value": "4.1300"
},
{
"providerId": 9,
"value": "-105.0000"
},
{
"providerId": 7,
"value": "-103.0000"
},
{
"providerId": 6,
"value": "2.5400"
}
]
},
"homeTeam": {
"id": 17,
"name": {
"default": "Red Wings"
},
"abbrev": "DET",
"record": "24-18-5",
"logo": "https://assets.nhle.com/logos/nhl/svg/DET_light.svg",
"odds": [
{
"providerId": 2,
"value": "133.0000"
},
{
"providerId": 3,
"value": "4.1300"
},
{
"providerId": 9,
"value": "-115.0000"
},
{
"providerId": 7,
"value": "-117.0000"
},
{
"providerId": 6,
"value": "2.3200"
}
]
},
"gameCenterLink": "/gamecenter/phi-vs-det/2024/01/25/2023020747",
"neutralSite": false,
"venueTimezone": "America/Detroit",
"ticketsLink": "https://www.ticketmaster.com/event/08005ED5C3A83C6F?brand=nhl&wt.mc_id=NHL_LEAGUE_DET_SCORE_TAB_APP_GM25&utm_source=nhl.com&utm_medium=client&utm_campaign=NHL_LEAGUE_DET&utm_content=SCORE_TAB_APP_GM25",
"teamLeaders": [
{
"id": 8478439,
"name": {
"default": "T. Konecny"
},
"headshot": "https://assets.nhle.com/mugs/nhl/20232024/PHI/8478439.png",
"teamAbbrev": "PHI",
"category": "goals",
"value": 22
},
{
"id": 8477946,
"name": {
"default": "D. Larkin"
},
"headshot": "https://assets.nhle.com/mugs/nhl/20232024/DET/8477946.png",
"teamAbbrev": "DET",
"category": "goals",
"value": 19
},
{
"id": 8476906,
"name": {
"default": "S. Gostisbehere"
},
"headshot": "https://assets.nhle.com/mugs/nhl/20232024/DET/8476906.png",
"teamAbbrev": "DET",
"category": "assists",
"value": 25
},
{
"id": 8480797,
"name": {
"default": "J. Farabee"
},
"headshot": "https://assets.nhle.com/mugs/nhl/20232024/PHI/8480797.png",
"teamAbbrev": "PHI",
"category": "assists",
"value": 23
},
{
"id": 8479394,
"name": {
"default": "C. Hart"
},
"headshot": "https://assets.nhle.com/mugs/nhl/20232024/PHI/8479394.png",
"teamAbbrev": "PHI",
"category": "wins",
"value": 12
},
{
"id": 8479312,
"name": {
"default": "A. Lyon"
},
"headshot": "https://assets.nhle.com/mugs/nhl/20232024/DET/8479312.png",
"teamAbbrev": "DET",
"category": "wins",
"value": 11
}
]
},
...
]
}
}
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
Teams section of the Hockey (NHL) API includes endpoints for retrieving various team-related data. These endpoints allow developers to access detailed statistics, game schedules, and current rosters for NHL teams.
GET /v1/teams
requires authentication
Get hockey teams information including their id, venue details, division, conference and franchise information.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/nhl/teams'
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/nhl/teams';
$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/nhl/teams"
);
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/nhl/teams" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": [
{
"id": 1,
"seasonId": 20232024,
"commonName": {
"default": "Devils"
},
"abbrev": "NJD",
"name": {
"default": "New Jersey Devils",
"fr": "Devils du New Jersey"
},
"placeName": {
"default": "New Jersey"
},
"logo": "https://assets.nhle.com/logos/nhl/svg/NJD_light.svg",
"darkLogo": "https://assets.nhle.com/logos/nhl/svg/NJD_dark.svg",
"isNhl": true,
"french": false
},
{
"id": 2,
"seasonId": 20232024,
"commonName": {
"default": "Islanders"
},
"abbrev": "NYI",
"name": {
"default": "New York Islanders",
"fr": "Islanders de New York"
},
"placeName": {
"default": "NY Islanders"
},
"logo": "https://assets.nhle.com/logos/nhl/svg/NYI_light.svg",
"darkLogo": "https://assets.nhle.com/logos/nhl/svg/NYI_dark.svg",
"isNhl": true,
"french": 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/roster
requires authentication
Get hockey teams information including their id, venue details, division, conference and franchise information.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/nhl/teams-roster'
params = {
'teamAbbrev': 'BOS',
}
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/nhl/teams-roster';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'teamAbbrev' => 'BOS',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/nhl/teams-roster"
);
const params = {
"teamAbbrev": "BOS",
};
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/nhl/teams-roster?teamAbbrev=BOS" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": {
"forwards": [
{
"id": 8480003,
"headshot": "https://assets.nhle.com/mugs/nhl/20232024/BOS/8480003.png",
"firstName": {
"default": "Jesper"
},
"lastName": {
"default": "Boqvist"
},
"sweaterNumber": 70,
"positionCode": "C",
"shootsCatches": "L",
"heightInInches": 73,
"weightInPounds": 184,
"heightInCentimeters": 185,
"weightInKilograms": 83,
"birthDate": "1998-10-30",
"birthCity": {
"default": "Falun"
},
"birthCountry": "SWE"
},
...
],
"defensemen": [
{
"id": 8478443,
"headshot": "https://assets.nhle.com/mugs/nhl/20232024/BOS/8478443.png",
"firstName": {
"default": "Brandon"
},
"lastName": {
"default": "Carlo"
},
"sweaterNumber": 25,
"positionCode": "D",
"shootsCatches": "R",
"heightInInches": 77,
"weightInPounds": 217,
"heightInCentimeters": 196,
"weightInKilograms": 98,
"birthDate": "1996-11-26",
"birthCity": {
"default": "Colorado Springs"
},
"birthCountry": "USA",
"birthStateProvince": {
"default": "Colorado"
}
},
...
],
"goalies": [
{
"id": 8480280,
"headshot": "https://assets.nhle.com/mugs/nhl/20232024/BOS/8480280.png",
"firstName": {
"default": "Jeremy"
},
"lastName": {
"default": "Swayman"
},
"sweaterNumber": 1,
"positionCode": "G",
"shootsCatches": "L",
"heightInInches": 75,
"weightInPounds": 195,
"heightInCentimeters": 191,
"weightInKilograms": 88,
"birthDate": "1998-11-24",
"birthCity": {
"default": "Anchorage"
},
"birthCountry": "USA",
"birthStateProvince": {
"default": "Alaska",
"sk": "Aljaška"
}
},
...
]
}
}
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-games
requires authentication
Get a team's previous and upcoming game information.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/nhl/teams-games'
params = {
'teamAbbrev': 'DAL',
}
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/nhl/teams-games';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'teamAbbrev' => 'DAL',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/nhl/teams-games"
);
const params = {
"teamAbbrev": "DAL",
};
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/nhl/teams-games?teamAbbrev=DAL" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"previousMonth": "2023-12",
"currentMonth": "2024-01",
"nextMonth": "2024-02",
"clubTimezone": "US/Eastern",
"clubUTCOffset": "-05:00"
},
"body": [
{
"id": 2023020574,
"season": 20232024,
"gameType": 2,
"gameDate": "2024-01-02",
"venue": {
"default": "Nationwide Arena"
},
"neutralSite": false,
"startTimeUTC": "2024-01-03T00:00:00Z",
"easternUTCOffset": "-05:00",
"venueUTCOffset": "-05:00",
"venueTimezone": "US/Eastern",
"gameState": "OFF",
"gameScheduleState": "OK",
"tvBroadcasts": [
{
"id": 31,
"market": "A",
"countryCode": "US",
"network": "NESN",
"sequenceNumber": 78
},
{
"id": 347,
"market": "H",
"countryCode": "US",
"network": "BSOH",
"sequenceNumber": 72
}
],
"awayTeam": {
"id": 6,
"placeName": {
"default": "Boston"
},
"abbrev": "BOS",
"logo": "https://assets.nhle.com/logos/nhl/svg/BOS_light.svg",
"darkLogo": "https://assets.nhle.com/logos/nhl/svg/BOS_dark.svg",
"awaySplitSquad": false,
"airlineLink": "https://www.jetblue.com/#/",
"airlineDesc": "FLY WITH JETBLUE",
"score": 4
},
"homeTeam": {
"id": 29,
"placeName": {
"default": "Columbus"
},
"abbrev": "CBJ",
"logo": "https://assets.nhle.com/logos/nhl/svg/CBJ_light.svg",
"darkLogo": "https://assets.nhle.com/logos/nhl/svg/CBJ_dark.svg",
"homeSplitSquad": false,
"hotelLink": "https://www.sonesta.com/sonesta-hotels-resorts/oh/columbus/sonesta-columbus-downtown?isGroupCode=false&promoCode=CBJ&checkin=2022-09-09&checkout=2022-09-56",
"hotelDesc": "BOOK SONESTA COLUMBUS",
"score": 1
},
"periodDescriptor": {
"number": 3,
"periodType": "REG"
},
"gameOutcome": {
"lastPeriodType": "REG"
},
"winningGoalie": {
"playerId": 8476999,
"firstInitial": {
"default": "L."
},
"lastName": {
"default": "Ullmark"
}
},
"winningGoalScorer": {
"playerId": 8474037,
"firstInitial": {
"default": "J."
},
"lastName": {
"default": "van Riemsdyk"
}
},
"gameCenterLink": "/gamecenter/bos-vs-cbj/2024/01/02/2023020574"
},
...
]
}
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-stats
requires authentication
Get the hockey team's stats information.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/nhl/teams-stats'
params = {
'teamAbbrev': 'WPG',
}
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/nhl/teams-stats';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'teamAbbrev' => 'WPG',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/nhl/teams-stats"
);
const params = {
"teamAbbrev": "WPG",
};
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/nhl/teams-stats?teamAbbrev=WPG" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": {
"season": "20232024",
"skaters": [
{
"playerId": 8473419,
"headshot": "https://assets.nhle.com/mugs/nhl/20232024/BOS/8473419.png",
"firstName": {
"default": "Brad"
},
"lastName": {
"default": "Marchand"
},
"positionCode": "L",
"gamesPlayed": 47,
"goals": 23,
"assists": 23,
"points": 46,
"plusMinus": 7,
"penaltyMinutes": 49,
"powerPlayGoals": 7,
"shorthandedGoals": 1,
"gameWinningGoals": 4,
"overtimeGoals": 1,
"shots": 128,
"shootingPctg": 0.179688,
"avgTimeOnIcePerGame": 1174.9574,
"avgShiftsPerGame": 24.4468,
"faceoffWinPctg": 0.439024
},
...
],
"goalies": [
{
"playerId": 8476999,
"headshot": "https://assets.nhle.com/mugs/nhl/20232024/BOS/8476999.png",
"firstName": {
"default": "Linus"
},
"lastName": {
"default": "Ullmark"
},
"gamesPlayed": 23,
"gamesStarted": 22,
"wins": 14,
"losses": 6,
"ties": 0,
"overtimeLosses": 2,
"goalsAgainstAverage": 2.817143,
"savePercentage": 0.912983,
"shotsAgainst": 724,
"saves": 661,
"goalsAgainst": 64,
"shutouts": 0,
"goals": 0,
"assists": 0,
"points": 0,
"penaltyMinutes": 0,
"timeOnIce": 81785
},
...
]
}
}
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.
Aliexpress Endpoints
The API offers essential endpoints for retrieving data related to product searches, product listings, category information, product reviews, and detailed product descriptions. These endpoints facilitate seamless access to product-related content, supporting efficient browsing, review retrieval, and detailed information exploration within the application or service utilizing the API.
GET /v1/search
requires authentication
Get products on Aliexpress using specific keywords.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/aliexpress/search'
params = {
'search': 'phones',
}
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/aliexpress/search';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'search' => 'phones',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/aliexpress/search"
);
const params = {
"search": "phones",
};
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/aliexpress/search?search=phones" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"page": "3",
"search": "phone"
},
"body": [
{
"productId": "3256803859099808",
"productType": "natural",
"title": "5PCS Shoes Packing Luggage Toiletry Kit Bag Travel Bag Accessories Women Casual Transparent Clothes Classified Zipper Organizers",
"prices": {
"skuId": "12000027845513441",
"pricesStyle": "default",
"builderType": "skuCoupon",
"currencySymbol": "$",
"prefix": "Sale price:",
"salePrice": {
"discount": 35,
"minPriceDiscount": 35,
"priceType": "sale_price",
"currencyCode": "USD",
"minPrice": 4.96,
"minPriceType": 2,
"formattedPrice": "US $4.96",
"cent": 496
},
"taxRate": "0"
},
"sales": {
"raw": "2 sold",
"value": 2
},
"image": {
"imgUrl": "//ae01.alicdn.com/kf/S7c8ae165e9204520b826d35375d1dbb6M/5PCS-Shoes-Packing-Luggage-Toiletry-Kit-Bag-Travel-Bag-Accessories-Women-Casual-Transparent-Clothes-Classified-Zipper.jpg_220x220xz.jpg",
"imgWidth": 220,
"imgHeight": 220,
"imgType": "0"
},
"sellingPoints": [
{
"sellingPointTagId": "m0000063",
"tagStyleType": "default",
"tagContent": {
"displayTagType": "text",
"tagText": "Extra 2% off with coins",
"tagStyle": {
"color": "#FD384F",
"position": "2"
}
},
"source": "flexiCoin_new_atm",
"resourceCode": "searchItemCard",
"resourcePriority": 10
},
{
"sellingPointTagId": "m0000064",
"tagStyleType": "default",
"tagContent": {
"displayTagType": "text",
"tagText": "Free shipping",
"tagStyle": {
"color": "#009966",
"position": "4"
}
},
"source": "Free_Shipping_atm",
"resourceCode": "searchItemCard",
"resourcePriority": 186
}
],
"link": "https://www.aliexpress.com/item/3256803859099808.html"
},
{ ... }
]
}
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/products
requires authentication
Get Aliexpress products.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/aliexpress/products'
params = {
'catName': 'watches',
'minPrice': '10',
'maxPrice': '100',
'shipFromCountry': '100',
'freeShipping': '1',
'fourStarsAndUp': '1',
'sort': 'orders',
'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/aliexpress/products';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'catName' => 'watches',
'minPrice' => '10',
'maxPrice' => '100',
'shipFromCountry' => '100',
'freeShipping' => '1',
'fourStarsAndUp' => '1',
'sort' => 'orders',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/aliexpress/products"
);
const params = {
"catName": "watches",
"minPrice": "10",
"maxPrice": "100",
"shipFromCountry": "100",
"freeShipping": "1",
"fourStarsAndUp": "1",
"sort": "orders",
"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/aliexpress/products?catName=watches&minPrice=10&maxPrice=100&shipFromCountry=100&freeShipping=1&fourStarsAndUp=1&sort=orders&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"page": "3",
"categoryID": "100003269"
},
"body": [
{
"productId": "3256805697023971",
"productType": "natural",
"title": "YOLANMY Slit Chiffon Wedding Dresses For Mariages Spaghetti Straps Classic Appliques Backless A-Line Court Train Square Collar",
"prices": {
"skuId": "12000034696323417",
"pricesStyle": "default",
"builderType": "skuCoupon",
"currencySymbol": "$",
"prefix": "Sale price:",
"salePrice": {
"discount": 45,
"minPriceDiscount": 45,
"priceType": "sale_price",
"currencyCode": "USD",
"minPrice": 82.73,
"minPriceType": 2,
"formattedPrice": "US $82.73",
"cent": 8273
},
"taxRate": "0"
},
"image": {
"imgUrl": "//ae01.alicdn.com/kf/Sbd5a1b42ade94802ab0c80e25c82f20by/YOLANMY-Slit-Chiffon-Wedding-Dresses-For-Mariages-Spaghetti-Straps-Classic-Appliques-Backless-A-Line-Court-Train.jpg_220x220xz.jpg",
"imgWidth": 220,
"imgHeight": 220,
"imgType": "0"
},
"sellingPoints": [
{
"sellingPointTagId": "885603359",
"tagStyleType": "default",
"tagContent": {
"displayTagType": "text",
"tagText": "+Shipping: $23.07",
"tagStyle": {
"color": "#757575",
"position": "4"
}
},
"source": "Shipping_Fee_atm",
"resourceCode": "searchItemCard",
"resourcePriority": 100
},
{
"sellingPointTagId": "m0000063",
"tagStyleType": "default",
"tagContent": {
"displayTagType": "text",
"tagText": "Extra 5% off with coins",
"tagStyle": {
"color": "#FD384F",
"position": "2"
}
},
"source": "flexiCoin_new_atm",
"resourceCode": "searchItemCard",
"resourcePriority": 10
}
],
"link": "https://www.aliexpress.com/item/3256805697023971.html"
},
{ ... }
]
}
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/categories
requires authentication
Get all Aliexpress categories.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/aliexpress/categories'
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/aliexpress/categories';
$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/aliexpress/categories"
);
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/aliexpress/categories" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io"
},
"body": {
"food": [
{
"name": "Food",
"id": "2",
"url": "https://www.aliexpress.com/category/2/food.html"
},
{
"name": "Grain Products",
"id": "238",
"url": "https://www.aliexpress.com/category/238/grain-products.html"
},
{
"name": "Coffee",
"id": "289",
"url": "https://www.aliexpress.com/category/289/coffee.html"
},
{
"name": "Nut & Kernel",
"id": "205871717",
"url": "https://www.aliexpress.com/category/205871717/nut-kernel.html"
},
{
"name": "Water/ Juices/ Drinks",
"id": "205872023",
"url": "https://www.aliexpress.com/category/205872023/water-juices-drinks.html"
},
{
"name": "Dried Goods / Local Specialties(127468931)--Superfoods",
"id": "205874614",
"url": "https://www.aliexpress.com/category/205874614/dried-goods-local-specialties-127468931--superfoods.html"
},
{
"name": "Grocery",
"id": "205873918",
"url": "https://www.aliexpress.com/category/205873918/grocery.html"
},
{
"name": "Canned Food",
"id": "205878417",
"url": "https://www.aliexpress.com/category/205878417/canned-food.html"
},
{
"name": "Alcoholic Beverages",
"id": "205950809",
"url": "https://www.aliexpress.com/category/205950809/alcoholic-beverages.html"
},
{
"name": "Fish and sea food",
"id": "205950935",
"url": "https://www.aliexpress.com/category/205950935/fish-and-sea-food.html"
},
{
"name": "Meat",
"id": "205958629",
"url": "https://www.aliexpress.com/category/205958629/meat.html"
},
{
"name": "Milk and eggs",
"id": "205959116",
"url": "https://www.aliexpress.com/category/205959116/milk-and-eggs.html"
},
{
"name": "Cheese",
"id": "205957729",
"url": "https://www.aliexpress.com/category/205957729/cheese.html"
},
{
"name": "Ready meal",
"id": "205956710",
"url": "https://www.aliexpress.com/category/205956710/ready-meal.html"
},
{
"name": "Bread and pastries",
"id": "205955240",
"url": "https://www.aliexpress.com/category/205955240/bread-and-pastries.html"
},
{
"name": "Frozen products",
"id": "205956037",
"url": "https://www.aliexpress.com/category/205956037/frozen-products.html"
},
{
"name": "Vegetables and greens",
"id": "205961033",
"url": "https://www.aliexpress.com/category/205961033/vegetables-and-greens.html"
},
{
"name": "Fruits and berries",
"id": "205961128",
"url": "https://www.aliexpress.com/category/205961128/fruits-and-berries.html"
},
{
"name": "Sausages",
"id": "205959632",
"url": "https://www.aliexpress.com/category/205959632/sausages.html"
},
{
"name": "Tea",
"id": "100006182",
"url": "https://www.aliexpress.com/category/100006182/tea.html"
}
],
[ ... ]
}
}
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/product-review
requires authentication
Get a complete product review on Aliexpress.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/aliexpress/product-reviews'
params = {
'productId': '1005005071434469',
'filter': 'all',
'page': '1',
'country': 'US',
'lang': 'en_US',
}
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/aliexpress/product-reviews';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'productId' => '1005005071434469',
'filter' => 'all',
'page' => '1',
'country' => 'US',
'lang' => 'en_US',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/aliexpress/product-reviews"
);
const params = {
"productId": "1005005071434469",
"filter": "all",
"page": "1",
"country": "US",
"lang": "en_US",
};
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/aliexpress/product-reviews?productId=1005005071434469&filter=all&page=1&country=US&lang=en_US" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"totalReviews": 10814,
"per_page": 20,
"currentPage": 3,
"filter": "all"
},
"body": {
"reviewStatistics": {
"evarageStar": 4.7,
"evarageStarRage": 94.6,
"fiveStarNum": 9269,
"fiveStarRate": 85.5,
"fourStarNum": 936,
"fourStarRate": 8.6,
"negativeNum": 411,
"negativeRate": 2.1,
"neutralNum": 231,
"neutralRate": 8.6,
"oneStarNum": 311,
"oneStarRate": 2.9,
"positiveNum": 10205,
"positiveRate": 85.5,
"threeStarNum": 231,
"threeStarRate": 2.1,
"totalNum": 10847,
"twoStarNum": 100,
"twoStarRate": 0.9
},
"reviews": [
{
"anonymous": false,
"buyerAddFbDays": 0,
"buyerCountry": "ES",
"buyerEval": 40,
"buyerFbType": {
"crowdSourcingPersonName": "AliExpress Shopper",
"sourceLang": "en",
"typeTranslationAccepted": "crowdsourcing"
},
"buyerFeedback": "Left pod didn't work",
"buyerName": "c***s",
"buyerProductFeedBack": "",
"buyerTranslationFeedback": "Left pod didn't work",
"downVoteCount": 0,
"evalDate": "17 Aug 2023",
"evaluationId": 30063078701207730,
"evaluationIdStr": "30063078701207729",
"logistics": "Aliexpress Selection Standard",
"skuInfo": "Color:XT80 Black ",
"status": "1",
"upVoteCount": 0
},
{ ... }
],
"impressionList": [
{
"content": "sound quality is good",
"emotion": 1,
"id": "7887495818646144966",
"num": 1149,
"productId": 1005005071434469
},
{ ... }
]
}
}
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/product-description
requires authentication
Get a complete product description on Aliexpress.
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/aliexpress/product-description'
params = {
'productId': '1005005939875273',
'key': 'S1af182b91f204fc58495734fb90fbe82W.zip',
'token': '4799b399f21ce879ab3943412eba3511',
}
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/aliexpress/product-description';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'productId' => '1005005939875273',
'key' => 'S1af182b91f204fc58495734fb90fbe82W.zip',
'token' => '4799b399f21ce879ab3943412eba3511',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/aliexpress/product-description"
);
const params = {
"productId": "1005005939875273",
"key": "S1af182b91f204fc58495734fb90fbe82W.zip",
"token": "4799b399f21ce879ab3943412eba3511",
};
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/aliexpress/product-description?productId=1005005939875273&key=S1af182b91f204fc58495734fb90fbe82W.zip&token=4799b399f21ce879ab3943412eba3511" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"description_link": "https://aeproductsourcesite.alicdn.com/product/description/pc/v2/en_US/desc.htm?productId=1005005939875273&key=S1af182b91f204fc58495734fb90fbe82W.zip&token=4799b399f21ce879ab3943412eba3511"
},
"body": "<body>...</body>"
}
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.
Crypto Endpoints
The Crypto API offers essential endpoints for retrieving information on coins, obtaining quotes, accessing modules, fetching profiles, and viewing holders' data. These endpoints provide crucial data points and insights into the cryptocurrency market, supporting various analytical and informational needs for developers and traders alike.
GET /v1/crypto/profile
requires authentication
Get profile for a specific crypto currency
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/crypto/profile'
params = {
'key': 'bitcoin',
}
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/crypto/profile';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'key' => 'bitcoin',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/crypto/profile"
);
const params = {
"key": "bitcoin",
};
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/crypto/profile?key=bitcoin" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"key": "Bitcoin"
},
"body": {
"key": "bitcoin",
"name": "Bitcoin",
"symbol": "BTC",
"category": "coin",
"description": "## What Is Bitcoin (BTC)?\n\n[Bitcoin](https://coinmarketcap.com/alexandria/article/an-intro-to-bitcoin) is a decentralized [cryptocurrency](https://coinmarketcap.com/alexandria/article/what-are-cryptocurrencies) originally described in a 2008 [whitepaper](https://coinmarketcap.com/alexandria/glossary/whitepaper) by a person, or group of people, using the alias [Satoshi Nakamoto](https://coinmarketcap.com/alexandria/article/who-is-satoshi-nakamoto). It was launched soon after, in January 2009.\n\n[Bitcoin](https://coinmarketcap.com/alexandria/article/what-is-bitcoin) is a peer-to-peer online currency, meaning that all [transactions](https://coinmarketcap.com/alexandria/article/how-long-does-a-bitcoin-transaction-take) happen directly between equal, independent network participants, without the need for any intermediary to permit or facilitate them. Bitcoin was created, according to Nakamoto’s own words, to allow “online payments to be sent directly from one party to another without going through a financial institution...",
"dateAdded": "2010-07-13T00:00:00.000Z",
"status": "active",
"urls": {
"website": [
"https://bitcoin.org/"
],
"technical_doc": [
"https://bitcoin.org/bitcoin.pdf"
],
"explorer": [
"https://blockchain.info/",
"https://live.blockcypher.com/btc/",
"https://blockchair.com/bitcoin",
"https://explorer.viabtc.com/btc",
"https://www.oklink.com/btc"
],
"source_code": [
"https://github.com/bitcoin/bitcoin"
],
"message_board": [
"https://coinmarketcap.com/community/profile/Bitcoin_CMC",
"https://coinmarketcap.com/community/search/top/bitcoin",
"https://bitcointalk.org"
],
"chat": [],
"announcement": [],
"reddit": [
"https://reddit.com/r/bitcoin"
],
"facebook": [],
"twitter": []
}
}
}
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/crypto/holders
requires authentication
Get the number of holders for a specific crypto currency
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/crypto/holders'
params = {
'key': 'bitcoin',
}
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/crypto/holders';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'key' => 'bitcoin',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/crypto/holders"
);
const params = {
"key": "bitcoin",
};
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/crypto/holders?key=bitcoin" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"key": "Bitcoin",
"holderCount": 48834937,
"dailyActive": 963625,
"total": 100
},
"data": [
{
"address": "34xp4vRoCGJym3xR7yCVPFHoCNxv4Twseo",
"balance": 248597.3905837,
"share": 1.18
},
{ ... }
]
}
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/crypto/quotes
requires authentication
Get quotes for a specific crypto currency
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/crypto/quotes'
params = {
'key': 'bitcoin',
}
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/crypto/quotes';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'key' => 'bitcoin',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/crypto/quotes"
);
const params = {
"key": "bitcoin",
};
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/crypto/quotes?key=bitcoin" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"key": "Bitcoin",
"total": 48
},
"data": {
"price": 27777.48286131564,
"priceChangePercentage1h": -2.15185151,
"priceChangePercentage24h": -4.02576734,
"priceChangePercentage7d": -5.49823801,
"priceChangePercentage30d": -7.16085892,
"priceChangePercentage60d": 4.37805208,
"priceChangePercentage90d": 3.1949905,
"priceChangePercentageAll": 449231.6256237841,
"marketCap": 540557260846.61,
"marketCapChangePercentage24h": -4.0204,
"fullyDilutedMarketCap": 583327140087.63,
"fullyDilutedMarketCapChangePercentage24h": -4.03,
"circulatingSupply": 19460268,
"totalSupply": 19460268,
"maxSupply": 21000000,
"marketCapDominance": 48.8796,
"rank": 1,
"roi": 44923077.09278923,
"low24h": 27718.146260229056,
"high24h": 29192.260813211757,
"low7d": 27718.146260229056,
"high7d": 29660.25433927243,
"low30d": 27718.146260229056,
"high30d": 30330.64039201111,
"low90d": 24797.167848615383,
"high90d": 31814.51481206781,
"low52w": 15599.047175382899,
"high52w": 31814.51481206781,
"lowAllTime": 0.04864654,
"highAllTime": 68789.62593892214,
"lowAllTimeChangePercentage": 57100534.21,
"highAllTimeChangePercentage": -59.62,
"lowAllTimeTimestamp": "2010-07-14T19:24:00.000Z",
"highAllTimeTimestamp": "2021-11-10T14:17:02.000Z",
"lowYesterday": 28701.77952453054,
"highYesterday": 29221.97574297547,
"openYesterday": 29169.074019916276,
"closeYesterday": 28701.77952453054,
"priceChangePercentageYesterday": -1.6,
"volumeYesterday": 14949271904.13,
"turnover": 0.03826141,
"ytdPriceChangePercentage": 67.0818,
"volumeRank": 2,
"volumeMcRank": 2235,
"mcTotalNum": 9598,
"volumeTotalNum": 9598,
"volumeMcTotalNum": 9598,
"status": "",
"volume": 20682484655.138218,
"volumeChangePercentage24h": 48.7042
}
}
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/crypto/coins
requires authentication
Get a list of all crypto currencies
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/crypto/coins'
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/v1/crypto/coins';
$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/v1/crypto/coins"
);
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/v1/crypto/coins?page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"page": "1",
"total": 7842
},
"data": {
"1": {
"key": "bitcoin",
"name": "Bitcoin",
"symbol": "BTC",
"rank": 1,
"maxSupply": 21000000,
"totalSupply": 19460268,
"isActive": 1,
"high24h": 29192.260813211757,
"low24h": 27718.146260229056,
"quote": {
"quotes_name": 68789.62593892214,
"quotes_price": 68789.62593892214,
"quotes_lastUpdated": 68789.62593892214,
"quotes_marketCap": 68789.62593892214,
"quotes_percentChange1h": 68789.62593892214,
"quotes_percentChange24h": 68789.62593892214,
"quotes_percentChange30d": 68789.62593892214,
"quotes_volume24h": 68789.62593892214,
"quotes_volume30d": 68789.62593892214,
"quotes_volume7d": 68789.62593892214,
"quotes_ytdPriceChangePercentage": 68789.62593892214
},
"logo": "https://s2.coinmarketcap.com/static/img/coins/64x64/1.png",
"external_link": "https://coinmarketcap.com/currencies/bitcoin"
},
"2": {
"key": "ethereum",
"name": "Ethereum",
"symbol": "ETH",
"rank": 2,
"maxSupply": null,
"totalSupply": 120135854.32244684,
"isActive": 1,
"high24h": 1826.8153604912118,
"low24h": 1725.4621894172678,
"quote": {
"quotes_name": 4891.704697551414,
"quotes_price": 4891.704697551414,
"quotes_lastUpdated": 4891.704697551414,
"quotes_marketCap": 4891.704697551414,
"quotes_percentChange1h": 4891.704697551414,
"quotes_percentChange24h": 4891.704697551414,
"quotes_percentChange30d": 4891.704697551414,
"quotes_volume24h": 4891.704697551414,
"quotes_volume30d": 4891.704697551414,
"quotes_volume7d": 4891.704697551414,
"quotes_ytdPriceChangePercentage": 4891.704697551414
},
"logo": "https://s2.coinmarketcap.com/static/img/coins/64x64/1027.png",
"external_link": "https://coinmarketcap.com/currencies/ethereum"
},
"3": {
"key": "tether",
"name": "Tether USDt",
"symbol": "USDT",
"rank": 3,
"maxSupply": null,
"totalSupply": 86684257831.21764,
"isActive": 1,
"high24h": 0.9996575505698431,
"low24h": 0.9983872270969376,
"quote": {
"quotes_name": 1.2154899835586548,
"quotes_price": 1.2154899835586548,
"quotes_lastUpdated": 1.2154899835586548,
"quotes_marketCap": 1.2154899835586548,
"quotes_percentChange1h": 1.2154899835586548,
"quotes_percentChange24h": 1.2154899835586548,
"quotes_percentChange30d": 1.2154899835586548,
"quotes_volume24h": 1.2154899835586548,
"quotes_volume30d": 1.2154899835586548,
"quotes_volume7d": 1.2154899835586548,
"quotes_ytdPriceChangePercentage": 1.2154899835586548
},
"logo": "https://s2.coinmarketcap.com/static/img/coins/64x64/825.png",
"external_link": "https://coinmarketcap.com/currencies/tether"
},
"4": {
"key": "bnb",
"name": "BNB",
"symbol": "BNB",
"rank": 4,
"maxSupply": null,
"totalSupply": 153852276.09539545,
"isActive": 1,
"high24h": 234.87925844208726,
"low24h": 223.91012477330818,
"quote": {
"quotes_name": 690.93196468,
"quotes_price": 690.93196468,
"quotes_lastUpdated": 690.93196468,
"quotes_marketCap": 690.93196468,
"quotes_percentChange1h": 690.93196468,
"quotes_percentChange24h": 690.93196468,
"quotes_percentChange30d": 690.93196468,
"quotes_volume24h": 690.93196468,
"quotes_volume30d": 690.93196468,
"quotes_volume7d": 690.93196468,
"quotes_ytdPriceChangePercentage": 690.93196468
},
"logo": "https://s2.coinmarketcap.com/static/img/coins/64x64/1839.png",
"external_link": "https://coinmarketcap.com/currencies/bnb"
},
...
}
}
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/crypto/modules
requires authentication
Get global metrics, crypto top gainers/losers, trends, new coins, etc...
Example request:
import requests
import json
url = 'https://api.apicalls.io/v1/crypto/modules'
params = {
'module': 'trending',
}
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/crypto/modules';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'module' => 'trending',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://api.apicalls.io/v1/crypto/modules"
);
const params = {
"module": "trending",
};
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/crypto/modules?module=trending" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://apicalls.io",
"total": 10,
"module": "trendingList"
},
"body": [
{
"id": 24781,
"dataType": 2,
"name": "CyberConnect",
"symbol": "CYBER",
"rank": 378,
"status": "active",
"marketCap": 43825691.01,
"selfReportedMarketCap": 0,
"priceChange": {
"price": 3.9704376710966343,
"priceChange24h": -5.25190314,
"priceChange7d": 120.13555185,
"priceChange30d": 120.13555185,
"volume24h": 39253295.67980275,
"lastUpdate": "2023-08-17T17:31:00.000Z"
}
},
{ ... }
]
}
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.