# Shopify Jsonld Parser

> Parse JSON-LD structured data from Shopify product pages to extract commerce details like product info, offers (price, currency, availability), and inventory status from schema.org/Product and Offer. Use when: (1) analyzing Shopify HTML for product offers/pricing/stock, (2) extracting structured commerce data from web pages or local files, (3) querying JSON-LD for availability (InStock/OutOfStock/PreOrder), prices across variants, or offer counts. Handles @graph arrays and multiple scripts.

- Skill: `knownasnaffy/shopify-jsonld-parser-2` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add knownasnaffy/shopify-jsonld-parser-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/knownasnaffy/shopify-jsonld-parser-2/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: knownasnaffy (https://skillmd.com/u/knownasnaffy)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/knownasnaffy/shopify-jsonld-parser-2

---


# Shopify JSON-LD Parser

Parse JSON-LD from Shopify product pages (or any schema.org/Product JSON-LD) to extract structured commerce data reliably.

## Quick Start

1. Fetch HTML: `web_fetch` a product page URL.
2. Parse: Run `scripts/parse_shopify_jsonld.py input.html` (outputs JSON).
3. Query output for offers, availability, etc.

Example:
```
exec command="python3 skills/shopify-jsonld-parser/scripts/parse_shopify_jsonld.py page.html"
```

## Workflow

1. **Input**: HTML file/path with JSON-LD (from `web_fetch`, `read`, or local).
2. **Find JSON-LD**: Script extracts all `<script type="application/ld+json">` contents.
3. **Parse Product**: Traverse @graph or root for `@type: Product`, extract:
   - name, description, image, sku, brand
   - offers: array of Offer objects → price, priceCurrency, availability, url, itemCondition
   - availability (product-level or per-offer): http://schema.org/InStock, OutOfStock, PreOrder, etc.
   - Variants: Infer from multiple offers or hasVariant.
4. **Output**: Clean JSON: `{product: {...}, offers: [...], inventory_status: "InStock|OutOfStock|Limited|Unknown"}`

Inventory is typically **availability enum**, not exact quantity (use Shopify API for levels). Map:
- InStock → available
- OutOfStock → unavailable
- PreOrder/BackOrder → preorder

## Usage Examples

**Extract offers from page:**
```
read path="shopify-page.html" → html
write path="tmp.html" content=html
exec command="python3 skills/shopify-jsonld-parser/scripts/parse_shopify_jsonld.py tmp.html" → parsed.json
read path="parsed.json"
```

**Query CLI-style:**
Add `--query price` or `--field offers[0].availability` flags to script.

## Script Reference

`scripts/parse_shopify_jsonld.py [input.html] [--query FIELD] [--output json|yaml]`

- Handles malformed JSON-LD gracefully.
- Supports multiple @graph items.
- Validates schema.org types.

## Schema Reference

See `references/schema.md` for schema.org/Product + Offer properties.

## Troubleshooting

- No JSON-LD: Returns `{error: "No product JSON-LD found"}`
- Multiple products: Takes first @type:Product.
- Dynamic Liquid: Static HTML only (no JS-rendered).

