Skip to main content

Stophy for Python

Web scraping API for AI agents, in Python. One API to search the web, read what people say, and look up products, places, jobs and homes. Pay only for answers. Every method and result is typed.

Install

pip install stophy

Try it without a key

from stophy import Stophy

result = Stophy().google.search(query="bun runtime")
print(result["data"]["results"])

Some searches and lookups work without a key, within a small free allowance. The endpoint list marks them with keyless: true. Every other method raises a StophyError with the code unauthorized.

Use an API key

Get a key from the dashboard. Keys start with st_. Set it as STOPHY_API_KEY, or pass it in:

stophy = Stophy(api_key="st_...")

videos = stophy.youtube.search(query="bun runtime")
print(videos["data"]["results"])

Methods follow the source and the command: stophy.google.maps.search(...), stophy.reddit.subreddit(...), stophy.meta.ads.search(...).

To point at one thing, send its link or its id, never both: stophy.youtube.video(video_url=...) or stophy.youtube.video(video_id=...). Methods that take a person send user_url or username.

Every response is a dict with success, data, creditsUsed, and requestId. data is one flat dict. Lists are in data["results"].

Arguments are keyword-only and snake_case.

For async code, use AsyncStophy. It has the same methods, and you await each call.

More data

A YouTube transcript, Reddit posts, Google Maps reviews, a TikTok profile and Meta ads:

stophy = Stophy(api_key="st_...")

transcript = stophy.youtube.transcript(video_url="https://youtu.be/dQw4w9WgXcQ", include_timestamps=True)
print(transcript["data"].get("text"), transcript["data"].get("segments"))

posts = stophy.reddit.search(query="bun runtime", sort="top", within="month")
print(posts["data"]["results"])

places = stophy.google.maps.search(query="coffee", location="Austin, TX")
place_id = places["data"]["results"][0].get("placeId")
if place_id:
    reviews = stophy.google.maps.reviews(place_id=place_id)
    print(reviews["data"]["results"])

profile = stophy.tiktok.profile(username="tiktok")
print(profile["data"].get("followers"), profile["data"].get("results"))

ads = stophy.meta.ads.search(query="running shoes")
print(ads["data"]["results"])

Get the next page

Each call returns one page of results, as the site shows it. List methods page in one of two ways.

Some take a page number. They return data["page"]. Ask for the next number to continue, and stop when results comes back empty:

first = stophy.google.search(query="bun runtime")
second = stophy.google.search(query="bun runtime", page=first["data"]["page"] + 1)

Others return data["cursor"] when there is more. Pass it back as is:

first = stophy.youtube.search(query="bun runtime")
if first["data"].get("cursor"):
    next_page = stophy.youtube.search(query="bun runtime", cursor=first["data"]["cursor"])

Handle errors

from stophy import StophyError

try:
    stophy.reddit.search(query="bun")
except StophyError as error:
    print(error.code, error.retryable, error.retry_after_seconds)

StophyError has code, retryable, retry_after_seconds, status, and request_id. The message is str(error).

The SDK retries network errors and the HTTP statuses 429, 500, 502, 503, and 504, and it waits as long as the API asks. If the API asks for a wait longer than 60 seconds, the SDK raises right away with retry_after_seconds set.

Options

Option Default What it does
api_key STOPHY_API_KEY Your API key
base_url STOPHY_BASE_URL, or the Stophy API The server to call
max_retries 2 Retries per request. 0 turns retries off.
timeout 30.0 Time limit in seconds for each attempt

Check your account

usage = stophy.usage()
logs = stophy.logs(days=7, page=0)

usage returns your balance and your all-time usage. logs returns your recent requests. Both need an API key.

License

MIT

Metadata

Release files for stophy 2.0.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 stophy 2.0.0
File Size Uploaded
stophy-2.0.0.tar.gz 51.8 kB Details

Built distribution (wheel)

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

Total release size: 93.7 kB

Release files / stophy-2.0.0.tar.gz

Download URL stophy-2.0.0.tar.gz
Size 51.8 kB
Tags Source
SHA-256 checksum
How to use checksums
2a80e081da4ea5390103ea96f3b1395ac3e143208aaba2bc30e8e25f011241d8
BLAKE2b-256 checksum
How to use checksums
d29887bfb8a13dadb89c807cd2667b0bb47bbc08eae872dd2522c5b8e0a2c4f7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 10, 2026.

Transparency log

Release files / stophy-2.0.0-py3-none-any.whl

Download URL stophy-2.0.0-py3-none-any.whl
Size 42.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5b3c5067cc5bf8528f09c1ec7cacf201420560ed07f24bace99423242396552d
BLAKE2b-256 checksum
How to use checksums
131c4e23b07ee65cfe682a50aad12b124cf18a08b5e39c231867506e954589ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 10, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.0.0 This release

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.2.0

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