Skip to main content

wpscrape

Scrape any WordPress/WooCommerce store - products, categories & metadata from the public REST API.

PyPI version Python License: MIT Tests


No API key or authentication required. Uses the public wc/store/v1 endpoint designed for frontend access.

Features

  • SDK - Python client with full type hints and dataclass models
  • CLI - Rich terminal output with tables, search, filtering, and export
  • REST API - FastAPI server with auto-generated OpenAPI docs
  • Export - JSON and CSV export out of the box
  • Pagination - Auto-pagination or manual page-by-page control
  • Proxy support - Route requests through any HTTP proxy
  • Retry logic - Exponential backoff with jitter on transient failures

Install

pip install wpscrape

With CLI support (rich tables):

pip install wpscrape[cli]

With REST API server:

pip install wpscrape[api]

Everything:

pip install wpscrape[all]

Quick Start

Python SDK

from wpscrape import WordPress, Exporter

wp = WordPress("boskistores.com")

# Site metadata
site = wp.site_info()
print(site.name, site.has_woocommerce)

# All products (auto-paginates)
products = wp.products()
for p in products:
    print(p.name, p.price, p.currency)

# Search products
results = wp.search("smartwatch")

# Filter by category
earbuds = wp.category_products("earbuds")

# Single product by slug
product = wp.product("12v-router-power-bank")

# Paginated access
page = wp.products_page(page=1, per_page=10)
print(page.total, page.has_next)

# All categories
categories = wp.categories()

# Export to files
exporter = Exporter()
exporter.products_to_json(products)
exporter.products_to_csv(products)
exporter.categories_to_json(categories)

CLI

# Scrape all products
wpscrape products boskistores.com

# Search products
wpscrape products boskistores.com --search smartwatch

# Filter by category
wpscrape products boskistores.com --category earbuds

# Paginated output
wpscrape products boskistores.com --page 1 --limit 10

# JSON output
wpscrape products boskistores.com --json

# Save to file
wpscrape products boskistores.com --save products.csv

# Categories
wpscrape categories boskistores.com

# Site info
wpscrape site boskistores.com

# Use a proxy
wpscrape --proxy http://user:pass@host:8080 products boskistores.com

REST API

# Start the API server
wpscrape serve

# With custom host/port
wpscrape serve --host 0.0.0.0 --port 3000

Endpoints:

Method Path Description
GET /api/v1/products?domain=... List/search products
GET /api/v1/products/{slug}?domain=... Single product
GET /api/v1/categories?domain=... List categories
GET /api/v1/site?domain=... Site metadata
GET /health Health check
GET /docs OpenAPI docs

Configuration

Proxy

wp = WordPress("store.com", proxy="http://user:pass@host:8080")

Or via environment variable:

export WPSCRAPE_PROXY=http://user:pass@host:8080
wpscrape products store.com

Timeout & Retries

wp = WordPress("store.com", timeout=60.0, max_retries=5)

Models

All data is returned as typed dataclasses:

  • SiteInfo - site name, description, URL, namespaces, WooCommerce detection
  • Product - full product data with prices, images, categories, attributes, variations
  • Category - category with product count, parent, image
  • PaginatedResponse - page metadata with has_next / has_previous

License

MIT

Metadata

Release files for wpscrape 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wpscrape 0.1.1
File Size Uploaded
wpscrape-0.1.1.tar.gz 18.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wpscrape 0.1.1
File Interpreter ABI Platform
wpscrape-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 42.2 kB

Release files / wpscrape-0.1.1.tar.gz

Download URL wpscrape-0.1.1.tar.gz
Size 18.1 kB
Tags Source
SHA-256 checksum
How to use checksums
8c2e026d87a47456913b9adcaff119d3e27afb67749613acb6a21af2966f4a09
BLAKE2b-256 checksum
How to use checksums
f3d1aa72d240fffde4efe7a4f0e6a74094a0bb1b01418ab43d65ebab13fa5909
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 28, 2026.

Transparency log

Release files / wpscrape-0.1.1-py3-none-any.whl

Download URL wpscrape-0.1.1-py3-none-any.whl
Size 24.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e67998aa38a462d763015fbb270a40347ff195f54899a08e8249108597fa41d0
BLAKE2b-256 checksum
How to use checksums
37a475e21db5206f355c9dce69ddccac49ec8d3a79a94d97ba142075335590b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 28, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page