Extract Product Catalog Data

Extract product names, SKUs, prices, and specifications from catalog documents into structured JSON for e-commerce workflows.

Who this is for

E-commerce teams and marketplace operators use this recipe to digitize supplier catalogs. Upload a catalog PDF and receive structured JSON with product names, SKUs, prices, and descriptions — ready for bulk import into your product database or storefront.

curl -X POST https://api.iterationlayer.com/document-extraction/v1/extract \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "files": [
      {
        "type": "url",
        "name": "catalog.pdf",
        "url": "https://example.com/catalogs/supplier-catalog.pdf"
      }
    ],
    "schema": {
      "fields": [
        { "name": "products", "type": "ARRAY", "description": "List of products in the catalog", "fields": [
          { "name": "name", "type": "TEXT", "description": "Product name" },
          { "name": "sku", "type": "TEXT", "description": "Stock keeping unit identifier" },
          { "name": "price", "type": "CURRENCY_AMOUNT", "description": "Product price" },
          { "name": "description", "type": "TEXTAREA", "description": "Product description" }
        ]}
      ]
    }
  }'
import { IterationLayer } from "iterationlayer";
const client = new IterationLayer({ apiKey: "YOUR_API_KEY" });

const result = await client.extract({
  files: [
    {
      type: "url",
      name: "catalog.pdf",
      url: "https://example.com/catalogs/supplier-catalog.pdf",
    },
  ],
  schema: {
    fields: [
      { name: "products", type: "ARRAY", description: "List of products in the catalog", fields: [
        { name: "name", type: "TEXT", description: "Product name" },
        { name: "sku", type: "TEXT", description: "Stock keeping unit identifier" },
        { name: "price", type: "CURRENCY_AMOUNT", description: "Product price" },
        { name: "description", type: "TEXTAREA", description: "Product description" },
      ]},
    ],
  },
});

console.log(result);
from iterationlayer import IterationLayer
client = IterationLayer(api_key="YOUR_API_KEY")

result = client.extract(
    files=[
        {
            "type": "url",
            "name": "catalog.pdf",
            "url": "https://example.com/catalogs/supplier-catalog.pdf",
        }
    ],
    schema={
        "fields": [
            {"name": "products", "type": "ARRAY", "description": "List of products in the catalog", "fields": [
                {"name": "name", "type": "TEXT", "description": "Product name"},
                {"name": "sku", "type": "TEXT", "description": "Stock keeping unit identifier"},
                {"name": "price", "type": "CURRENCY_AMOUNT", "description": "Product price"},
                {"name": "description", "type": "TEXTAREA", "description": "Product description"},
            ]},
        ]
    },
)

print(result)
package main

import (
    "fmt"
    il "github.com/iterationlayer/sdk-go"
)

func main() {
    client := il.NewClient("YOUR_API_KEY")

    result, err := client.Extract(il.ExtractRequest{
        Files: []il.FileInput{
            il.NewFileFromURL("catalog.pdf", "https://example.com/catalogs/supplier-catalog.pdf"),
        },
        Schema: il.ExtractionSchema{
            "products": il.NewArrayFieldConfig("products", "List of products in the catalog", il.ExtractionSchema{
                "name":        il.NewTextFieldConfig("name", "Product name"),
                "sku":         il.NewTextFieldConfig("sku", "Stock keeping unit identifier"),
                "price":       il.NewCurrencyAmountFieldConfig("price", "Product price"),
                "description": il.NewTextFieldConfig("description", "Product description"),
            }),
        },
    })
    if err != nil {
        panic(err)
    }

    fmt.Println(result)
}

Related Recipes

Start building in minutes

Free trial credits included. No credit card required.