# Stophy

Web scraping API for AI agents. One API to search the web, read what people say, and look up products, places, jobs and homes. Pay only for answers. A call returns structured JSON, and every source uses the same response format.

## Core endpoints

### Google search

Search Google and get each result with its title, link, description, date and position. 1 credit per call. Works without a key.

```bash
curl -X POST "https://api.stophy.dev/v1/google/search" \
  -H "Content-Type: application/json" \
  -d '{
  "query": "best guide to async Rust"
}'
```

```typescript
import { Stophy } from "stophy";

const stophy = new Stophy({ apiKey: process.env.STOPHY_API_KEY });

const result = await stophy.google.search({
  query: "best guide to async Rust",
});
console.log(result.data);
```

```python
from stophy import Stophy

stophy = Stophy()

result = stophy.google.search(
    query="best guide to async Rust",
)
print(result["data"])
```

```bash
# CLI
stophy web search "best guide to async Rust"
```

Example output, trimmed:

```json
[
  {
    "date": "2025-03-03",
    "position": 1,
    "title": "Resources for low-level async programming",
    "url": "https://users.rust-lang.org/t/resources-for-low-level-async-programming/126489"
  }
]
```

### YouTube search

Search YouTube and get videos with their channel, length, views and publish date. 1 credit per call. Works without a key.

```bash
curl -X POST "https://api.stophy.dev/v1/youtube/search" \
  -H "Content-Type: application/json" \
  -d '{
  "query": "async Rust tutorial"
}'
```

```typescript
import { Stophy } from "stophy";

const stophy = new Stophy({ apiKey: process.env.STOPHY_API_KEY });

const result = await stophy.youtube.search({
  query: "async Rust tutorial",
});
console.log(result.data);
```

```python
from stophy import Stophy

stophy = Stophy()

result = stophy.youtube.search(
    query="async Rust tutorial",
)
print(result["data"])
```

```bash
# CLI
stophy youtube search "async Rust tutorial"
```

Example output, trimmed:

```json
[
  {
    "channelName": "Let's Get Rusty",
    "durationSeconds": 1155,
    "title": "Async Rust explained in 20 minutes",
    "type": "video",
    "videoId": "wXtngLBkK4Q",
    "videoUrl": "https://www.youtube.com/watch?v=wXtngLBkK4Q",
    "views": 82878
  }
]
```

### YouTube transcript

Get what a video says as one string, with timestamped segments when you ask for them. 1 credit per call when the video has captions. Works without a key.

```bash
curl -X POST "https://api.stophy.dev/v1/youtube/transcript" \
  -H "Content-Type: application/json" \
  -d '{
  "videoUrl": "https://www.youtube.com/watch?v=SxdOUGdseq4"
}'
```

```typescript
import { Stophy } from "stophy";

const stophy = new Stophy({ apiKey: process.env.STOPHY_API_KEY });

const result = await stophy.youtube.transcript({
  videoUrl: "https://www.youtube.com/watch?v=SxdOUGdseq4",
});
console.log(result.data);
```

```python
from stophy import Stophy

stophy = Stophy()

result = stophy.youtube.transcript(
    video_url="https://www.youtube.com/watch?v=SxdOUGdseq4",
)
print(result["data"])
```

Example output, trimmed:

```json
{
  "durationSeconds": 3698,
  "isAutoGenerated": false,
  "language": "en",
  "text": "All right, who's ready for some more category theory? ...",
  "videoId": "SxdOUGdseq4"
}
```

### Reddit search

Search Reddit posts, with filters for subreddit, sort order and time range. 1 credit per call. Works without a key.

```bash
curl -X POST "https://api.stophy.dev/v1/reddit/search" \
  -H "Content-Type: application/json" \
  -d '{
  "query": "standing desks actually help or overrated",
  "subreddit": "BuyItForLife"
}'
```

```typescript
import { Stophy } from "stophy";

const stophy = new Stophy({ apiKey: process.env.STOPHY_API_KEY });

const result = await stophy.reddit.search({
  query: "standing desks actually help or overrated",
  subreddit: "BuyItForLife",
});
console.log(result.data);
```

```python
from stophy import Stophy

stophy = Stophy()

result = stophy.reddit.search(
    query="standing desks actually help or overrated",
    subreddit="BuyItForLife",
)
print(result["data"])
```

Example output, trimmed:

```json
[
  {
    "postUrl": "https://www.reddit.com/r/BuyItForLife/comments/1ntedtv/do_standing_desks_actually_help_or_are_they/",
    "score": 172,
    "subreddit": "BuyItForLife",
    "title": "Do standing desks actually help or are they overrated?",
    "type": "post"
  }
]
```

### Google Maps search

Search places by keyword and location and get each place's name, address, rating, phone and website. 1 credit per call. Works without a key.

```bash
curl -X POST "https://api.stophy.dev/v1/google/maps/search" \
  -H "Content-Type: application/json" \
  -d '{
  "location": "Shoreditch, London",
  "query": "coffee"
}'
```

```typescript
import { Stophy } from "stophy";

const stophy = new Stophy({ apiKey: process.env.STOPHY_API_KEY });

const result = await stophy.google.maps.search({
  location: "Shoreditch, London",
  query: "coffee",
});
console.log(result.data);
```

```python
from stophy import Stophy

stophy = Stophy()

result = stophy.google.maps.search(
    location="Shoreditch, London",
    query="coffee",
)
print(result["data"])
```

Example output, trimmed:

```json
[
  {
    "address": "78 Queen Victoria St, London EC4N 4SJ, United Kingdom",
    "name": "Rosslyn Coffee Queen Victoria Street",
    "rating": 4.8
  }
]
```

Every endpoint, with its inputs and price: https://docs.stophy.dev

## Connect an agent

Your agent knows what it was trained on. Connect Stophy and it knows what happened today.

### Skill, one command

```bash
npx -y @stophy/cli@latest init --all --browser
```

### Claude Code

```bash
claude mcp add --transport http stophy \
  https://mcp.stophy.dev/mcp
```

Then run /mcp in Claude Code and sign in. No key needed.

### Codex

```bash
codex mcp add stophy --url https://mcp.stophy.dev/mcp
codex mcp login stophy
```

The second command opens your browser to sign in.

### Cursor

```json
{
  "mcpServers": {
    "stophy": {
      "url": "https://mcp.stophy.dev/mcp"
    }
  }
}
```

Add this to ~/.cursor/mcp.json. Cursor asks you to sign in the first time.

### Agent setup guide

For AI agents: fetch this file to get set up, pick a path and make a first call.

```bash
curl -s https://stophy.dev/agents/SKILLS.md
```

## Reliability and limits

- Failed calls are free. A call uses credits only when it returns data.
- Every call answers or fails within 25 seconds.
- Every error states whether a retry can help and when to retry.
- With a key: 600 requests a minute and 10 requests running at once.
- Without a key: a free daily limit applies, and you get the first page only.

## Built-in capabilities

| Capability | Description |
| --- | --- |
| Filters | Each endpoint takes the filters its site offers, such as price, rating, date and sort order |
| Paging | One page per call. Send the page number or cursor from the response for the next page |
| Field selection | Through MCP, pass fields to keep only the keys you need on each result |
| Local results | Pass a country and get the prices and results people there see |
| One format | Every response is { success, data, creditsUsed, requestId } |

## Use cases

### Find leads you can call

Discover businesses by type and place. Your agent gets each one with its address, rating, phone and website, so it can build a list you can call.

> List dentists in Austin with a phone number and a website.

I found 19 dentists near Austin. Each one has a phone number and a website. Tech Ridge Dental is rated 5.0 from 1,184 reviews. Craft of Dentistry is rated 5.0 from 956, and Brushy Creek Dentistry is rated 4.9 from 1,256.

### See the ads your competitors run

Drop in a competitor's domain. Your agent gets the ads they run on Google, each with its format and the date it first ran, so you can see what they keep paying for.

> What ads is monday.com running on Google?

monday.com has between 7,000 and 8,000 ads in Google's ad library. Of the 25 most recent, 15 are text ads and 10 are video. The newest video started running on October 5.

### Spot who is buying

Name a role and a place. Your agent gets each open job with its company and the date it was posted, so it can list the companies with budget for what you sell.

> Which companies in Austin are hiring data engineers this week?

Nine companies posted data engineer jobs near Austin in the past week. Cash App posted two senior roles. Deloitte and Atlassian are hiring too, and First Citizens Bank posted its role today.

### Vet a creator before you pay

Drop in a creator's handle. Your agent gets their followers, average likes and engagement rate, so you know what an audience is worth before you pay for a post.

> How engaged is the audience of @mkbhd on Instagram?

@mkbhd has 5.29 million followers on Instagram. The last 12 posts average 205,984 likes and 1,903 comments, an engagement rate of 3.9%. The account posts less than once a week.

### Undercut on price

Search any product with a price and rating filter. Your agent gets today's price, the old price and how many sold last month, so you can price yours to win.

> What do the best-selling 75% keyboards under $100 cost today?

The best seller is the AULA F75 Pro at $64.99. It is down from $79.99 and 4,000 people bought it last month. The Womier SK80 is $43.60, and the cheapest with a 4.6 rating is the AJAZZ AK820 at $31.99.

## Why Stophy

### One task, one key.

Your agent reads a competitor's ads, looks up the company and reads what buyers say in one task. One key and one response format cover every site, so there is nothing to set up between steps.

### Send back less.

Name the fields you want and the response holds only those. Your agent reads less and keeps its context for the task.

### Every filter is applied.

Send a price range, a rating or a place and every result matches it. An ignored filter is worse than an error, because your agent acts on what it gets.

### Search the web. Read the page.

A model on its own answers from memory. With Stophy, your agent searches the web and reads the page it finds, so the answer comes from today and points to its source.

## Pricing

No plans and no monthly fee. A call costs credits only when it returns data.

| Plan | Price | Includes |
| --- | --- | --- |
| Free | $0 | 1,000 free credits, every endpoint, errors and empty results cost nothing |
| Pay as you go | $1.50 per 1,000 credits, $1.20 from $100 and $0.80 from $500 | Credits never expire |
| Custom | Volume pricing | Custom rate limits, new sources, direct support |

## FAQ

### Start here

**What is Stophy?**

Stophy is a web scraping API for AI agents. Your agent asks for a search, a business, a company, an ad or a price, and gets structured data back. One key covers every site.

**Is there a free plan?**

Yes. Every account starts with 1,000 free credits and no card. Some endpoints also work with no account at all, within a daily limit.

**Is this legal?**

Stophy reads public pages only. It never logs in to a site, and it cannot post, message or act as a user. How you may use the data depends on each site's terms and the law where you work, so check those for your use.

**Can't my model already search the web?**

A model with no search answers from memory, which is out of date. A model with built-in search gets a few text snippets. Stophy gives it structured data from the sites that matter for work: phone numbers, prices, ad libraries, job posts and reviews.

**What can I build with it?**

Agents that build lead lists, read a competitor's ads, find who is hiring, vet a creator or check a price. Use it wherever the answer has to come from today's web.

**Which agents does it work with?**

Any agent that supports MCP, such as Claude Code, Codex and Cursor. Add it with one command or a config block and sign in once in the browser. You can also call the REST API or use the TypeScript and Python SDKs.

### Using it

**Will my agent get blocked?**

No. Your agent calls Stophy, not the site, so it never meets a block page or a captcha. A call returns data or it costs nothing.

**Do I need to run a browser or write a scraper?**

No. You send one request and get structured data back. There is nothing to install, host or maintain.

**What happens when a site changes its page?**

Nothing changes for you. The fields you get stay the same, and keeping each endpoint working is our job. If a call fails in the meantime, it is free.

**Do I need an API key from Reddit, Google or the other sites?**

No. One Stophy key covers every site. You need no developer account and no approval from any of them.

**Can it read pages behind a login?**

No. Stophy reads public data only. It never signs in to a site, so it returns nothing private.

**Will it fill up my agent's context?**

No. The MCP server adds three tools, not one per site, and every site answers in the same format. Your agent can also ask for only the fields it needs.

### Cost

**How much does it cost?**

Most calls cost 1 credit, and 1,000 credits cost $1.50. The price per 1,000 drops with bigger top-ups: $1.20 from $100 and $0.80 from $500.

**Is it cheaper than building my own scraper?**

You pay for answers and nothing else. There are no servers or browsers to run, and no scraper to fix when a site changes.

**Do I pay when a call fails or finds nothing?**

No. Errors, timeouts and empty results cost nothing.

**Is there a subscription?**

No. There are no plans and no monthly fee. You add credits from $10 and spend them one call at a time. They never expire.

Have a question that is not listed? Contact support: support@stophy.dev

## Get started

No card. After that, pay only for answers.

- [Start for free](https://stophy.dev/signup)
- [API reference](https://docs.stophy.dev)

_Canonical HTML: https://stophy.dev_

## Site navigation

- [About](https://stophy.dev/about.md)
- [Blog](https://stophy.dev/blog.md)
- [Changelog](https://stophy.dev/changelog.md)
- [llms.txt](https://stophy.dev/llms.txt)
- [Agent setup guide](https://stophy.dev/agents/SKILLS.md)
- [Privacy Policy](https://stophy.dev/privacy.md)
- [Terms of Service](https://stophy.dev/tos.md)
