Reports & downloads API

Fetch full report data, download exported files, get PageSpeed audits, and retrieve the changelog for any completed job.

Overview

Once a job reaches completed, its report data and exported files become available. This section covers fetching the full report (products, collections, pages), downloading individual files, retrieving the PageSpeed audit, and reading the per-job changelog.

Base URL: https://shopsniffer.com/api

GET /reports/:id Stable

Full report with products, collections, and pages. Returns the complete analysis dataset.

Auth: None for public jobs; API key or session required for private jobs.

id string required

Job UUID.

bash
curl https://shopsniffer.com/api/reports/a1b2c3d4-e5f6-7890-abcd-ef1234567890
json
{ "job": { "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "domain": "allbirds.com", "status": "completed" }, "counts": { "products": 156, "collections": 24, "pages": 18 }, "products": [ { "id": 7891011121, "title": "Tree Runners", "handle": "mens-tree-runners", "vendor": "Allbirds", "product_type": "Shoes", "tags": ["men", "running", "sustainable"], "variants": [ { "id": 43210987654, "title": "10 / Fog", "price": "98.00", "compare_at_price": null, "sku": "TR-FOG-10", "inventory_quantity": null } ], "images": [ { "src": "https://cdn.shopify.com/s/files/1/0001/tree-runners.jpg", "alt": "Tree Runners - Fog" } ] } ], "collections": [ { "id": 12345, "title": "Men's Shoes", "handle": "mens-shoes", "body_html": "<p>Comfortable shoes made from natural materials.</p>", "image": { "src": "https://cdn.shopify.com/..." } } ], "pages": [ { "id": 67890, "title": "Our Story", "handle": "our-story", "body_html": "<p>Founded in New Zealand...</p>" } ] }
json
{ "error": "Report not found" }

GET /downloads Stable

Download an exported file. Returns raw file content — CSV text, JSON array, or PNG image.

jobId string required

Job UUID.

key string required

File name. One of: products.csv, products.json, collections.json, pages.json, screenshot.png.

bash
curl "https://shopsniffer.com/api/downloads?jobId=a1b2c3d4-…&key=products.csv" \ -o products.csv

Response: raw file content with Content-Type set appropriately (text/csv, application/json, or image/png).

json
{ "error": "Missing key or jobId parameter" }
json
{ "error": "Job or file not found" }

Download URLs are also available directly in the job.downloads object returned by GET /jobs/:id — no need to construct them manually.


GET /pagespeed/:jobId Stable

Google PageSpeed Insights audit data for the store's homepage. Returns the full Lighthouse result object.

Auth: None.

jobId string required

Job UUID.

json
{ "data": { "lighthouseResult": { "categories": { "performance": { "score": 0.72 }, "accessibility": { "score": 0.91 }, "best-practices": { "score": 0.83 }, "seo": { "score": 0.95 } }, "audits": { "largest-contentful-paint": { "numericValue": 2450 }, "cumulative-layout-shift": { "numericValue": 0.08 }, "total-blocking-time": { "numericValue": 320 }, "speed-index": { "numericValue": 3200 } } } } }

Scores range from 0 to 1 (multiply by 100 for the familiar 0-100 display). Numeric values for audits are in milliseconds unless otherwise noted. See Google's Lighthouse docs for the full audit reference.


GET /changelog/:jobId Stable

Per-job changelog — structured diff versus the previous completed job for the same store. Empty for the first-ever job on a store.

Auth: None.

jobId string required

Job UUID.

json
{ "changes": [ { "date": "2026-04-12", "added": 3, "removed": 1, "price_changes": 5, "details": [ { "type": "added", "title": "Spring Collection Jacket", "handle": "spring-jacket" }, { "type": "price_change", "title": "Tree Runners", "old_price": "98.00", "new_price": "108.00" } ] } ] }

For the full per-store change history across all snapshots, use GET /store-detail/:slug/changes in the monitoring API.


GET /free-export Stable

Free preview of the first 100 products from any Shopify store. No authentication required — great for trial integrations.

domain string required

Shopify store domain.

bash
curl "https://shopsniffer.com/api/free-export?domain=allbirds.com"
json
{ "products": [ { "id": 7891011121, "title": "Tree Runners", "handle": "mens-tree-runners", "vendor": "Allbirds", "variants": [{ "id": 43210987654, "price": "98.00", "sku": "TR-FOG-10" }], "images": [{ "src": "https://cdn.shopify.com/..." }] } ] }
json
{ "error": "Failed to fetch: 404" }

Free export is rate-limited at the Cloudflare edge per IP. Sustained abuse is automatically blocked. For reliable access, use an API key and POST /jobs instead.

Next steps

Jobs API

Create and poll jobs before fetching their reports.

Learn More
Monitoring API

Track stores over time for change detection.

Learn More
Downloads feature

What each export file contains and use cases.

Learn More
Product export

CSV schema and Shopify import compatibility.

Learn More
Ask a question... ⌘I