Skip to main content
The Bulk Catalog Export pattern pulls Snappy’s catalog into your own data store asynchronously. You queue a job, poll until it completes, then download an NDJSON file with one product per line. This is the right pattern when you need a local copy of the catalog - for blending with other data sources, powering a search index, or serving from your own infrastructure.

When to use

Use bulk export when:
  • You already have local catalog infrastructure (search index, database, product schema)
  • You want to blend Snappy products with other sources
  • Your rendering layer cannot tolerate per-request API latency
Use Real-Time Catalog Access instead for simpler integrations that don’t need a local copy.

The three-phase lifecycle

Every export goes through Queue → Poll → Download:
  1. Queue - POST to an export endpoint to start a job. You get back an exportId.
  2. Poll - GET the job status until status is completed (or failed).
  3. Download - fetch the file(s) from the downloadUrls map in the completed job response.

Two export paths

Filtered products export

Export products from the full catalog with optional filters. catalog and format are required; locations defaults to ["US"]. See Create products export for all filters.

Collection-scoped export

Export all products in a specific collection. collectionId, catalog, and locations are required. See Create collections export.
Both endpoints return 200 OK immediately with the job ID:
Each create call starts a new export job - repeated calls with the same body are not deduplicated. Store the exportId of the job in progress and wait for it to finish before starting another.
  • Run each export at most once a day. Use webhooks for changes between exports - see Keeping your local copy fresh.
  • Keep each job to 50 locations or fewer. To cover more countries, split them across multiple jobs and run them one after another.

Poll and download

Both export types share the same poll endpoint:
The job moves through pending → processing → completed or failed. When completed, the response includes a downloadUrls map of signed URLs (keyed by file identifier or location code). When failed, it includes an errorMessage. See Export API for the shape of each line in the file.

Keeping your local copy fresh

After the initial bulk export, use the stock-availability-updates webhook to receive incremental updates instead of re-exporting the full catalog on a timer.
Subscribe to this event in your Webhook configuration. Each event carries the products whose availability or pricing changed. Update only those records in your local store.
Re-run a full bulk export periodically as a safety net - at most once a day - and rely on webhooks for real-time freshness in between. This covers any webhook delivery failures.

Common pitfalls

Last modified on October 21, 2026