Skip to main content

pangolinfo-amazon-scraper

Official Python SDK for the Pangolinfo Scrape API — structured e-commerce data from Amazon, Walmart, eBay, Shopify and more, delivered as JSON, clean HTML or LLM-friendly Markdown.

Built and maintained by PANGOLIN INFO TECH PTE. LTD.

PyPI version Python versions License: MIT

Why this SDK

The Pangolinfo Scrape API dynamically adapts to page-structure changes so you never maintain fragile selectors. You get:

  • Structured JSON for product details, keyword search, rankings, reviews and more
  • Raw HTML and Markdown output for AI/LLM pipelines
  • 99.9% uptime with built-in anti-bot handling and residential IP rotation
  • Sync + async interfaces from a single package
  • Coverage of Amazon, Walmart, eBay, Shopify, Shopee

Installation

pip install pangolinfo-amazon-scraper

Quick start

1. Get a free API key

Sign up at tool.pangolinfo.com — open-source contributors get 200 free API calls and full parser templates. See the free-tier details.

2. Use the SDK

from pangolinfo_amazon_scraper import PangolinfoClient

# Authenticate with a token from your dashboard...
client = PangolinfoClient(token="your_bearer_token")

# ...or with email/password (the SDK logs in for you)
# client = PangolinfoClient(email="you@example.com", password="secret")

# Fetch an Amazon product by ASIN
result = client.amazon.get_product("B0DYTF8L2W", zipcode="10041")
print(result.json_data)
# {"asin": "B0DYTF8L2W", "title": "...", "price": ..., "rating": ..., ...}

Async usage

import asyncio
from pangolinfo_amazon_scraper import AsyncPangolinfoClient

async def main():
    async with AsyncPangolinfoClient(token="your_bearer_token") as client:
        result = await client.amazon.get_product("B0DYTF8L2W")
        print(result.json_data)

asyncio.run(main())

Features

Multiple output formats

# Structured JSON (default)
result = client.scrape(
    url="https://www.amazon.com/dp/B0DYTF8L2W",
    parser_name="amzProductDetail",
    formats=["json"],
)

# LLM-friendly Markdown
md = client.scrape(url="...", parser_name="amzProductDetail", formats=["markdown"])
print(md.markdown)

# Raw HTML
html = client.scrape(url="...", parser_name="amzProductDetail", formats=["rawHtml"])
print(html.html)

# All three at once
result = client.scrape(url="...", parser_name="amzProductDetail", formats=["json", "rawHtml", "markdown"])

Platform helpers

# Amazon
client.amazon.get_product("B0DYTF8L2W", zipcode="10041")
client.amazon.search("wireless earbuds", domain="www.amazon.com")

# Walmart
client.walmart.get_product("123456789")
client.walmart.search("blender")

Generic scrape (any platform / parser)

from pangolinfo_amazon_scraper import PARSERS

# Use a known parser key
result = client.scrape(
    url="https://www.amazon.com/dp/B0DYTF8L2W",
    parser_name=PARSERS["amazon_product_detail"],
    formats=["json"],
    zipcode="10041",
)

# Or pass the raw parser name the API accepts
result = client.scrape(
    url="https://www.ebay.com/itm/...",
    parser_name="ebayProductDetail",
    formats=["json"],
)

Async callbacks for high-throughput jobs

result = client.scrape(
    url="https://www.amazon.com/dp/B0DYTF8L2W",
    parser_name="amzProductDetail",
    formats=["json"],
    callback_url="https://your-server.com/webhook",  # async mode
)

API reference

PangolinfoClient

Method Description
PangolinfoClient(token=...) Create a client with an existing bearer token
PangolinfoClient(email=..., password=...) Create a client that logs in lazily
client.scrape(url, parser_name, formats, zipcode, ...) Core scrape call
client.amazon.get_product(asin, zipcode) Amazon product detail
client.amazon.search(keyword) Amazon keyword search
client.walmart.get_product(product_id) Walmart product detail
client.walmart.search(keyword) Walmart keyword search
client.login() Force (re)authentication
client.close() Close the HTTP connection pool

AsyncPangolinfoClient

Async mirror of PangolinfoClient — every method is a coroutine and supports async with.

ScrapeResult

Attribute Type Description
result.json_data dict / list / None Parsed JSON payload
result.html str / None Raw HTML (when rawHtml requested)
result.markdown str / None Markdown (when markdown requested)
result.success bool True when code == 0
result.code int API response code
result.raw dict Full unmodified response

Exceptions

Exception When
PangolinfoError Base class for all SDK errors
AuthenticationError Login failed or credentials missing
APIError API returned non-zero code
TimeoutError Request exceeded the timeout
ValidationError Invalid arguments supplied

Supported parsers

Key Parser name Platform
amazon_product_detail amzProductDetail Amazon
amazon_keyword_search amzKeywordSearch Amazon
amazon_best_sellers amzBestSellers Amazon
amazon_reviews amzReview Amazon
walmart_product_detail wmtProductDetail Walmart
walmart_keyword_search wmtKeywordSearch Walmart

amzProductDetail is confirmed in the official example. Other parsers follow the Pangolinfo documentation naming — pass any raw parser name to client.scrape() if yours isn't listed.

Development

# Install with dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Build distributions
python -m build

# Upload to PyPI
twine upload dist/*

License

MIT — © PANGOLIN INFO TECH PTE. LTD.

Metadata

Release files for pangolinfo-amazon-scraper 0.1.0

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

Source distribution (sdist)

Source distribution for pangolinfo-amazon-scraper 0.1.0
File Size Uploaded Provenance Actions
pangolinfo_amazon_scraper-0.1.0.tar.gz 9.7 kB Without provenance Details for pangolinfo_amazon_scraper-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pangolinfo-amazon-scraper 0.1.0
File Interpreter ABI Platform Actions
pangolinfo_amazon_scraper-0.1.0-py3-none-any.whl Python 3 none any Details for pangolinfo_amazon_scraper-0.1.0-py3-none-any.whl

Total release size: 23.6 kB

Release files / pangolinfo_amazon_scraper-0.1.0.tar.gz

Download URL pangolinfo_amazon_scraper-0.1.0.tar.gz
Size 9.7 kB
Tags Source
SHA-256 checksum
How to use checksums
23a3e4a399de5f40c78de86d33a1f4a347a65d5cb4e9cb85ee45820d10524324
BLAKE2b-256 checksum
How to use checksums
a9bfd685abee9d934a0a757ddac3b73124265f18f8cd6937c0d5c8102b28085c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.12

Release files / pangolinfo_amazon_scraper-0.1.0-py3-none-any.whl

Download URL pangolinfo_amazon_scraper-0.1.0-py3-none-any.whl
Size 13.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c8491e123096c785cbbdb8f9f00e118195fd8ec5d3b315f3b4c461b8f0914d25
BLAKE2b-256 checksum
How to use checksums
184f77c94231e4e5c61b4615cb8cc0b51f98df6ab9f4de3810fc3e460430254d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.12

Security for pangolinfo-amazon-scraper 0.1.0

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

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