SearchLight API Beta

The revenue intelligence you can trust.
Now in your workflows.

Every workflow you build runs on the same numbers trusted by 1,500+ home services operators and agencies. Cross-channel marketing attribution, ClaraT™ lead-funnel grading, and industry benchmark context, all from one authenticated request.

Already a SearchLight customer? Generate a key in your dashboard →

One request shape · GET /events · self-serve keys · revenue-verified · updated daily

roas-by-account.sh
curl --get --compressed \
  --url 'https://searchlight.digital/api/<organization>/events' \
  --header 'Authorization: <your-api-key>' \
  --data-urlencode 'start=2026-05-01' \
  --data-urlencode 'end=2026-05-31' \
  --data-urlencode 'fields=account,spend,leads,roasPotential'

# → revenue-verified, ready to use
[
  { "account": "Example Home Services", "spend": 12310.45, "leads": 287, "roasPotential": 5.65 },
  { "account": "Example Plumbing Co.", "spend": 6139.67, "leads": 125, "roasPotential": 4.31 }
]
1,500+
Businesses served
$1B+
Ad spend tracked
40+
Integrations maintained
1
Request shape to learn
The Problem

Your data
shouldn't live in
a weekly export.

Teams building real automation don't want a dashboard to screenshot. They want the numbers, clean and revenue-verified, on their schedule. Without an API, that means someone exporting and pasting the same report by hand, every week, forever.

  • 01Manual export & pasteHours a week rebuilding the same report so it can feed the next tool.
  • 02Backfills stitched by handA year of history split into a dozen requests you chunk, retry, and reassemble yourself.
  • 03Numbers you can't trustRaw CRM attribution mislabels most of the revenue before it ever reaches you.
79.5%
of closed revenue in a 209-account study was attributed to the wrong campaign by the source CRM. The API returns SearchLight's reconciled, revenue-verified numbers instead.
SearchLight Industry Benchmark · Feb 2026 · 209 accounts · $65.0M closed revenue
The Request Model

Pick your metrics.
Pick your grain. Pull.

Every endpoint takes the same shape. On /events you choose the fields. Any known metric is computed; anything else becomes a dimension to group by. Combine them freely to build the exact shape your stack needs.

GET /api/<organization>/events?fields=account,campaign,spend,roasPotential&start=…&end=…

At least one metric is required. Add interval=day|week|month for a time series, which also lets one request run past the 90-day attribution window. Filter on any field.

Group by any dimension

the "who / what / where" of every event
accountcampaignattributionCategory attributionChanneladjustedTypenormalizedBusinessUnit conversionReasonUnbookableopportunityId

Compute any metric

counts, revenue, cost-per, rates & ROAS
spendleadscustomers revenuePotentialclosedRevenueroasPotential avgCostPerLeadstepBookRateconversionQuality
Built for Pipelines

Daily granularity,
long windows,
one call.

Ask for interval=day across a 45-day window and get one clean row per day back. No stitching together a dozen chunked requests. The API is designed to power a real pipeline, not a one-off pull.

  • Time-series built in. interval splits any range into daily, weekly, or monthly rows, each tagged with its own start and end, and carries a single request past the 90-day window.
  • Filter on the way out. Constrain by any field (accounts, categories, campaign regex) with AND / OR logic, so you pull only what the job needs.
  • gzip JSON, arrays of rows. Predictable, flat objects that drop straight into a warehouse table or a dataframe.
daily-pipeline.sh
curl --get --compressed \
  --url '.../api/<organization>/events' \
  --header 'Authorization: <your-api-key>' \
  --data-urlencode 'start=2026-05-01' \
  --data-urlencode 'end=2026-05-31' \
  --data-urlencode 'fields=account,spend,leads' \
  --data-urlencode 'interval=day'

[
  { "start":"2026-05-01", "end":"2026-05-01", "account":"Example Home Services", "spend":412.00, "leads":11 },
  { "start":"2026-05-02", "end":"2026-05-02", "account":"Example Home Services", "spend":388.50, "leads":9 },
  // … one row per day, per account
]
Automate

Replace the weekly export

Retire the manual export-and-paste routine. Point a scheduled job at the endpoint and let the report build itself.

Detect

Daily anomaly alerts

Catch campaigns going dark, spend with zero leads, or a sudden book-rate drop the day it happens, not at the next deep-dive.

Activate

Feed your own tools

Push revenue-verified numbers into the systems your team already uses to adjust campaigns and report to clients.

Worked Examples

Real questions,
one query each.

Every answer is the same request with different fields. Here are three that teams actually run.

Break spend and revenue out per campaign. With campaign as a dimension, spend-based metrics use the spend attributed to that specific campaign.

campaign-roas.sh
--data-urlencode 'fields=account,campaign,spend,revenuePotential,roasPotential'

[
  { "campaign":"Search - Branded", "spend":2104.33, "revenuePotential":11892.50, "roasPotential":5.65 },
  { "campaign":"Search - HVAC", "spend":4880.10, "revenuePotential":15210.00, "roasPotential":3.12 }
]
The Data Model

Every customer,
resolved across the full funnel.

One customer produces many events over their lifecycle. The API exposes that whole journey, so you can pull a single metric or reconstruct the entire path from first touch to closed revenue.

01
lead‑originated
02
booked
03
estimated
04
sold
05
closed

Each event carries its attribution, funnel stage, and revenue, reconciled by SearchLight rather than copied raw from the CRM. Query at the account grain for BI, or at the opportunityId grain to build customer profiles.

From the Teams Building On It

Feedback from
the first integrations.

The way you designed it makes it very user-friendly and lets me access basically everything I can from the web UI. The setup was easy and the documentation is great.

— API user · multi-location home services team

The single /events endpoint with flexible dimensions and metrics is genuinely powerful. Pulling interval=day across a 45+ day window in one call let us build a real daily pipeline instead of a bunch of chunked requests — and fully automated a manual weekly export routine we'd done by hand for months.

— Automation lead · home services marketing agency
Quick Start

Live in
four lines.

If you can send an authenticated GET request, you're done. No SDK required.

  1. Generate your keyCreate an API key yourself in your SearchLight dashboard. Keys start with sl_.
  2. Find your organizationGET https://searchlight.digital/api returns the organizations and accounts your key can reach, plus the full field dictionary.
  3. Call the endpointGET https://searchlight.digital/api/<organization>/events
  4. Choose fields, start & endAt least one metric is required. Ranges cap at 90 days per chunk. Use interval to go longer.
  5. Read the JSONResponses are gzip-compressed JSON arrays, so pass --compressed to curl.
Auth tip Pass the key straight through: Authorization: <your-api-key>. There's no Bearer prefix. Just the key itself.
Beta The API is in beta. Endpoints, fields, and responses can still change, and every change lands in the release notes before it ships. Build against it, and tell us what breaks.
hello-searchlight.sh
# Your first call: group-wide spend, leads & ROAS
curl --get --compressed \
  --url 'https://searchlight.digital/api/<organization>/events' \
  --header 'Authorization: <your-api-key>' \
  --data-urlencode 'start=2026-05-01' \
  --data-urlencode 'end=2026-05-31' \
  --data-urlencode 'fields=spend,leads,roasPotential'

[
  { "spend": 18450.12, "leads": 412, "roasPotential": 4.31 }
]
Stop Exporting. Start Pulling.

Put your revenue data
on autopilot.

One authenticated call stands between your team and a fully automated, revenue-verified data pipeline. Generate a key and make your first call today.

Questions? [email protected] · 1-866-710-4661 · API support: [email protected]

Close Menu