Skip to main content

Python SDK for the Scrapingdog web scraping and SERP APIs.

Project description

Scrapingdog Python Library & Package

Package CI Python

Integrate web scraping and search data into your AI workflow, RAG / fine-tuning, or Python application using this official-style wrapper for Scrapingdog.

Scrapingdog supports general web scraping (rotating & residential proxies, JavaScript rendering), Google, Google Maps, Google Shopping, Bing, Baidu, DuckDuckGo, Amazon, Walmart, eBay, App Stores, LinkedIn, and more.

Query a vast range of data at scale, including web pages, search results, product listings, flight and hotel data, job postings, social profiles, and more.

Installation

To install the scrapingdog package, simply run the following command:

$ pip install scrapingdog

Requires Python 3.8+ and depends only on requests.

Simple Usage

Let's start by searching for Coffee on Google:

import os
import scrapingdog

client = scrapingdog.Client(api_key=os.getenv("SCRAPINGDOG_API_KEY"))
results = client.google(query="coffee")

print(results)

The results variable now contains a ScrapingdogResults object, which acts just like a standard dictionary, with attribute-style access added on top (results.organic_results).

Scraping an arbitrary web page returns the raw HTML instead:

html = client.scrape("https://example.com", dynamic=True, premium=False)

The Scrapingdog API key can be obtained from scrapingdog.com/signup.

Environment variables are a secure, safe, and easy way to manage secrets. Set export SCRAPINGDOG_API_KEY=<secret_api_key> in your shell. The client reads this variable automatically when api_key is omitted.

Error handling

Unsuccessful requests raise scrapingdog.HTTPError or scrapingdog.TimeoutError exceptions. The returned status code reflects the sort of error that occurred; please refer to the Scrapingdog documentation for more details.

import os
import scrapingdog

# A default timeout can be set here.
client = scrapingdog.Client(api_key=os.getenv("SCRAPINGDOG_API_KEY"), timeout=10)

try:
    results = client.google(query="coffee")
except scrapingdog.HTTPError as e:
    if e.status_code == 401:   # Invalid API key
        print(e.message)
    elif e.status_code == 400: # Missing required parameter
        pass
    elif e.status_code == 429: # Exceeds the plan's throughput limit
        pass
except scrapingdog.TimeoutError as e:
    # Handle timeout
    print(f"The request timed out: {e}")

All exceptions inherit from scrapingdog.ScrapingdogError.

Documentation

Full API documentation is available on scrapingdog.com.

Every Scrapingdog scraper has a dedicated method (75 in total). Each is a thin wrapper over client.get(), so any documented query parameter can also be passed as a keyword argument — booleans are auto-converted to true/false and None values are dropped. For any endpoint without a named method, call get() directly with the path:

data = client.get("google_trends", query="bitcoin", geo="US")

Basic Examples in Python

General Web Scraping

import os
import scrapingdog

client = scrapingdog.Client(api_key=os.getenv("SCRAPINGDOG_API_KEY"))
html = client.scrape(
    "https://example.com",
    dynamic=True,     # render JavaScript
    premium=True,     # use premium/residential proxies
    country="us",
)

Search Google

import os
import scrapingdog

client = scrapingdog.Client(api_key=os.getenv("SCRAPINGDOG_API_KEY"))
results = client.google(query="coffee", country="us", results=10, page=0)

Search Bing

import os
import scrapingdog

client = scrapingdog.Client(api_key=os.getenv("SCRAPINGDOG_API_KEY"))
results = client.bing(query="coffee", cc="us")

Search Baidu

import os
import scrapingdog

client = scrapingdog.Client(api_key=os.getenv("SCRAPINGDOG_API_KEY"))
results = client.baidu(query="coffee")

Search DuckDuckGo

import os
import scrapingdog

client = scrapingdog.Client(api_key=os.getenv("SCRAPINGDOG_API_KEY"))
results = client.duckduckgo(query="coffee")

Search Google Maps

import os
import scrapingdog

client = scrapingdog.Client(api_key=os.getenv("SCRAPINGDOG_API_KEY"))
results = client.google_maps(query="pizza")

Search Google Shopping

import os
import scrapingdog

client = scrapingdog.Client(api_key=os.getenv("SCRAPINGDOG_API_KEY"))
results = client.google_shopping(query="shoes", country="us")

Search Google News

import os
import scrapingdog

client = scrapingdog.Client(api_key=os.getenv("SCRAPINGDOG_API_KEY"))
results = client.google_news(query="football", country="us")

Search Google Scholar

import os
import scrapingdog

client = scrapingdog.Client(api_key=os.getenv("SCRAPINGDOG_API_KEY"))
results = client.google_scholar(query="coffee")

Search Google Jobs

import os
import scrapingdog

client = scrapingdog.Client(api_key=os.getenv("SCRAPINGDOG_API_KEY"))
results = client.google_jobs(query="jobs in london")

Google Trends

import os
import scrapingdog

client = scrapingdog.Client(api_key=os.getenv("SCRAPINGDOG_API_KEY"))
results = client.google_trends(query="pizza,burger", data_type="TIMESERIES")

Amazon Search

import os
import scrapingdog

client = scrapingdog.Client(api_key=os.getenv("SCRAPINGDOG_API_KEY"))
results = client.amazon_search(query="spoon", domain="com", country="us", page=1)

Amazon Product

import os
import scrapingdog

client = scrapingdog.Client(api_key=os.getenv("SCRAPINGDOG_API_KEY"))
results = client.amazon_product(asin="B00AP877FS", domain="com", country="us")

Walmart Search

import os
import scrapingdog

client = scrapingdog.Client(api_key=os.getenv("SCRAPINGDOG_API_KEY"))
results = client.walmart_search(url="https://www.walmart.com/search?q=coffee")

Search eBay

import os
import scrapingdog

client = scrapingdog.Client(api_key=os.getenv("SCRAPINGDOG_API_KEY"))
results = client.ebay_search(url="https://www.ebay.com/sch/i.html?_nkw=coffee")

Apple App Store

import os
import scrapingdog

client = scrapingdog.Client(api_key=os.getenv("SCRAPINGDOG_API_KEY"))
results = client.apple_app_store(term="whatsapp", country="us", lang="en-us")

LinkedIn Profile

import os
import scrapingdog

client = scrapingdog.Client(api_key=os.getenv("SCRAPINGDOG_API_KEY"))
results = client.linkedin("rbranson", type="profile")

YouTube

import os
import scrapingdog

client = scrapingdog.Client(api_key=os.getenv("SCRAPINGDOG_API_KEY"))
results = client.youtube(channel_id="UCX6OQ3DkcsbYNE6H8uQQuVA", country="us")

Screenshot

import os
import scrapingdog

client = scrapingdog.Client(api_key=os.getenv("SCRAPINGDOG_API_KEY"))
results = client.screenshot(url="https://www.scrapingdog.com")

Account

import os
import scrapingdog

client = scrapingdog.Client(api_key=os.getenv("SCRAPINGDOG_API_KEY"))
account = client.account()  # remaining credits & plan usage

Available Methods

All 75 endpoint methods (click to expand)

General & account: scrape, screenshot, account, webhook

Google Search: google, google_images, google_videos, google_shorts, google_news, google_news_v2, google_shopping, google_local, google_jobs, google_autocomplete, google_finance, google_flights, google_hotels, google_lens, google_product, google_immersive_product, google_ai_mode, google_ai_overview, google_ads_transparency

Google Maps: google_maps, google_maps_places, google_maps_photos, google_maps_posts, google_maps_reviews

Google Scholar: google_scholar, google_scholar_profiles, google_scholar_author, google_scholar_cite

Google Patents / Trends: google_patents, google_patents_details, google_trends, google_trends_autocomplete, google_trends_trending_now

Other search engines: bing, bing_shopping, baidu, duckduckgo, yelp, universal_search

Amazon: amazon_search, amazon_product, amazon_offers, amazon_reviews, amazon_autocomplete

Apple: apple_app_store, apple_product, apple_reviews

Retail: walmart_search, walmart_product, walmart_reviews, walmart_autocomplete, ebay_search, ebay_product, flipkart_search, flipkart_product, myntra_search, myntra_product, zillow

Social & professional: linkedin, linkedin_post, linkedin_jobs, indeed, x_profile, x_post, tiktok_profile, tiktok_post, tiktok_ads, facebook, instagram, youtube

AI: chatgpt

License

MIT License.

Contributing

Bug reports and pull requests are welcome. Once dependencies are installed (pip install -e ".[test]"), you can run the tests with pytest.

Publishing a new release

Releases are published to PyPI automatically via GitHub Actions using Trusted Publishing (no API token required).

  1. Bump the version in pyproject.toml and scrapingdog/__init__.py.
  2. Push a version tag — the release workflow tests, builds, and publishes to PyPI:
    git tag v1.0.0
    git push origin v1.0.0
    

One-time PyPI setup (before the first release): on pypi.org/manage/account/publishing, add a pending publisher with — Project: scrapingdog, Owner: Darshan972, Repository: Scrapingdog-PIP, Workflow: release.yml, Environment: pypi.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scrapingdog-1.0.0.tar.gz (15.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scrapingdog-1.0.0-py3-none-any.whl (12.5 kB view details)

Uploaded Python 3

File details

Details for the file scrapingdog-1.0.0.tar.gz.

File metadata

  • Download URL: scrapingdog-1.0.0.tar.gz
  • Upload date:
  • Size: 15.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for scrapingdog-1.0.0.tar.gz
Algorithm Hash digest
SHA256 0c5f0a9e713f55a99ae7a05dbdc71cd894d5efdc5131f03c8b7cafab23c30983
MD5 461e356fb68498456e5a7c181ce695d3
BLAKE2b-256 2aadbdca76e901b53f5da693c3aed9deaecd244db76dce72bca510ade5617941

See more details on using hashes here.

Provenance

The following attestation bundles were made for scrapingdog-1.0.0.tar.gz:

Publisher: release.yml on Darshan972/Scrapingdog-PIP

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file scrapingdog-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: scrapingdog-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 12.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for scrapingdog-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 691f60246e5bf149ae7b58a113ac51d999a52d34b82761c3e442555e62320260
MD5 e433a3090d478dcbac447986f6e725dd
BLAKE2b-256 5481ba3722e06f5195d86575687278832bc70abc69deb203adae72e93484932f

See more details on using hashes here.

Provenance

The following attestation bundles were made for scrapingdog-1.0.0-py3-none-any.whl:

Publisher: release.yml on Darshan972/Scrapingdog-PIP

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page