This endpoint provides past and upcoming corporate earnings and IPO events. Each record contains the event type, ticker symbol, company name, and event date and time, along with type-specific details such as EPS estimates and actual results for earnings, or deal status and listing exchange for IPOs.
Coverage
| Event Types | Earnings, IPO |
| Assets and Markets | Events are available for supported ticker symbols across FinImpulse market coverage. |
| Future Availability | Scheduled event coverage varies by event type and source. Earnings events are typically available up to approximately 14 months ahead, while IPO events are typically available up to approximately 2-3 weeks ahead. |
Data Freshness
Data is updated weekly. Newly reported values, such as eps_actual, may appear with a delay of up to one week after the event.
Data Availability & Limitations
- The endpoint supports two event types: earnings and ipo.
- Available response fields depend on the event type.
- Earnings events may contain null values for eps_estimate, eps_actual, or eps_surprise_percent when the corresponding data is not available.
- event_name is available for earnings events only.
- IPO events do not return event_name.
- IPO filing_date and amended_date are not returned because these values are not currently available from the underlying data.
When to Use This Endpoint
- Build dedicated Earnings or IPO calendars and dashboards.
- Track expected EPS (Earnings Per Share) estimates against actual reported numbers.
- Alert users to upcoming earnings calls or IPO pricing dates.
- Filter events by type, date, or ticker symbol.
Request Parameters
v1/events/tickers
Types of corporate events to include.
Supported values:
earningsipo
Each value is a string. You can pass one or both of the supported values. If event_types is not specified, events of all types are returned.
Optional filter expressions.
Each filter condition is defined as: [field, operator, value]. Conditions can be combined using logical operators and/or.
Supported operators:
Numeric fields:
>- greater than>=- greater than or equal<- less than<=- less than or equal=- equals<>- not equal
String fields:
like– pattern match (requires%as a wildcard)not_like- pattern does not match (requires%as a wildcard)contains- value exists in stringnot_contains- value does not exist in stringstartswith- string starts with valueendswith- string ends with value
% usage examples:
%abc%- matches any string containing "abc"abc%- matches any string starting with "abc"%abc- matches any string ending with "abc"
Optional sorting configuration for result items. Each sorting setup is defined as an object {selector, desc}:
selector- Field used for sorting (e.g., start_date_time).desc- Sorting direction (true for descending, false for ascending).
Multiple sorting setups can be combined in the array.
By default, results are sorted by start_date_time in descending order, then by symbol in alphabetical order.
Maximum number of matched items returned (user-defined).
- Default: 100
- Maximum: 1000
Pagination offset (0-based)
User-defined identifier for the task (max 255 characters).
It is returned in the response data object, allowing you to match results with the corresponding request. It does not affect API processing or filtering logic.
curl --location "https://api.finimpulse.com/v1/events/tickers" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer <API_TOKEN>" \
-d '{
"event_types": [
"earnings",
"ipo"
],
"filters": [
[
"symbol",
"=",
"AAPL"
]
],
"sort_by": [
{
"selector": "start_date_time",
"desc": true
}
],
"limit": 5,
"offset": 0
}'
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
var client = new HttpClient();
var url = "https://api.finimpulse.com/v1/events/tickers";
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "<API_TOKEN>");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var json = @"{
""event_types"": [
""earnings"",
""ipo""
],
""filters"": [
[
""symbol"",
""="",
""AAPL""
]
],
""sort_by"": [
{
""selector"": ""start_date_time"",
""desc"": true
}
],
""limit"": 5,
""offset"": 0
}";
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.finimpulse.com/v1/events/tickers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Authorization: Bearer <API_TOKEN>"
],
CURLOPT_POSTFIELDS => json_encode(
[
"event_types" => [
"earnings",
"ipo"
],
"filters" => [
[
"symbol",
"=",
"AAPL"
]
],
"sort_by" => [
[
"selector" => "start_date_time",
"desc" => true
]
],
"limit" => 5,
"offset" => 0
]
)
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
import urllib.request
import json
url = "https://api.finimpulse.com/v1/events/tickers"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer <API_TOKEN>"
}
data = {
"event_types": [
"earnings",
"ipo"
],
"filters": [
[
"symbol",
"=",
"AAPL"
]
],
"sort_by": [
{
"selector": "start_date_time",
"desc": True
}
],
"limit": 5,
"offset": 0
}
req = urllib.request.Request(url,
data=json.dumps(data).encode("utf-8"),
headers=headers,
method="POST")
with urllib.request.urlopen(req) as response:
result = json.loads(response.read().decode("utf-8"))
print(result)
const https = require('https');
const data = JSON.stringify({
"event_types": [
"earnings",
"ipo"
],
"filters": [
[
"symbol",
"=",
"AAPL"
]
],
"sort_by": [
{
"selector": "start_date_time",
"desc": true
}
],
"limit": 5,
"offset": 0
});
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer <API_TOKEN>',
'Content-Length': Buffer.byteLength(data)
}
};
const req = https.request('https://api.finimpulse.com/v1/events/tickers', options, (res) => {
let body = '';
res.on('data', chunk => body += chunk);
res.on('end', () => console.log(JSON.stringify(JSON.parse(body), null, 2)));
});
req.on('error', (e) => console.error(e));
req.write(data);
req.end();
Response
Pagination Fields
Total number of matching events in the database.
Number of events returned in the current response page.
Array of polymorphic event objects.
Note: The available fields in each object depend on its type.
Common Fields (All Event Types)
The type of the event (e.g., "earnings", "ipo"). Used to determine which specific fields to expect.
The ticker symbol of the asset.
A concise display name for the company.
The scheduled UTC date and time of the event in ISO 8601 format (e.g., "2026-08-13T08:10:00Z").
Earnings Event Details
Name of the earnings event or reporting period, e.g. "H1 2026 Earnings Announcement" or "Q2 2027 Earnings Announcement".
Code describing the scheduled timing of the earnings release:
BMO- Before Market OpenAMC- After Market CloseTNS- Time Not SuppliedTAS- Source-specific timing code for which the source does not provide a descriptive label.
Estimated EPS before the earnings release.
Actual reported EPS. May be null before results are published.
Percentage difference between actual and estimated EPS. Values are returned as percentage points (e.g., 5.2 represents 5.2%).
Local time zone abbreviation associated with the event (e.g., "HKT" or "EST").
Offset from GMT in milliseconds.
Market capitalization at the time represented by the event data, denominated in the ticker’s currency.
IPO Event Details
Status or type of the IPO event, as provided by the source. Common values include Expected, Priced, and Withdrawn.
Exchange where the asset is expected to list or has been listed (e.g., "Nasdaq" or "NYSE").
Currency associated with the IPO (e.g., "USD").
IPO-related date provided by the source. Depending on the event, this may represent an expected listing date, pricing date, or another IPO milestone. The response does not explicitly identify which date type applies.
{
"result": {
"total_count": 74192,
"items_count": 2,
"items": [
{
"type": "earnings",
"symbol": "0001.HK",
"company_short_name": "CK Hutchison Holdings Limited",
"start_date_time": "2026-08-13T08:10:00Z",
"event_name": "H1 2026 Earnings Announcement",
"start_date_time_type": "TNS",
"eps_estimate": null,
"eps_actual": null,
"eps_surprise_percent": null,
"time_zone_short_name": "HKT",
"gmt_offset_milliseconds": 28800000,
"intraday_market_cap": 278061224855.816
},
{
"type": "ipo",
"symbol": "AAUB",
"company_short_name": "Alpha Architect US Equity 4 ETF",
"start_date_time": "2026-07-23T04:00:00Z",
"exchange_short_name": "Nasdaq",
"currency_name": "USD",
"deal_type": "Expected"
}
]
}
}Pagination & Limits
You can control how many records a response returns and page through large result sets using the limit and offset parameters.
- Use limit to set the number of records per request, from 1 to 1000. If limit is not specified, up to 100 records are returned.
- Use offset to skip records (0-based). For example, limit: 100 and offset: 100 return records 101–200.
- To retrieve all matching records, increase offset by the limit value until offset + items_count reaches total_count.
- To keep the order consistent across pages, pass sort_by, for example, by start_date_time and symbol.
Each returned record is billed as a Row, so the cost of a request depends on the number of records returned.
API Pricing
- Call: $0.00030
- Row: $0.00005
