> ## Documentation Index
> Fetch the complete documentation index at: https://docs.shopsniffer.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 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.

Job UUID.

**Fetch full report**

```bash
curl https://shopsniffer.com/api/reports/a1b2c3d4-e5f6-7890-abcd-ef1234567890
```

**Full report**

```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>"
    }
  ]
}
```

**Show response field reference**

**job.id** Job UUID.
  **job.status** Always `completed` when the report is fetchable.
  **counts** Object with `products`, `collections`, `pages` integer counts.
  **products** Array of Shopify product objects with full variant detail.
  **collections** Array of collections with `title`, `handle`, `body_html`, `image`.
  **pages** Array of static pages with `title`, `handle`, `body_html`.

```json title="404 Not Found"
{ "error": "Report not found" }
```

---

## `GET /downloads` Stable

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

Job UUID.

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

**Download the product CSV**

```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 title="400 Bad Request"
{ "error": "Missing key or jobId parameter" }
```

```json title="404 Not Found"
{ "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.

Job UUID.

**PageSpeed audit**

```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](https://developer.chrome.com/docs/lighthouse) 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.

Job UUID.

**Changelog**

```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](/api/monitoring).

---

## `GET /free-export` Stable

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

Shopify store domain.

**Free preview**

```bash
curl "https://shopsniffer.com/api/free-export?domain=allbirds.com"
```

**First 100 products**

```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 title="502 Bad Gateway"
{ "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](/api/jobs)**

Create and poll jobs before fetching their reports.
  **[Monitoring API](/api/monitoring)**

Track stores over time for change detection.
  **[Downloads feature](/downloads)**

What each export file contains and use cases.
  **[Product export](/product-export)**

CSV schema and Shopify import compatibility.