DEV Community

Cover image for Best Buy Data API: Extract Structured JSON in 2026
AlterLab
AlterLab

Posted on • Originally published at alterlab.io

Best Buy Data API: Extract Structured JSON in 2026

This guide covers extracting publicly accessible data. Always review a site's robots.txt and Terms of Service before scraping.

TL;DR

Use AlterLab's Extract API with a JSON schema to get structured Best Buy product data. Define fields like title, price, and SKU in your schema, POST the URL and schema to /v1/extract, and receive validated JSON output: and receive validated JSON output—no HTML parsing needed.

Why use Best Buy data?

Engineers integrate Best Buy data for:

  • Training price prediction models with historical e-commerce trends
  • Building competitive intelligence dashboards tracking SKU-level availability
  • Enriching product catalogs for recommendation engines using public attribute data

What data can you extract?

From publicly visible Best Buy product pages, you can extract:

  • title: Product name (e.g., "Apple MacBook Pro 14-inch")
  • price: Current selling price as string (avoids floating-point issues)
  • currency: ISO currency code (e.g., "USD")
  • sku: Best Buy's unique stock keeping unit
  • availability: Text status like "In Stock" or "Coming Soon"
  • rating: Average customer review score (e.g., "4.5")

These fields map cleanly to e-commerce data pipelines and ML feature stores.

The extraction approach

Raw HTTP requests + HTML parsing fail on Best Buy due to:

  • Dynamic content loaded via JavaScript after initial HTML
  • Frequent DOM structure changes breaking CSS selectors
  • Anti-bot measures requiring header rotation and proxy management

AlterLab's data API handles these challenges through:

  • Automatic JavaScript rendering in headless browsers
  • Schema-driven AI extraction (no selector maintenance)
  • Built-in proxy rotation and rate limit compliance
  • Validated JSON output matching your defined schema

Quick start with AlterLab Extract API

Getting started guide shows installation. For Best Buy extraction:

```python title="extract_bestbuy-com.py" {5-12}

client = alterlab.Client("YOUR_API_KEY")

schema = {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Product title from Best Buy page"
},
"price": {
"type": "string",
"description": "Current price as displayed"
},
"currency": {
"type": "string",
"description": "3-letter currency code (USD, CAD, etc.)"
},
"sku": {
"type": "string",
"description": "Best Buy SKU identifier"
},
"availability": {
"type": "string",
"description": "Stock status text"
},
"rating": {
"type": "string",
"description": "Average rating (e.g., '4.2')"
}
}
}

result = client.extract(
url="https://www.bestbuy.com/site/apple-macbook-pro-14-inch-space-gray/6438305.p",
schema=schema,
)
print(result.data)




Equivalent cURL request:


```bash title="Terminal"
curl -X POST https://api.alterlab.io/v1/extract \
  -H "X-API-Key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://www.bestbuy.com/site/apple-macbook-pro-14-inch-space-gray/6438305.p",
    "schema": {
      "properties": {
        "title": {"type": "string"},
        "price": {"type": "string"},
        "currency": {"type": "string"},
        "sku": {"type": "string"},
        "availability": {"type": "string"},
        "rating": {"type": "string"}
      }
    }
  }'
Enter fullscreen mode Exit fullscreen mode

Define your schema

The schema parameter drives AlterLab's AI extraction:

  • Field names must match your desired output keys
  • description helps the AI locate correct elements (optional but recommended)
  • type enforces JSON schema validation (string/number/boolean/object/array)
  • Output receives automatic type coercion (e.g., price strings stay strings to preserve precision)

AlterLab validates against your schema before returning data—failed validations include error details for debugging.

Handle pagination and scale

For catalog-scale extraction:

  1. Batching: Process 50-100 URLs per request using AlterLab's batch endpoint
  2. Rate limits: Stay within your plan's requests/second (see pricing for tiers)
  3. Async jobs: For >10K URLs, use webhook notifications when batches complete

Example async batch job:

```python title="batch_extract.py" {8-15}

from alterlab import BatchJob

client = alterlab.Client("YOUR_API_KEY")

urls = [
"https://www.bestbuy.com/site/apple-macbook-pro-14-inch-space-gray/6438305.p",
"https://www.bestbuy.com/site/dell-xps-15/6402355.p",
# ... 98 more URLs
]

job = BatchJob(
client=client,
urls=urls,
schema=schema, # Reuse schema from above
webhook_url="https://yourdomain.com/webhook/alterlab",
metadata={"source": "bestbuy_catalog"}
)

job.start()
print(f"Batch job {job.id} queued for processing")




<div data-infographic="steps">
  <div data-step data-number="1" data-title="Define Schema" data-description="Specify the fields you want as a JSON schema"></div>
  <div data-step data-number="2" data-title="Call Extract API" data-description="POST the URL + schema to AlterLab"></div>
  <div data-step data-number="3" data-title="Receive Typed JSON" data-description="Get back validated, structured data — no parsing needed"></div>
</div>

## Key takeaways
- AlterLab's Extract API delivers schema-validated JSON from Best Buy without HTML parsing
- Focus on publicly available data: title, price, currency, SKU, availability, rating
- Handle scale via batching, rate limit awareness, and asynchronous webhook jobs
- Review [Extract API docs](/docs/api/extract) for full parameter details
- Always comply with Best Buy's robots.txt and Terms of Service

AlterLab // Web Data, Simplified.
Enter fullscreen mode Exit fullscreen mode

Top comments (0)