Afferent Synapse

API Documentation

Programmatic access to every banner you've purchased or subscribed to. All endpoints return the same live data as the dashboard export. There is no separate, staler copy.

Authentication

Generate a key from your dashboard and send it as the x-api-key header on every request. One key works across every banner and category you have access to. Keys aren't scoped to a single banner.

curl -H "x-api-key: rtl_..." \
  "https://synapse.afferentsignal.com/api/v1/banner-data?banner_id=<uuid>&format=json"

Endpoints

GET/api/v1/banner-data

Returns the full current store list for one banner, gated to your purchased/subscribed tier and states. Fields above your tier are returned as null, never omitted, so the response shape is stable regardless of tier.

ParamRequiredDescription
banner_idYesUUID, from the catalog page or /catalog listing.
formatNo, default jsoncsv, json, geojson, parquet, or xlsx.
GET/api/v1/banner-data/delta

Returns only what changed since a given timestamp (stores opened, closed, or updated) instead of the full dataset. This is the intended way to stay continuously current: poll on whatever cadence you need and pass the last timestamp you saw back in as since, rather than re-downloading the full export every time.

ParamRequiredDescription
banner_idYesUUID.
sinceYesISO 8601 timestamp. Returns changes strictly after this time.

Capped at 5,000 changes per call (truncated: true in the response if hit). For a first sync, call the main export endpoint instead, then switch to delta polling from that point forward.

GET/api/v1/category-data

Requires either a one-time category purchase or an active category subscription. Streams every banner in that category as one file, tagged with banner_id/banner_name per row: the bulk path for a "buy the whole category" integration instead of calling /banner-data once per banner. A one-time purchase covers only the banners that existed at purchase time; a subscription also covers banners added to the category later.

ParamRequiredDescription
categoryYesOne of the categories listed below.
formatNo, default csvcsv or jsonl (newline-delimited JSON: a single category can span tens of thousands of stores, so this streams rather than building one large JSON array in memory).

Data freshness

The full store universe is re-verified on a weekly crawl cadence; last_scraped_at on each store tells you exactly when. A subscription (as opposed to a one-time purchase) doesn't change how often the underlying data is refreshed. It changes how long your access stays current: a one-time purchase is a snapshot of the data at checkout, while a subscription keeps returning live, current results for as long as it stays active, with no need to re-purchase.

Categories

In addition to buying a single banner, you can buy or subscribe to an entire retail category at once, useful if you need broad coverage across many chains (e.g. every Food retailer) rather than managing dozens of individual purchases. A one-time category purchase is priced and fulfilled like buying every banner in that category individually, in a single checkout. It covers exactly the banners that existed at purchase time. A category subscription additionally auto-covers banners added to the category later, and applies volume pricing above 2,000 stores. Available categories:

FoodConvenienceDrugDiscountClubMass MerchantMilitary

Start a category or banner subscription from the pricing calculator on any banner's catalog page, or contact us directly for a large multi-category deal.

Fields and tier gating

Every field is present in every response; fields above your purchased/subscribed tier come back as null rather than being omitted.

FieldTierDescription
store_idBaselineInternal unique identifier (UUID).
store_numberBaselineThe retailer's own store number where available. Not populated for USDA SNAP-sourced banners (no equivalent field in that source); see Coverage notes below.
address, city, state, zip_codeBaselineStreet address, parsed into components.
lat, longBaselineDecimal degrees, WGS84.
phoneBaselineNot populated for USDA SNAP-sourced banners (no phone field in that source).
pharmacy_flagBaselineWhether the store has an in-store pharmacy. Not populated for SNAP-sourced banners.
statusBaselineACTIVE or CLOSED, as of the last weekly crawl.
last_scraped_atBaselineTimestamp this store record was last verified against its source.
total_populationMid-tierCensus tract population (ACS 5-year estimate).
median_household_incomeMid-tierCensus tract median household income, in USD (ACS 5-year estimate).
affluence_indexMid-tierA composite 0-100 score derived from tract income and population density.
ethnicity_breakdown_jsonMid-tierCensus tract ethnicity breakdown by percentage, as a JSON object.
daytime_populationMid-tierWorkplace/daytime population: jobs located in this store's census block (Census LODES), distinct from total_population which is residential.
snap_authorizedPremiumWhether the store is USDA SNAP-authorized (true/false).
wic_authorizedPremiumWhether the store is a verified WIC vendor. true/false only for the states with a confirmed source (see Coverage notes); null everywhere else, meaning "not evaluated," never treated as a negative result.
ev_charger_present, ev_charger_countPremiumPresence and count of EV chargers within the property, sourced from the DOE Alternative Fuels Data Center.
ev_networks, ev_dc_fast_countPremiumDistinct charging network names (e.g. Tesla, ChargePoint, EVgo) and count of DC fast chargers among the nearby stations, from the same NREL AFDC data as ev_charger_count.
primary_road_aadtPremiumAnnual Average Daily Traffic on the nearest primary road (FHWA National Highway System), vehicles/day.
competitive_density_3miPremiumCount of same-channel competitor stores within a 3-mile radius.
food_desertPremiumUSDA ERS Food Access Research Atlas low-income/low-access tract designation for this store's location.
opportunity_zonePremiumWhether this store sits in a federally-designated Qualified Opportunity Zone (Treasury/CDFI Fund).
crime_indexPremiumViolent + property crime rate per 1,000 population, from the FBI Crime Data Explorer.
diabetes_prevalence_pct, obesity_prevalence_pctPremiumCDC PLACES modeled prevalence among adults in this store's ZIP Code Tabulation Area.
recreation_site_count, nearest_recreation_distance_miPremiumCount of national parks/forests/BLM-BOR-Corps recreation areas and federal campgrounds within 25 miles, and distance in miles to the single nearest one. A seasonal foot-traffic signal, from Recreation.gov's Recreation Information Database (RIDB).

Coverage notes