Skip to main content
Export cell scores, score history, and validation data from Locus as CSV or JSON. You can run a one-off export or schedule recurring deliveries on a daily, weekly, or monthly cadence.

On-demand export

GET /api/v1/locus/exports

Requires API key. Export must be enabled on your access tier.
Download scoring data as CSV or JSON. Supports filtering by H3 cell, profile, metro area, date range, and portfolio. Parameters
NameTypeRequiredDescription
tablestringcell_scores (default), cell_score_history, or locus_validation_view.
formatstringcsv (default) or json.
profilestringScoring profile filter (e.g. general, qsr).
h3_indexstringSingle H3 cell id filter.
metro_slugstringMetro area filter (only for cell_scores).
sincestringStart date (ISO format).
untilstringEnd date (ISO format).
portfolio_idstringScope export to locations in a specific portfolio.
asset_classstringScope export to locations in portfolios matching this asset class.
limitnumberMax rows (default 1,000, capped by your tier).
offsetnumberRow offset for pagination.
Available tables
TableDescriptionKey columns
cell_scoresLatest composite and signal group scores per cell.h3_index, profile, composite, signal groups, metro_slug, neighborhood, computed_at
cell_score_historyHistorical score snapshots with deltas and change flags.h3_index, profile, scored_at, composite, delta_composite, change_flags
locus_validation_viewModel validation metrics — predicted vs. observed values.h3_index, metric_type, temporal_period, value_normalized, predicted_score, residual_error
Example — CSV download
curl -H "X-API-Key: YOUR_KEY" \
  "https://axiomlocus.io/api/v1/locus/exports?table=cell_scores&metro_slug=sf&format=csv" \
  -o scores.csv
Example — JSON with portfolio scope
curl -H "X-API-Key: YOUR_KEY" \
  "https://axiomlocus.io/api/v1/locus/exports?table=cell_scores&portfolio_id=p_abc123&format=json"
JSON response
{
  "table": "cell_scores",
  "rows": [
    {
      "h3_index": "882a100d63fffff",
      "profile": "general",
      "composite": 78.4,
      "business_vitality": 82,
      "population_momentum": 71,
      "demographics": 80,
      "economic_strength": 74,
      "development_pipeline": 78,
      "accessibility": 69,
      "safety_environment": 65,
      "amenity_demand": 72,
      "metro_slug": "sf",
      "neighborhood": "Financial District",
      "computed_at": "2026-04-19T06:00:00Z"
    }
  ],
  "count": 1,
  "tier": "pro",
  "pagination": {
    "limit": 1000,
    "has_more": false,
    "next_cursor": null
  }
}
CSV response includes pagination headers:
HeaderDescription
X-Pagination-LimitCurrent page size.
X-Pagination-Has-Moretrue or false.
X-Pagination-Next-CursorOffset for the next page, or empty if no more rows.

Scheduled delivery

POST /api/v1/locus/exports

Requires API key and session authentication. Export must be enabled on your access tier.
Create a recurring export schedule. Locus runs the export automatically and delivers the results to your email or an S3-compatible bucket. Parameters
NameTypeRequiredDescription
namestringSchedule name (defaults to “Scheduled export”).
tablestringcell_scores (default), cell_score_history, or locus_validation_view.
formatstringcsv (default) or json.
cadencestringdaily, weekly, or monthly.
delivery_modestringemail or s3.
delivery_targetstringFor email: your verified account email. For s3: a subfolder name (alphanumeric, hyphens, underscores).
profilestringScoring profile filter.
h3_indexstringSingle cell filter.
metro_slugstringMetro area filter.
sincestringStart date filter.
untilstringEnd date filter.
portfolio_idstringScope to a portfolio.
asset_classstringScope to an asset class.
limitnumberMax rows per delivery.
For email delivery, the target must match your verified account email. For S3 delivery, files are stored under a path scoped to your user id — you provide a subfolder name and Locus manages the prefix.
Example — weekly email delivery
curl -X POST https://axiomlocus.io/api/v1/locus/exports \
  -H "X-API-Key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Weekly SF scores",
    "table": "cell_scores",
    "format": "csv",
    "cadence": "weekly",
    "delivery_mode": "email",
    "delivery_target": "analyst@yourcompany.com",
    "metro_slug": "sf",
    "profile": "retail"
  }'
Example — daily S3 delivery for a portfolio
curl -X POST https://axiomlocus.io/api/v1/locus/exports \
  -H "X-API-Key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Daily portfolio sync",
    "table": "cell_scores",
    "format": "json",
    "cadence": "daily",
    "delivery_mode": "s3",
    "delivery_target": "portfolio-sync",
    "portfolio_id": "p_abc123"
  }'
Response
{
  "schedule": {
    "id": "sched_001",
    "name": "Weekly SF scores",
    "table_name": "cell_scores",
    "format": "csv",
    "cadence": "weekly",
    "delivery_mode": "email",
    "delivery_target": "analyst@yourcompany.com",
    "status": "active",
    "next_run_at": "2026-04-20T12:00:00Z",
    "created_at": "2026-04-20T12:00:00Z"
  }
}
FieldTypeDescription
statusstringactive or paused.
next_run_atstringWhen the next delivery will be processed.