GET /v1/signals
Search signals
Every filter in the app is a query parameter here. Results come newest first, 25 to a page. Each signal carries evidence_url, the filing it came from.
Query parameters
| Name | In the app | What it does |
|---|---|---|
| type | Signal | Comma-separated: company.incorporated, funding.filed, funding.amended, officer.appointed, owner.registered, website.launched. A signal says what happened, whichever registry reported it. |
| has_website | Website | true: companies with a website; false: companies we looked for and found none yet. |
| q | Keyword | Matches company names, places and officer names. |
| country | Country | US or GB. |
| state | State | Two-letter US state, for example CA. |
| since | Filed in | Only signals published on or after this date, YYYY-MM-DD. |
| within_days | Filed in | Or: only the last N days. Saved searches use this so they stay current. |
| min_amount | Worth at least | Smallest amount, in US dollars, on every signal with money: a round's amount sold, a contract's or grant's value at the ECB reference rate (see Amounts). A signal without an amount never matches. |
| max_amount | API only | Largest amount, in US dollars; same signals as min_amount. |
| stage | Stage | pre_seed, seed, series_a or later. Inferred, never stated in a filing. |
| industry | Industry | Industry name or SIC prefix, for example 62. |
| exclude_funds | Leave out funds | true drops pooled investment funds and SPVs. |
| sort | Column headings | published, company, amount, stage or signal; a leading - is descending. Default -published (newest first). Missing amounts and stages come last either way. The CSV exports follow it too. |
| page | Next | Page number, starting at 1; per_page up to 100. |
| platform | Built on | Comma-separated: wordpress, webflow, shopify, wix, squarespace, godaddy, framer, drupal, nextjs (no platform), other. Read from the homepage each week. |
| cms_outdated | Only outdated versions | true: sites whose CMS is two or more feature releases behind the current one. |
| site_state | Website | up, down (two failed checks a day or more apart) or parked (a parking or for-sale page). |
| email_provider | Comma-separated: google_workspace, microsoft_365, other. From the domain's MX records. |
Example
curl "https://api.daybreakleads.com/v1/signals?type=funding.filed&country=US&within_days=7&min_amount=500000&exclude_funds=true" \
-H "Authorization: Bearer sk_…"GET /v1/signals/feed
Morning feed
Every signal after a cursor, in the order it arrived. Keep next_cursor and poll each morning: you never miss or repeat one. Optional type filter; limit up to 500.
curl "https://api.daybreakleads.com/v1/signals/feed?limit=500" \
-H "Authorization: Bearer sk_…"
# then send next_cursor back as ?cursor=…GET /v1/signals/export
Export as CSV
The same query as Search signals, as a CSV file of up to 5,000 rows: publication date, signal, company, place, amount, stage and a link to the original record.
curl -o signals.csv "https://api.daybreakleads.com/v1/signals/export?type=company.incorporated&country=GB&within_days=1" \
-H "Authorization: Bearer sk_…"GET /v1/signal-types
Signal types
Every signal type, what it means and the family it belongs to. No key needed.
curl https://api.daybreakleads.com/v1/signal-typesPublic money and 8-K
Signals from public money and from 8-K current reports arrive in /v1/signals and the morning feed like every other signal. Filter with type. Contains public sector information licensed under the Open Government Licence v3.0.
Amounts
Every signal has amount, currency and amount_usd, null when it has no money. Only these carry money: funding.filed, funding.amended and funding.progressed from SEC Form D and Form C (the amount sold, in US dollars), contract.awarded (the contract's value in its own currency, usually GBP or EUR) and grant.awarded (the grant in GBP). Never: a Companies House share allotment (funding.filed with details.form SH01 states the company's whole issued capital, not money raised), funding.debt_raised (a charge states no amount), or any other type. amount_usd converts a contract or grant at the European Central Bank's euro reference rate of its publication day, or the latest one before it on a weekend or holiday (details.fx says which), and is what min_amount, max_amount and sort=amount use across all of them. A missing or zero amount is never read as zero: it matches no amount filter and sorts last.
contract.awarded
A UK company won a public-sector contract, from the award notices on Find a Tender and Contracts Finder, read daily. Matched only by the supplier's Companies House number; a winner we did not hold is added as a company. amount and currency are the value as the notice states it (details.value, details.currency); amount_usd is that value in US dollars at the ECB reference rate of the publication day (details.fx), and is what min_amount, max_amount and the amount sort use. A notice without a value has no amount and never matches an amount filter.
{
"type": "contract.awarded",
"what_changed": "£233k · from Kirkdale District Council · Website hosting and support",
"evidence_url": "https://www.find-tender.service.gov.uk/Notice/031877-2026",
"amount": 233400, "currency": "GBP", "amount_usd": 296021,
"details": {
"buyer": "Kirkdale District Council",
"title": "Website hosting and support",
"value": 233400, "currency": "GBP",
"period_start": "2026-10-01", "period_end": "2029-09-30",
"cpv": "72415000", "sme": true,
"notice_url": "https://www.find-tender.service.gov.uk/Notice/031877-2026",
"fx": { "source": "ECB", "rate_on": "2026-09-29", "usd_per_unit": 1.268280 }
}
}grant.awarded
A UK company was awarded an Innovate UK grant: a new row in the funded-projects file on ukri.org, checked weekly and published about monthly, so weeks after the award. The first file we read only set the starting point; only rows added since then become signals. amount is the grant in pounds (details.award); amount_usd is it in dollars at the ECB rate, like a contract's.
{
"type": "grant.awarded",
"what_changed": "£250k · from Innovate UK · Heat-pump controls for social housing",
"amount": 249870, "currency": "GBP", "amount_usd": 316905,
"details": {
"competition": "Smart grants: August 2026",
"project_title": "Heat-pump controls for social housing",
"award": 249870, "currency": "GBP",
"start_on": "2026-11-01", "end_on": "2028-10-31",
"project_number": "10201004",
"fx": { "source": "ECB", "rate_on": "2026-09-29", "usd_per_unit": 1.268280 }
}
}officer.changed
A listed US company reported an executive or director change (8-K item 5.02), read daily from EDGAR. The filing names who and why.
{
"type": "officer.changed",
"what_changed": "Executive or director change (8-K 5.02)",
"details": {
"items": ["5.02", "9.01"],
"form_url": "https://www.sec.gov/Archives/edgar/data/2000001/000200000126000014/larkspan-8k.htm",
"filed_on": "2026-09-25"
}
}company.auditor_changed
A listed US company dismissed or replaced its auditor (8-K item 4.01).
{
"type": "company.auditor_changed",
"what_changed": "Changed auditor (8-K 4.01)",
"details": { "items": ["4.01", "9.01"], "form_url": "https://www.sec.gov/…", "filed_on": "2026-09-25" }
}company.acquisition_completed
A listed US company completed an acquisition or a sale of assets (8-K item 2.01).
{
"type": "company.acquisition_completed",
"what_changed": "Completed an acquisition or sale of assets (8-K 2.01)",
"details": { "items": ["2.01", "9.01"], "form_url": "https://www.sec.gov/…", "filed_on": "2026-09-25" }
}owner.changed
Control of the company changed. From an 8-K (item 5.01) for a listed US company; the same type comes from Companies House for UK owners.
{
"type": "owner.changed",
"what_changed": "Change in control",
"details": { "items": ["5.01"], "form_url": "https://www.sec.gov/…", "filed_on": "2026-09-25" }
}GET /v1/signals?type=funding.progressed
Raise progress and crowdfunding
funding.progressed means a raise moved: a Form D amendment that sold more than the filing it amends, or a crowdfunding progress update that states an amount. amount_usd is the amount sold now; details carry previous_amount_usd, offering_amount_usd, previous_accession, fully_raised and indefinite. Crowdfunding rounds arrive as funding.filed with details.regulation reg_cf, portal, target_usd, maximum_usd, deadline, employees and revenue_usd; the website the filing states becomes the company's website.
curl "https://api.daybreakleads.com/v1/signals?type=funding.progressed,funding.filed&within_days=7" \
-H "Authorization: Bearer sk_…"GET /v1/companies/search
Search companies
The same query parameters as Search signals, one row per company: its most important matching signal (funding first, officers last), how many signals matched and of which kinds, and its website. This is what the app shows. /v1/companies/export gives the same as CSV.
curl "https://api.daybreakleads.com/v1/companies/search?type=company.incorporated&country=GB&has_website=false&within_days=30" \
-H "Authorization: Bearer sk_…"GET /v1/companies/{id}
Get a company
What the company reported to its registry, every signal about it, newest first, and the people named in its filings. The id is company.id on any signal.
curl https://api.daybreakleads.com/v1/companies/{company_id} \
-H "Authorization: Bearer sk_…"POST /v1/companies/{id}/website-search
Find a website
Every company's own website is found automatically and checked against its filing: phone, postcode, name and city on the homepage. It appears as website on Get a company. This call answers with the website when known; for a company not yet reached it starts the search now. Call again in a minute.
curl -X POST https://api.daybreakleads.com/v1/companies/{company_id}/website-search \
-H "Authorization: Bearer sk_…"GET /v1/people
List people
Officers, directors and promoters named on Form D filings, newest filing first. Filter by q (name), within_days and state; page and per_page as for signals.
curl "https://api.daybreakleads.com/v1/people?within_days=7&state=CA" \
-H "Authorization: Bearer sk_…"GET /v1/people/{id}
Get a person
One person: every role with the filing it came from. Ids look like per_ followed by 16 hex characters and appear as person_id on a company's officers.
curl https://api.daybreakleads.com/v1/people/{person_id} \
-H "Authorization: Bearer sk_…"POST /v1/people/{id}/contact-search
Find contact details
Looks up one person's verified work email, only when you ask. Answers 200 with the result when one is on file for your team, or 202 with a search id while it runs in the background, usually under a minute. Needs contacts switched on for the account, the owner's acceptance of the contacts terms, and a key with the daybreak.contacts scope. Addresses the mail server cannot confirm are never returned.
curl -X POST https://api.daybreakleads.com/v1/people/{person_id}/contact-search \
-H "Authorization: Bearer sk_…"GET /v1/contact-searches/{id}
Read a search
The search's status (queued, searching, found, not_found, skipped, failed), the step it is on, and the contact once found, with where each part came from and the rule that applies to your send. GET /v1/contact-searches lists your team's searches this month.
curl https://api.daybreakleads.com/v1/contact-searches/{search_id} \
-H "Authorization: Bearer sk_…"GET /v1/contacts/export
Export contacts
Every verified address your team was shown, as CSV: person, company, email, verified date, filing and sender rule. Report a bounce or an unsubscribe with POST /v1/contacts/{id}/outcome.
curl -o contacts.csv https://api.daybreakleads.com/v1/contacts/export \
-H "Authorization: Bearer sk_…"POST /v1/webhooks
Webhooks
Receive contact_search.completed, person.removed and website.found as they happen. Each delivery is signed: X-Daybreak-Signature: sha256=… is the HMAC-SHA256 of the body with the secret returned once when you create the webhook. When you receive person.removed, delete that person from your tools.
curl -X POST https://api.daybreakleads.com/v1/webhooks \
-H "Authorization: Bearer sk_…" \
-H "Content-Type: application/json" \
-d '{"url":"https://hooks.example.com/daybreak","events":["contact_search.completed","person.removed"]}'GET /v1/lists
Lists and stages
The companies your team keeps, each list with its stages (open, won or lost) and counts. Every account starts with Prospects. POST /v1/lists creates one from a template (sales, investing, simple or blank); stages are added, renamed and reordered under /v1/lists/{id}/stages.
curl https://api.daybreakleads.com/v1/lists \
-H "Authorization: Bearer sk_…"POST /v1/lists/{id}/entries
Companies on a list
Save a company with {"company_id"}; use default for the account's first list. PATCH an entry to move it to a stage, set an owner or a next-step date; POST notes to its timeline; GET /v1/lists/{id}/export for CSV. Webhooks list.entry_added, list.entry_moved and list.entry_signal tell your tools.
curl -X POST https://api.daybreakleads.com/v1/lists/default/entries \
-H "Authorization: Bearer sk_…" \
-H "Content-Type: application/json" \
-d '{"company_id":"{company_id}"}'Authentication
Send an API key as a Bearer token. Create one on API keys. Keys read signals, companies and people; a key needs the daybreak.contacts scope to search contact details. Keys cannot create other keys.
Limits
With a founding membership: 10,000 requests a month per account and 120 a minute per key. Past either, calls return 429 with a Retry-After header. Without a membership, calls return 402 with the code payment_required.
MCP server
The same data as tools for agents, at https://api.daybreakleads.com/v1/mcp. Set it up on Connect MCP.
Your details
Anyone named in a filing can see what we hold about them and remove it, with no account, at Your details.