ExtraltExtralt

Query semantics

Correct analysis depends on what one record represents and when it was observed, not only on field names.

Choose the right surface

The constrained SQL endpoint supports one-table SELECT queries over captures, items, or changes. It does not support joins or unrestricted ClickHouse access.

Use the Explore API and dashboard for current markets, cross-store relationships, Variant history, and other views that depend on Extend entities. Use OpenAPI for exact filters and payloads.

Organization scope

The authenticated organization determines the customer dataset. Identifiers should only be interpreted within that dataset unless a response explicitly defines a broader scope.

Current Offers

Offers are observations. The current Offer set for a Listing is all Offers from that Listing's latest observation, not one latest seller row.

This matters for marketplace and multi-SKU pages. Selecting one latest row can leave old sellers or sizes in the apparent current state after they disappear from a later observation. Purpose-built Explore responses apply the product's current-state rule.

Relationships

The primary analytical path is:

Offer -> Listing -> Variant -> Product
           |-> Store
           |-> Review

These are semantic relationships, not joins available through the constrained SQL endpoint. Use Explore for supported relationship views.

Time meanings

FieldMeaning
run_started_atTime the source page was observed by an Extract Run
published_atSource-reported publication date when available
first_seen_atFirst valid Listing observation in this dataset
last_seen_atMost recent valid Listing observation
removed_atExplicit removal observation; null means active in the current model
first_known_atFirst time a Variant became known to this dataset
observed_atTime recorded on a Change event

“New” should mean first observed in this dataset unless an external launch date is explicitly available. Stores can be observed at different times; do not describe asynchronous observations as one synchronized market snapshot.

Country and currency

Store and Listing context is country-specific. Partition comparisons by country by default.

Do not aggregate or compare prices across currencies without an explicit conversion source and timestamp. Extralt does not currently provide currency conversion.

Availability and stock

Availability is an observed source fact. For Store x Variant analysis, the useful default is available when any current comparable Offer for that Store and Variant is available. Keep seller-level availability separate so a marketplace with many sellers does not overweight the result.

Stock level is categorical. Do not infer units on hand, future stock, lost sales, or continuous outage duration between observations.

Reviews

Review entities contain a current aggregate count and a score normalized to 0-100. When combining review aggregates, weight scores by review count and report coverage. Extralt does not currently provide review text, sentiment, or review history.

Missing values

A schema default is not necessarily a measured fact. Empty text, empty arrays, or zero-valued source fields can mean that the source did not expose a value. Check source evidence and coverage before interpreting absence as zero, false, or unavailable.

Coverage and freshness

An analysis should state:

  • stores and countries included;
  • currencies and product conditions included;
  • observation-time range;
  • matched, unmatched, included, and excluded counts where relevant;
  • whether Extend matching is required for the result.

This prevents observed assortment or price coverage from being presented as complete market coverage.

SQL query safety

Select only the columns you need, filter by source and time early, and keep the result bounded. The public SQL endpoint enforces a timeout and result limit, but callers should still avoid unbounded scans. See the semantic model for the supported SQL fields.