Working with Captures

A Capture is one structured product record produced by a successful product-page extraction or valid Import row. It retains the source URL or import lineage and the time the source was observed.

Browsing captures

• Dashboard

Navigate to Extract > Captures to view your extracted data.

Capture activity chart and data table with export and pagination controls

The list covers the last 90 days. To see older Captures, open their Run from Extract > Runs, or choose the Run or Import as the source: one source's Captures are always listed in full.

The search field finds Captures matching your query. Beside it, open Filters to narrow the results, then select Apply:

  • Source: choose a Run or Import to inspect its Captures.
  • Robot: compare Captures across Runs from the same Robot.
  • Host and Country: narrow the site or market.
Capture filters with a Run selected under Source, above the Robot, Host, and Country filters

Choose the source first when you want to inspect the output of one Run. Select Apply to update the table.

Below the filters, a chart counts Captures per day. Drag its handles to narrow the observation period. The line under the chart gives the number of matching Captures and the days they cover.

The table shows each product's image, Title, Brand, SKUs, Store (its host and country), Source (the Run or Import), and Captured time. Scroll horizontally when additional columns are outside the viewport.

Click a row to open its detail panel:

  • Details — inspect the images, options, price, availability, and other product data.
  • Raw data — inspect or copy the complete Capture as JSON.
Capture Details panel showing the original product, options, price, and availability

• API

List captures from a specific run:

export EXTRALT_API_KEY="your-api-key"

curl -s "https://api.extralt.com/v1/extract/captures?run_id=$RUN_ID" \
  -H "Authorization: Bearer $EXTRALT_API_KEY" | jq

The response is { data, next_cursor }. The default page size is 100 and the maximum is 1,000. See Common Patterns for paginating through large result sets with next_cursor.

Extraction data schema

Every Capture follows the same base product-data contract across sources.

{
    "source_kind": "run",
    "sku_coverage": "partial",
    "source_id": "example-run",
    "observed_at_basis": "acquired",
    "id": "019d3ec3-cf96-7520-bc31-1474206e06ed",
    "url": "https://www.nike.com/t/dna-mens-dri-fit-basketball-shorts-hVGm16/HV1878-350",
    "extracted_at": 1774874512106,
    "product_id": "HV1878-350",
    "handle": "dna-mens-dri-fit-basketball-shorts-hVGm16",
    "group_id": "hVGm16",
    "title": "Nike DNA",
    "subtitle": "Men's Dri-FIT Basketball Shorts",
    "brand": "Nike",
    "breadcrumbs": "Men > Basketball > Shorts",
    "description": "Built for the court, ready for anywhere. These lightweight-yet-durable basketball shorts help keep you cool with our sweat-wicking Dri-FIT technology.",
    "publication_date": "2025-10-02T07:00:00.000Z",
    "gender": "MEN",
    "age_group": "Adult",
    "ratings_average": null,
    "ratings_count": 0,
    "ratings_scale": 5,
    "sku_count": 7,
    "image_url": "https://static.nike.com/a/images/t_default/326dc2d4-a16d-4433-93d7-8d6f8313d4d0/M+NK+DF+DNA+8IN+SHORT+AOP.png",
    "categories": [
        "Men",
        "Basketball",
        "Shorts"
    ],
    "tags": [
        "Basketball",
        "Dri-FIT",
        "Shorts",
        "Men"
    ],
    "images": [
        {
            "url": "https://static.nike.com/a/images/t_default/326dc2d4-a16d-4433-93d7-8d6f8313d4d0/M+NK+DF+DNA+8IN+SHORT+AOP.png",
            "position": 1,
            "sku_ids": [
                "HV1878-350"
            ]
        },
        {
            "url": "https://static.nike.com/a/images/t_default/e2c6c1aa-6d12-46b9-9385-d76bd4fa30e0/M+NK+DF+DNA+8IN+SHORT+AOP.png",
            "position": 3,
            "sku_ids": [
                "HV1878-350"
            ]
        },
        {
            "url": "https://static.nike.com/a/images/t_default/38d8c21c-c8dd-466b-949c-92fdfcd0320b/M+NK+DF+DNA+8IN+SHORT+AOP.png",
            "position": 4,
            "sku_ids": [
                "HV1878-350"
            ]
        },
        {
            "url": "https://static.nike.com/a/images/t_default/79d907aa-1763-4af7-a1bf-99f5fc30acc4/M+NK+DF+DNA+8IN+SHORT+AOP.png",
            "position": 5,
            "sku_ids": [
                "HV1878-350"
            ]
        },
        {
            "url": "https://static.nike.com/a/images/t_default/1cd3d1a3-fea9-4295-bf8a-f3d6d59f2d47/M+NK+DF+DNA+8IN+SHORT+AOP.png",
            "position": 6,
            "sku_ids": [
                "HV1878-350"
            ]
        },
        {
            "url": "https://static.nike.com/a/images/t_default/3cf19355-4f26-4faf-b658-581297b87e9c/M+NK+DF+DNA+8IN+SHORT+AOP.png",
            "position": 7,
            "sku_ids": [
                "HV1878-350"
            ]
        }
    ],
    "videos": null,
    "physical_measurements": null,
    "properties_dict": {
        "Style": "HV1878-350",
        "Shown": "Chlorophyll/Black"
    },
    "properties_list": [
        "Recycled Materials",
        "Designed for Basketball",
        "Unlined",
        "Lightweight, sweat-wicking fabric with mesh and smooth interior",
        "Side pockets and zippered utility pocket large enough for a phone",
        "Elastic waistband with drawcord",
        "Body: 100% polyester. Pocket bags: 100% polyester.",
        "Machine wash",
        "Imported",
        "Shown: Chlorophyll/Black",
        "Style: HV1878-350"
    ],
    "options": {
        "opt1": {
            "name": "Color",
            "values": [
                "Chlorophyll/Black"
            ]
        },
        "opt2": {
            "name": "Size",
            "values": [
                "S",
                "M",
                "L",
                "XL",
                "2XL",
                "3XL",
                "4XL"
            ]
        },
        "opt3": null
    },
    "skus": [
        {
            "id": "90c9f2c2-d984-5cc2-a2a0-89deac668eb3",
            "title": null,
            "offer_coverage": "partial",
            "identifiers": {
                "gtin": "00198482162061",
                "mpn": "HV1878-350"
            },
            "opt1": "Chlorophyll/Black",
            "opt2": "S",
            "opt3": null,
            "offers": [
                {
                    "price": {
                        "amount": "41.97",
                        "compare_at_price": "60",
                        "currency": "USD",
                        "unit": "major"
                    },
                    "availability": {
                        "in_stock": true,
                        "quantity": "In stock"
                    },
                    "condition": "new",
                    "seller": "Nike",
                    "seller_type": "1p"
                }
            ]
        },
        {
            "id": "032621f4-8f17-5716-932d-a93b0d1dfc4a",
            "title": null,
            "offer_coverage": "partial",
            "identifiers": {
                "gtin": "00198481839179",
                "mpn": "HV1878-350"
            },
            "opt1": "Chlorophyll/Black",
            "opt2": "M",
            "opt3": null,
            "offers": [
                {
                    "price": {
                        "amount": "41.97",
                        "compare_at_price": "60",
                        "currency": "USD",
                        "unit": "major"
                    },
                    "availability": {
                        "in_stock": true,
                        "quantity": "In stock"
                    },
                    "condition": "new",
                    "seller": "Nike",
                    "seller_type": "1p"
                }
            ]
        },
        {
            "id": "a73069dc-17b2-5dc7-b5cc-e78c9674d8cd",
            "title": null,
            "offer_coverage": "partial",
            "identifiers": {
                "gtin": "00198481982455",
                "mpn": "HV1878-350"
            },
            "opt1": "Chlorophyll/Black",
            "opt2": "L",
            "opt3": null,
            "offers": [
                {
                    "price": {
                        "amount": "41.97",
                        "compare_at_price": "60",
                        "currency": "USD",
                        "unit": "major"
                    },
                    "availability": {
                        "in_stock": true,
                        "quantity": "In stock"
                    },
                    "condition": "new",
                    "seller": "Nike",
                    "seller_type": "1p"
                }
            ]
        },
        {
            "id": "417e97e7-c31c-5ac0-999c-5b6779ba831d",
            "title": null,
            "offer_coverage": "partial",
            "identifiers": {
                "gtin": "00198482264932",
                "mpn": "HV1878-350"
            },
            "opt1": "Chlorophyll/Black",
            "opt2": "XL",
            "opt3": null,
            "offers": [
                {
                    "price": {
                        "amount": "41.97",
                        "compare_at_price": "60",
                        "currency": "USD",
                        "unit": "major"
                    },
                    "availability": {
                        "in_stock": true,
                        "quantity": "In stock"
                    },
                    "condition": "new",
                    "seller": "Nike",
                    "seller_type": "1p"
                }
            ]
        },
        {
            "id": "42484108-e343-520f-9ed1-1ca72a301174",
            "title": null,
            "offer_coverage": "partial",
            "identifiers": {
                "gtin": "00198481731473",
                "mpn": "HV1878-350"
            },
            "opt1": "Chlorophyll/Black",
            "opt2": "2XL",
            "opt3": null,
            "offers": [
                {
                    "price": {
                        "amount": "41.97",
                        "compare_at_price": "60",
                        "currency": "USD",
                        "unit": "major"
                    },
                    "availability": {
                        "in_stock": true,
                        "quantity": "Limited stock available"
                    },
                    "condition": "new",
                    "seller": "Nike",
                    "seller_type": "1p"
                }
            ]
        },
        {
            "id": "179d2b07-b59e-5a7d-912f-cebf81b1d13f",
            "title": null,
            "offer_coverage": "partial",
            "identifiers": {
                "mpn": "HV1878-350",
                "gtin": "00198482258597"
            },
            "opt1": "Chlorophyll/Black",
            "opt2": "3XL",
            "opt3": null,
            "offers": [
                {
                    "price": {
                        "amount": "41.97",
                        "compare_at_price": "60",
                        "currency": "USD",
                        "unit": "major"
                    },
                    "availability": {
                        "in_stock": false,
                        "quantity": "Out of stock"
                    },
                    "condition": "new",
                    "seller": "Nike",
                    "seller_type": "1p"
                }
            ]
        },
        {
            "id": "fad73aae-e6b1-58ac-83a3-f17125c0b3b2",
            "title": null,
            "offer_coverage": "partial",
            "identifiers": {
                "gtin": "00198482211318",
                "mpn": "HV1878-350"
            },
            "opt1": "Chlorophyll/Black",
            "opt2": "4XL",
            "opt3": null,
            "offers": [
                {
                    "price": {
                        "amount": "41.97",
                        "compare_at_price": "60",
                        "currency": "USD",
                        "unit": "major"
                    },
                    "availability": {
                        "in_stock": false,
                        "quantity": "Out of stock"
                    },
                    "condition": "new",
                    "seller": "Nike",
                    "seller_type": "1p"
                }
            ]
        }
    ]
}

Key fields:

FieldDescription
product_idPrimary product identifier on the site (product handle, ASIN, etc.)
group_idGroups related captures for the same source product family (e.g., different color pages)
title, brand, descriptionCore product identity
image_urlPrimary product image URL
imagesProduct images with position and optional SKU association
skus[].offers[].priceRequired source selling price, optional comparison price, source currency, and unit (major or unscaled minor)
sku_countTotal number of purchasable SKUs
properties_dictStructured attributes as key-value pairs (material, closure, etc.)
properties_listUnstructured features and claims (bullet points from the product page)
ratings_average, ratings_count, ratings_scaleRating metrics
optionsUp to 3 option axes (e.g., Color, Size) with all available values
skusOne entry per purchasable option combination, each with identifiers and offers
skus[].identifiersGTIN, SKU, MPN, and other identifiers for this purchasable SKU
skus[].offersPrice, availability, condition, and seller for each offer
skus[].offers[].seller_type1p (marketplace selling directly), 3p (third-party seller), or null

Prices in minor units are decoded only when the source supplies their scale. Otherwise, Capture preserves the amount with unit: minor; Enrich excludes that unresolved price from analytics. Product-level price and availability summaries are computed after enrichment.

The Capture contract is stable across sources, but field population depends on what the page exposes and what the Robot can validate. Use the OpenAPI Capture schema for requiredness and types; do not treat an absent source fact as a measured zero.

Exporting captures

• Dashboard

Choose Export above the table to download all matching Captures as JSONL, including results beyond the current page. Apply your filters first to control what is included. Each line contains one Capture with its original product data and source information.

For Parquet, use the API export endpoint below. Parquet preserves column types and works well with DuckDB, pandas, and data pipelines.

• API

For bulk download, use the export endpoint. It streams all captures from the run as a single file with Content-Disposition: attachment. The format query parameter accepts parquet (default) or jsonl.

# Parquet (default)
curl -sL "https://api.extralt.com/v1/extract/captures/export" \
  --url-query "run_id=$RUN_ID" --url-query format=parquet \
  -H "Authorization: Bearer $EXTRALT_API_KEY" \
  -o captures.parquet

# JSONL
curl -sL "https://api.extralt.com/v1/extract/captures/export" \
  --url-query "run_id=$RUN_ID" --url-query format=jsonl \
  -H "Authorization: Bearer $EXTRALT_API_KEY" \
  -o captures.jsonl