Public Company Earnings Dates and Reporting Window Finder avatar

Public Company Earnings Dates and Reporting Window Finder

Pricing

from $5.10 / 1,000 company resolveds

Go to Apify Store
Public Company Earnings Dates and Reporting Window Finder

Public Company Earnings Dates and Reporting Window Finder

Finds when a public company reports. Give it a domain, ticker, ISIN, LEI or CIK and get back fiscal year end, reporting cadence, next reporting date, days to event, and the open and close of the outreach window, as one flat row per company built for Clay. Timing rows cover US companies only.

Pricing

from $5.10 / 1,000 company resolveds

Rating

0.0

(0)

Developer

Mamba Labs

Mamba Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Share

🧭 What can Public Company Earnings Dates and Reporting Window Finder do?

Give it a domain, ticker, ISIN, LEI or CIK and it tells you when that public company reports, and when to reach out around it. One flat row per company, built to drop into a Clay column.

Most tools tell you a company is public. This one tells you the fiscal year end, the reporting cadence, the next reporting date, how many days away it is, and the open and close of an outreach window you define yourself.

📦 What you get⚙️ Features and integrations
🏢 44 identity fields in resolve, 47 in qualify, 46 in universe
📅 75 fields in timing mode
🎯 outreach_window_open and outreach_window_close, your lead and lag
🧾 null never missing, every field always present
🔑 Five identifier types: domain, ticker, ISIN, LEI, CIK
🇺🇸 Timing from SEC filing history, US companies
🧊 24 hour identity cache, timing never cached
⬇️ Export to JSON, CSV, Excel, HTML or XML

Bought by outbound teams timing their sequences around earnings, by investor relations and finance researchers, and by anyone who needs a reporting calendar keyed to identifiers they already have.

🇺🇸 Timing rows cover US companies only. Identity, venue and classification resolve worldwide, across 10,646 publishable companies. The reporting dates come from US SEC filing history and exist for US companies alone. If you send a European or UK company to timing mode, you get its identity and a stated reason, never a guessed date.

💡 Why use this actor?

If you wantRead these fields
The next reporting datenext_event_date, next_event_type, next_event_period
To time outreach around itoutreach_window_open, outreach_window_close, window_status, days_to_event
To know how much to trust the dateconfidence_band, confidence_effective, next_event_source_rung
The reporting rhythmderived_cadence, cadence_confidence, cadence_observation_count
The fiscal calendarfiscal_year_end_mmdd, fiscal_year_end_month, is_non_calendar_fiscal_year
Company identitylegal_name, primary_ticker, isin, lei, cik, domain
Venue and classificationprimary_exchange_code, country_code, sector, security_type
To tell empty from brokenmatch_method, timing_unavailable_reason, domain_absent_reason

📏 A predicted date is labeled as one

next_event_is_estimate and next_event_is_announced sit on every timing row. A date derived from filing history is an estimate, and the actor says so on the row rather than in the documentation. confidence_band and confidence_effective tell you how much history sat behind it.

The bands sit at 0.80 and 0.50. At or above 0.80 is strong, 0.50 to 0.80 is moderate, below 0.50 is weak. Confidence is computed on the weakest link in the chain: a date is only as good as the cadence it was derived from, so confidence_effective is the minimum of the event and cadence confidences, never an average. Because of that minimum, the 0.75 to 0.80 band is empty by construction. A gap in the distribution is arithmetic, not missing data.

📋 What data does it extract?

Field counts are per mode, measured against live runs: resolve 44, qualify 47 with its three verdict fields, universe 46, timing 75, and season 19, which are aggregate rows rather than company rows. Within a mode every field is always present. A field with nothing behind it is null, never absent, so a Clay column never shifts.

Identity and venue: company_id, legal_name, normalized_name, primary_ticker, isin, lei, cik, domain, primary_exchange_code, country_code, currency, market_segment, listing_count, all_exchange_codes, is_cross_listed, sector, security_type, is_operating_company, is_foreign_private_issuer, is_us_registrant, is_blank_check, is_depositary_receipt, public_float_usd, public_float_band, shares_outstanding.

Timing: fiscal_year_end_mmdd, derived_cadence, next_event_date, next_event_type, next_event_period, next_event_is_estimate, next_event_is_announced, days_to_event, outreach_window_open, outreach_window_close, window_status, constrained_period_open, constrained_period_close, is_in_constrained_period, confidence_band, timing_unavailable_reason.

Provenance on every row: data_as_of, snapshot_built_at, contract_version, provenance_source, provenance_confidence, attribution, license, source_surface.

🛠️ How to find a company's next reporting date

  1. Pick a mode. resolve for identity, timing for reporting dates and windows, universe to list companies matching a filter, season for aggregate reporting volume by week or month, qualify to test companies against filters.
  2. Give it identifiers: company_domains, tickers, isins, leis, ciks or company_names. Mix types freely in one run, up to 1,000 per run.
  3. For timing, set window_lead_days and window_lag_days. They default to 70 and 42, which opens the window ten weeks before the reporting date and closes it six weeks after.
  4. Run it. Every input gets exactly one row back, in the same shape, whether it matched or not.

💵 How much does it cost?

Pay per event. You are charged for rows returned, not for rows you filtered out.

EventPrice
Company resolved$0.006 per row
Timing row returned$0.012 per row
Reporting season aggregate$0.05 per row
Actor start$0.00005 per run

Volume discounts of 5, 10 and 15 percent apply on the Apify Bronze, Silver and Gold plans.

A row that resolves nothing is still billed. An identifier that matches no public company comes back with match_method set to no_match and every other field null. That is a real answer, the actor made a real request to produce it, and a documented null is worth more than a silent gap. If you do not want to pay for misses, filter your input before you send it.

Timing rows are billed per row and exist for US companies only. A non US company sent to timing mode returns its identity and a timing_unavailable_reason, and is billed as a timing row because the work was done.

Not charged: rows dropped by a filter you set, and every row in a run that fails input validation. A rejected input emits no rows and charges no row event. The platform's own apify-actor-start event still applies, at one per run, because it is levied before the actor validates anything.

The truncation notice is a row you are not charged for. When universe or season matches more than your limit, one extra row comes back carrying total_matched and no company, so the shortfall is visible rather than silent. It is not billed: a limit of 5 against a larger match returns 6 rows and charges 5.

⌨️ Input

FieldTypeNotes
modestringresolve, qualify, timing, universe, season
company_domains, tickers, isins, leis, ciks, company_namesarrayUp to 1,000 identifiers per run
window_lead_days, window_lag_daysstringOutreach window, defaults 70 and 42
country_codes, exchange_codes, sectors, security_typesarrayUniverse and qualify filters
cadences, fiscal_year_end_monthsarrayReporting rhythm filters
season_from, season_to, season_group_by, season_split_bystringSeason mode window and grouping
min_provenance_confidencestringany or high
limitstringRows to return, default 1,000

📤 Output

One flat row per input, one JSON object per row, all fields always present.

{
"matched_on": "ticker",
"matched_value": "TXG",
"legal_name": "10x Genomics, Inc.",
"primary_ticker": "TXG",
"cik": "0001770787",
"primary_exchange_code": "XNAS",
"country_code": "US",
"derived_cadence": "quarterly",
"next_event_type": "quarterly_results",
"next_event_date": "2026-11-03",
"next_event_is_estimate": true,
"days_to_event": 77,
"outreach_window_open": "2026-08-25",
"outreach_window_close": "2026-09-22",
"window_status": "not_yet",
"confidence_band": "strong",
"data_as_of": "2026-08-17"
}

💡 Tips

Read window_status before next_event_date. It is open, not_yet, closed_passed or no_event against today, and it is the field you filter a Clay table on. no_event is the state a company lands in when there is no reporting event to build a window from, which is every non US company.

Set the window to your sales cycle. window_lead_days and window_lag_days are yours. A long enterprise cycle wants a wider lead than the default 70 days.

Use universe mode to build the list, then timing to time it. universe returns every company matching a filter, paging through the whole match rather than stopping at the first page.

⚠️ Known limits

Timing is US only. Reporting events come from SEC filing history. Non US companies resolve fully for identity, venue and classification and return a stated timing_unavailable_reason in timing mode. No date is invented for them.

Unknown cadence is refused, not guessed. 922 companies in the universe have no derivable reporting cadence, because their filing history is too short or too irregular to support one. The actor returns derived_cadence null with a reason instead of inventing a date. A wrong date that looks right is worse than no date.

864 companies have no publishable representation and cannot be returned at all. They exist in the market and not in the redistributable surface this actor reads.

Dates are predicted, not announced. next_event_is_estimate is true for a predicted date and next_event_is_announced is true only when the event is a confirmed one. Treat an estimate as an estimate.

Identity is cached for 24 hours, timing never is. days_to_event, window_status and is_in_constrained_period change every day by construction, so a cached window would be a wrong window. There is no flag to turn timing caching on.

Attribution ships only where the result set requires it. The attribution and license fields carry the acknowledgment a row's source requires, and the run level attribution list holds only the strings the rows you actually received need. A result set with no rows from a given source does not claim that source's acknowledgment.

❓ FAQ

Which identifier should I send? Whichever you already have. Ticker and CIK are the most precise, domain is the most common in a GTM table, and name matching is the loosest. matched_on tells you which one produced the row.

Can I send 5,000 companies? Send up to 1,000 identifiers per run. universe mode pages through matches larger than that and returns the whole set.

What is the constrained period? The stretch before a reporting date when a company's investor relations team is least available. constrained_period_open, constrained_period_close and is_in_constrained_period mark it so you can avoid it or target it deliberately.

Why did a company I know is public come back no_match? Either the identifier does not appear on the publishable surface, or the company is one of the 864 with no publishable representation. match_method and domain_absent_reason say which.

How fresh is the data? data_as_of and snapshot_built_at ship on every row. Read them rather than assuming.

🧩 Want other GTM data?

🏢 Company Firmographic Enricher🔎 Company Identity Resolver
💰 Funding and Press Signal Scanner📊 Company Discovery List Builder
🧑‍💼 Hiring Signal Scraper👤 People Finder and Email Verifier
🚀 Prospect Engine🤖 AI Tooling Detector
📮 Outbound Stack Detector⚖️ Legal Entity Resolver

Every actor in the suite takes a domain or a company and returns one flat row, so they stack in the same Clay table without reshaping anything.

🛠️ Need something custom built for you or your team? Tell us what you are trying to find and we will build it. Talk to Mamba Labs.

🆘 Support

A company timed wrongly, or an identifier that should have matched? Open an issue on the Issues tab with the input and the rows, and we will look at it.

ℹ️ Sourcing and legal. Company identity, venue and classification come from openly published reference sources, and reporting events from US SEC filing history. Every row carries its provenance_source, provenance_confidence and, where the source requires one, its attribution string and license. The actor emits company identity, venue, classification and reporting dates. It holds no personal data and returns none. You are responsible for how you use the output.

Built by Mamba Labs.