# Public data an agent can buy on its own.

> API for Agents · https://apiforagents.dev/index · HTML twin: https://apiforagents.dev

Pay-as-you-go data API for AI agents: LinkedIn, Instagram, TikTok, Google Maps, Amazon and 21 more on one key. Your agent signs itself up in one call with $0.10 free, sees the price first, gets a receipt.

- Pricing: Pay as you go
- Billed: Per record
- Free to start: $0.10
- Monthly fee: $0

- A key from one request.
- The price before every call.
- A receipt on every answer.
- Top up from $5. Nothing monthly.

## Built for the agent, not the dashboard

### An agent registers itself

Standard agent registration: one POST returns an identity with $0.10 free, so the agent can quote and run its first real calls before anyone logs in. A person claims it later with a six-digit code and tops up.

`POST /agent/identity { type: anonymous } → identity_assertion`

### Nothing is spent without a quote

Any call sent with estimateOnly returns the exact charge in dollars and takes nothing. Set maxUsd on a call and the engine refuses rather than overspends.

`estimateOnly: true · maxUsd: 0.05`

### Every answer says what it is

Coverage, provenance, confidence and cost ride on every response. An unknown is an empty field with a reason, never a guess dressed as a number.

`data · coverage · provenance · confidence · cost · notes`

## Four requests from nothing to data

1. **Register.** One POST, no card, no console. The agent gets an identity, a bearer token and $0.10 free to prototype with. `POST /agent/identity`
2. **Quote.** Send the real request with estimateOnly. See the dollar amount. Pay nothing. `"estimateOnly": true`
3. **Get claimed.** The agent shows a person a six-digit code and a link. Once typed, the agent acts on their account and the first top-up of $5 unlocks runs. `POST /agent/identity/claim`
4. **Run.** Same request, flag removed. Charged what was quoted, refunded per subject for anything that did not come back. `POST /v1/{platform}`

## The response envelope

```json
{
  "data": { "companies": [
    { "universalName": "acme-corp", "name": "Acme", "employeesCount": 342,
      "website": null, …, "details": { "tagline": "…" } }
  ] },
  "coverage": [
    { "platform": "linkedin", "requested": 3, "returned": 2,
      "omitted": [ { "subject": "gone-corp", "reason": "not_found" } ] }
  ],
  "provenance": [
    { "subject": "acme-corp", "measuredAt": "2026-10-13T09:41:00Z",
      "source": "capture" }
  ],
  "confidence": { "acme-corp": "measured", "globex": "measured" },
  "cost": { "usd": 0.0072, "balanceUsd": 4.9928,
            "chargedFor": ["linkedin:companies:acme-corp", "linkedin:companies:globex"] },
  "notes": []
}
```

- `data`: The rows, keyed by what they are (profiles, companies, posts…). Every row carries the operation's typed fields, always present and null when the source had nothing, with details last.
- `coverage`: What you asked for against what came back, and why anything is missing.
- `provenance`: When each subject was measured and whether it was a fresh capture or a cached read.
- `confidence`: Measured, derived or unknown. Never a blend.
- `cost`: What this call charged in dollars, what is left, and which subjects you paid for.
- `notes`: Plain sentences when something needs saying. Empty when nothing does.

## A refusal

```
HTTP 402
{ "error": {
    "code": "insufficient_funds",
    "message": "This call needs $0.12. The account holds $0.03.",
    "fix": "Top up at the link, or lower limit to 20.",
    "details": { "neededUsd": 0.12, "balanceUsd": 0.03,
                 "topUp": "https://apiforagents.dev/pay/acc_7f3k" },
    "docs": "https://apiforagents.dev/docs.md#insufficient_funds" } }
```

## Platforms

All 26 on one key, one balance and one response shape.

- [Instagram](https://apiforagents.dev/platforms/instagram.md): Profiles, posts, comments, followers, hashtags and similar accounts from Instagram. Pay as you go, from $0.00045 per comment.
- [LinkedIn](https://apiforagents.dev/platforms/linkedin.md): People, companies, posts, jobs, comments, reactions and ads from LinkedIn. Pay as you go, from $0.001 per job.
- [YouTube](https://apiforagents.dev/platforms/youtube.md): Channels, videos and comments from YouTube. Pay as you go, from $0.00045 per channel.
- [X / Twitter](https://apiforagents.dev/platforms/x_twitter.md): Profiles, posts and search from X, formerly Twitter. Pay as you go, from $0.000225 per follower.
- [Reddit](https://apiforagents.dev/platforms/reddit.md): Posts, comments, subreddits and search from Reddit, with scores and permalinks on every row. Pay as you go, from $0.0045 per comment.
- [TikTok](https://apiforagents.dev/platforms/tiktok.md): Creators, videos, comments, followers, search and shop listings from TikTok. Pay as you go, from $0.00045 per comment.
- [Facebook](https://apiforagents.dev/platforms/facebook.md): Pages, posts, reels, comments, reviews, ads, events and marketplace listings from Facebook. Pay as you go, from $0.0022 per comment.
- [Amazon](https://apiforagents.dev/platforms/amazon.md): Products, search results and reviews from any Amazon marketplace. Pay as you go, from $0.00045 per review.
- [Shopify](https://apiforagents.dev/platforms/shopify.md): Products, prices and stock from any Shopify store. Pay as you go, from $0.0009 per product.
- [Farfetch](https://apiforagents.dev/platforms/farfetch.md): Products, search and listings from Farfetch, priced per storefront. Pay as you go, from $0.0009 per product.
- [GOAT](https://apiforagents.dev/platforms/goat.md): Resale products, listings and asks from GOAT. Pay as you go, from $0.0009 per product.
- [StockX](https://apiforagents.dev/platforms/stockx.md): Market prices, listings and last sales from StockX. Pay as you go, from $0.0009 per product.
- [Blinkit](https://apiforagents.dev/platforms/blinkit.md): A product's price and stock at one dark store, right now, from Blinkit. Pay as you go, from $0.0009 per category.
- [Swiggy Instamart](https://apiforagents.dev/platforms/instamart.md): A product's price and stock at one dark store, right now, from Swiggy Instamart. Pay as you go, from $0.0009 per category.
- [Zepto](https://apiforagents.dev/platforms/zepto.md): A product's price and stock at one dark store, right now, from Zepto. Pay as you go, from $0.0009 per category.
- [Indeed](https://apiforagents.dev/platforms/indeed.md): Job search and job listings from Indeed, by country. Pay as you go, from $0.000045 per job.
- [Naukri](https://apiforagents.dev/platforms/naukri.md): Job search from Naukri with the board's own filters. Pay as you go, from $0.0018 per job.
- [Upwork](https://apiforagents.dev/platforms/upwork.md): Job search from Upwork with its own filters. Pay as you go, from $0.0027 per job.
- [Contacts](https://apiforagents.dev/platforms/contacts.md): A person's work email and mobile number, by LinkedIn handle.
- [Explore](https://apiforagents.dev/platforms/explore.md): Data sources beyond the named platforms, for the long tail.
- [Google Maps](https://apiforagents.dev/platforms/google_maps.md): Places, search and reviews from Google Maps. Pay as you go, from $0.000225 per review.
- [Yelp](https://apiforagents.dev/platforms/yelp.md): Businesses, search and reviews from Yelp. Pay as you go, from $0.000225 per review.
- [Tripadvisor](https://apiforagents.dev/platforms/tripadvisor.md): Hotels, restaurants, attractions and reviews from Tripadvisor. Pay as you go, from $0.0018 per attraction.
- [Airbnb](https://apiforagents.dev/platforms/airbnb.md): Listings, prices for a stay and reviews from Airbnb. Pay as you go, from $0.0018 per listing.
- [Booking.com](https://apiforagents.dev/platforms/booking.md): Properties, search, prices for a stay and reviews from Booking.com. Pay as you go, from $0.0018 per listing.
- [Google](https://apiforagents.dev/platforms/google.md): Web search, news, images, shopping and Play Store reviews from Google. Pay as you go, from $0.00009 per play review.

## Compared with the others

| | apiforagents | Per-record data APIs | Scraper marketplaces |
|---|---|---|---|
| Getting a key | One POST from the agent. Card later. The balance never expires. | Console sign-up. Their agent file says “ask the user for it”. | Agents may pay by crypto only: $1 minimum, a balance that expires in 14 days. |
| Knowing the price first | estimateOnly returns the exact charge for that call. Free. | “Cost ≈ rows × price per record. Check GET /balance first.” | A spend ceiling you set per run, learned after it ends. |
| A row that does not come back | Refunded per subject, named in coverage with the reason. | “Failed rows are not billed.” Refunds only for their own error, by support email. | Varies per listing. Issue threads titled “Sucked up all my credit”. |
| Where a number came from | measuredAt, capture or cache, confidence, on every subject. | Rows only. | Rows only. |
| Learning the API | One request vocabulary and one response shape across every platform. | “A separate endpoint for each API.” | Thousands of listings, each with its own schema. |

Read from each vendor's public pricing, docs and agent pages on 12 October 2026. Quotes are theirs. Per-record APIs: the prepaid social-data vendors. Marketplaces: hosted scraper catalogues. Named sources on request.

## Pricing

Pay as you go: per record in US dollars. First top-up $5. Prices start at $0.000045 per job. Quotes, balance and history are free. Unused money is kept. Full list: https://apiforagents.dev/pricing.md

## For agents

```
You have access to apiforagents.dev, a public-data API.
1. Read https://apiforagents.dev/llms.txt
2. Register as described in https://apiforagents.dev/auth.md: POST https://apiforagents.dev/agent/identity with {"type":"anonymous"}, exchange the identity_assertion at https://apiforagents.dev/oauth2/token, keep claim_token in memory.
3. Before any paid call, repeat it with "estimateOnly": true and read cost.wouldChargeUsd.
4. On 403 insufficient_scope, start the claim: POST https://apiforagents.dev/agent/identity/claim with the owner's email, show them the user_code and verification_uri, poll the token endpoint. On 402, send top_up_url to the owner and do not retry until the balance rises.
5. Read coverage and notes before data. An omission with reason "not_found" means the handle failed, not that the entity does not exist.
```

More: https://apiforagents.dev/agents.md

## FAQ

### How do I try it with my AI agent?

Copy the starter prompt on the home page into Claude, ChatGPT, Cursor or your own agent. It points the agent at https://apiforagents.dev/auth.md, where it signs itself up in one call with $0.10 free, then at the LinkedIn docs, and asks it to quote before every paid call. No login or card to start.

### Can an AI agent really create an account by itself?

Yes, through the standard agent registration protocol (auth.md). The agent POSTs to /agent/identity and gets an identity with $0.10 of free credit, enough to quote and run its first real calls before anyone logs in. To keep going, it shows a person a six-digit code and a link; the person signs in, types the code and tops up, and from then on the agent acts on their account with its own revocable identity. No console step, no card to start, no sales call. The recipe is at https://apiforagents.dev/auth.md.

### How is it priced?

Pay as you go: per record, in US dollars, with no plan and no subscription. Each platform page lists the price of every record type. The first top-up is $5 and any amount after that. Money you do not use stays on the account.

### What does a call cost before I run it?

Send the same request with estimateOnly set to true. The response carries cost.wouldChargeUsd and charges nothing. Set maxUsd on any call to cap it; the engine refuses rather than overspends.

### What happens when a subject does not come back?

You are not charged for it. The coverage block names the subject and the reason, such as not_found or private_account, and the cost block shows only what was delivered.

### Is the data fresh?

Every subject in the provenance block carries measuredAt and whether it came from a fresh capture or a cached read. Your own answers are free to read again for a day. Ask for freshness fresh when only a new capture will do.

### Which platforms are covered?

All of these, on one key and one balance: LinkedIn, Instagram, YouTube, X, Reddit, TikTok and Facebook; Amazon, Shopify, Farfetch, GOAT and StockX; Blinkit, Swiggy Instamart and Zepto; Indeed, Naukri and Upwork; Google Search, Google Maps, Yelp, Tripadvisor, Airbnb and Booking.com; work email and phone lookup by LinkedIn handle; and raw rows from other public sources.

### Which AI tools does it work with?

Any that can make an HTTP request: Claude, Claude Code, ChatGPT, Cursor, Copilot, Gemini, Windsurf or your own agent. Paste the prompt from https://apiforagents.dev and it reads https://apiforagents.dev/auth.md, signs itself up and calls the REST API. There is no SDK to install and no key to copy.

### What data is off limits?

Anything behind a login. The API reads public pages only, never stores a credential, and never sells data a platform licenses to its own users.


---

# Docs

> API for Agents · https://apiforagents.dev/docs · HTML twin: https://apiforagents.dev/docs

## Quickstart

### 1. Register

Standard agent registration (the auth.md protocol): one POST returns an identity, and the token endpoint turns it into a bearer. No card, no console, no person yet, and $0.10 of free credit so the first real calls work. The full recipe is at https://apiforagents.dev/auth.md.

```bash
curl -X POST https://apiforagents.dev/agent/identity \
  -H "Content-Type: application/json" -d '{"type": "anonymous"}'
# then exchange the identity_assertion for a bearer token
curl -X POST https://apiforagents.dev/oauth2/token \
  -d "grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion=$ASSERTION"
```

Python:

```python
import requests

reg = requests.post("https://apiforagents.dev/agent/identity", json={"type": "anonymous"}).json()
tok = requests.post("https://apiforagents.dev/oauth2/token", data={
    "grant_type": "urn:ietf:params:oauth:grant-type:jwt-bearer",
    "assertion": reg["identity_assertion"]}).json()
KEY = tok["access_token"]          # catalog.read until a person claims it
CLAIM = reg["claim_token"]         # keep in memory for the claim ceremony
```

Node:

```js
const reg = await (await fetch("https://apiforagents.dev/agent/identity", {
  method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ type: "anonymous" }),
})).json();
const tok = await (await fetch("https://apiforagents.dev/oauth2/token", {
  method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" },
  body: new URLSearchParams({ grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer", assertion: reg.identity_assertion }),
})).json();
const key = tok.access_token; // catalog.read until a person claims it
```

Response:

```
200 { "registration_id": "reg_…", "identity_assertion": "<jwt>", "pre_claim_scopes": ["catalog.read"],
      "claim_token": "clm_…", "post_claim_scopes": ["catalog.read", "data.run", "account.read", "account.billing"] }
200 { "access_token": "afa_…", "token_type": "Bearer", "expires_in": 86400, "scope": "catalog.read" }
```

### 2. Quote

Any call with estimateOnly returns the exact dollar amount it would charge and takes nothing. Do this before every paid call.

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" -H "Content-Type: application/json" \
  -d '{"op": "profiles", "subjects": ["satyanadella", "jeffweiner08"], "estimateOnly": true}'
```

Python:

```python
import requests, time
H = {"Authorization": f"Bearer {KEY}"}

q = requests.post("https://apiforagents.dev/v1/linkedin", headers=H,
                  json={"op": "profiles", "subjects": ["satyanadella", "jeffweiner08"], "estimateOnly": True})
print(q.json()["cost"]["wouldChargeUsd"])   # 0.0072
```

Node:

```js
const q = await fetch("https://apiforagents.dev/v1/linkedin", {
  method: "POST",
  headers: { Authorization: `Bearer ${key}`, "Content-Type": "application/json" },
  body: JSON.stringify({ op: "profiles", subjects: ["satyanadella", "jeffweiner08"], estimateOnly: true }),
});
const { cost } = await q.json(); // cost.wouldChargeUsd === 0.0072
```

Response:

```
200 { "cost": { "usd": 0, "wouldChargeUsd": 0.0072 },
      "coverage": [ { "requested": 2, "returned": 0 } ] }
```

### 3. Get claimed, then funded

Paid calls need a person. Ask for a six-digit code and a link, show both to them, and poll. Once they type the code the account is theirs and your next token carries data.run. The first top-up is $5; a 402 on any call carries the link for it.

```bash
# ask for a code and a link, then show both to the person
curl -X POST https://apiforagents.dev/agent/identity/claim \
  -H "Content-Type: application/json" \
  -d '{"claim_token": "'$CLAIM'", "email": "you@example.com"}'
# poll until they have typed the code
curl -X POST https://apiforagents.dev/oauth2/token \
  -d "grant_type=urn:workos:agent-auth:grant-type:claim&claim_token=$CLAIM"
```

Python:

```python
c = requests.post("https://apiforagents.dev/agent/identity/claim",
                  json={"claim_token": CLAIM, "email": "you@example.com"}).json()["claim_attempt"]
print(f"Open {c['verification_uri']} and enter {c['user_code']}")   # tell the person
while True:
    t = requests.post("https://apiforagents.dev/oauth2/token", data={
        "grant_type": "urn:workos:agent-auth:grant-type:claim", "claim_token": CLAIM}).json()
    if "access_token" in t: KEY = t["access_token"]; break
    time.sleep(c["interval"])        # authorization_pending until the person is done
```

Node:

```js
const c = (await (await fetch("https://apiforagents.dev/agent/identity/claim", {
  method: "POST", headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ claim_token: reg.claim_token, email: "you@example.com" }),
})).json()).claim_attempt;
console.log(`Open ${c.verification_uri} and enter ${c.user_code}`); // tell the person
// poll /oauth2/token with grant_type=urn:workos:agent-auth:grant-type:claim every c.interval seconds
```

Response:

```
200 { "claim_attempt": { "user_code": "123456", "verification_uri": "https://apiforagents.dev/claim?claim_attempt_token=…", "expires_in": 600, "interval": 5 } }
200 { "access_token": "afa_…", "scope": "catalog.read data.run account.read account.billing", "identity_assertion": "<jwt>" }
```

### 4. Run

Same request without the flag. The charge equals the quote. A subject that does not come back is refunded and named in coverage.

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" -H "Content-Type: application/json" \
  -d '{"op": "profiles", "subjects": ["satyanadella", "jeffweiner08"]}'
```

Python:

```python
import requests, time
H = {"Authorization": f"Bearer {KEY}"}

r = requests.post("https://apiforagents.dev/v1/linkedin", headers=H,
                  json={"op": "profiles", "subjects": ["satyanadella", "jeffweiner08"]})
body = r.json()
rows, cost = body["data"], body["cost"]["usd"]   # read coverage and notes first
```

Node:

```js
const r = await fetch("https://apiforagents.dev/v1/linkedin", {
  method: "POST",
  headers: { Authorization: `Bearer ${key}`, "Content-Type": "application/json" },
  body: JSON.stringify({ op: "profiles", subjects: ["satyanadella", "jeffweiner08"] }),
});
const { data, coverage, cost } = await r.json(); // read coverage and notes first
```

Response:

```
200 { "data": [ … ], "coverage": [ … ], "provenance": [ … ], "confidence": { … },
      "cost": { "usd": 0.0072, "balanceUsd": 4.9928 }, "notes": [] }
```

## The playground

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

## All 26 platforms

Every platform is live on the same key. Each reference lists every request and response field and an example per operation:

- [Instagram](https://apiforagents.dev/platforms/instagram.md): 8 operations
- [LinkedIn](https://apiforagents.dev/platforms/linkedin.md): 13 operations
- [YouTube](https://apiforagents.dev/platforms/youtube.md): 4 operations
- [X / Twitter](https://apiforagents.dev/platforms/x_twitter.md): 5 operations
- [Reddit](https://apiforagents.dev/platforms/reddit.md): 5 operations
- [TikTok](https://apiforagents.dev/platforms/tiktok.md): 9 operations
- [Facebook](https://apiforagents.dev/platforms/facebook.md): 10 operations
- [Amazon](https://apiforagents.dev/platforms/amazon.md): 4 operations
- [Shopify](https://apiforagents.dev/platforms/shopify.md): 2 operations
- [Farfetch](https://apiforagents.dev/platforms/farfetch.md): 4 operations
- [GOAT](https://apiforagents.dev/platforms/goat.md): 4 operations
- [StockX](https://apiforagents.dev/platforms/stockx.md): 4 operations
- [Blinkit](https://apiforagents.dev/platforms/blinkit.md): 4 operations
- [Swiggy Instamart](https://apiforagents.dev/platforms/instamart.md): 4 operations
- [Zepto](https://apiforagents.dev/platforms/zepto.md): 4 operations
- [Indeed](https://apiforagents.dev/platforms/indeed.md): 2 operations
- [Naukri](https://apiforagents.dev/platforms/naukri.md): 2 operations
- [Upwork](https://apiforagents.dev/platforms/upwork.md): 2 operations
- [Contacts](https://apiforagents.dev/platforms/contacts.md): 1 operations
- [Explore](https://apiforagents.dev/platforms/explore.md): 3 operations
- [Google Maps](https://apiforagents.dev/platforms/google_maps.md): 4 operations
- [Yelp](https://apiforagents.dev/platforms/yelp.md): 4 operations
- [Tripadvisor](https://apiforagents.dev/platforms/tripadvisor.md): 8 operations
- [Airbnb](https://apiforagents.dev/platforms/airbnb.md): 3 operations
- [Booking.com](https://apiforagents.dev/platforms/booking.md): 4 operations
- [Google](https://apiforagents.dev/platforms/google.md): 5 operations

## Typed fields and details

Each row in data has two parts. The typed fields are the stable schema of the operation: the same names and types whichever source answered, and always present. A field the source had nothing for is null, an empty list is [], and a key is never just missing, so code written against a field keeps working.

details is always the last field and always present ({} when empty). It holds everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively. When a fact becomes common across sources it becomes a typed field.

Every operation's request fields and response fields, with their types and an example response, are on its platform's reference (Platforms, then API reference), and in openapi.json.

## Quote first, then pay per record

- Quote any call first: the same request with "estimateOnly": true returns cost.wouldChargeUsd, the most it can charge, and takes nothing. Quotes are free.
- Cap a call with "maxUsd": a call that would cost more is refused with budget_exceeded before anything is held.
- When a call runs, the quoted amount is held, the charge settles to what came back (never above the quote), and the rest returns to your balance in the same call.
- A subject that does not come back is named in coverage with its reason and is not charged. A call that fails on our side costs nothing.
- The same request from your account within a day is answered free from what you already fetched.
- Prices are per record in US dollars, listed on the pricing page. Some calls also carry a minimum, such as a page of search results, which is why the quote, not the list, is the number to trust.
- No subscription. Top up from $5; the balance never expires. New accounts and agents start with $0.10 free.
- List prices run from $0.000045 to $0.013 per record. Every price: https://apiforagents.dev/pricing.md

## Request vocabulary

- `op`: The operation. One per call. Each platform page lists its own.
- `subjects`: The handles, URLs or ids the call is about, batched. Up to ten per call on most ops.
- `limit`: How many rows per subject. Every listing op has a cap; the quote uses the cap, the charge uses what came back.
- `query`: Free text for the search ops.
- `postedWithin`: 1h, 24h, 7d, 30d, 90d, 1y or any, for anything with a date.
- `sort`: relevance, newest, oldest, top, where the source offers a choice.
- `estimateOnly`: true returns the price and charges nothing.
- `maxUsd`: A ceiling for this call. The engine refuses above it with budget_exceeded.
- `freshness`: auto reads your own recent answer for free; fresh forces a capture; cached refuses to spend.

## Response envelope

```json
{
  "data": { "companies": [
    { "universalName": "acme-corp", "name": "Acme", "employeesCount": 342,
      "website": null, …, "details": { "tagline": "…" } }
  ] },
  "coverage": [
    { "platform": "linkedin", "requested": 3, "returned": 2,
      "omitted": [ { "subject": "gone-corp", "reason": "not_found" } ] }
  ],
  "provenance": [
    { "subject": "acme-corp", "measuredAt": "2026-10-13T09:41:00Z",
      "source": "capture" }
  ],
  "confidence": { "acme-corp": "measured", "globex": "measured" },
  "cost": { "usd": 0.0072, "balanceUsd": 4.9928,
            "chargedFor": ["linkedin:companies:acme-corp", "linkedin:companies:globex"] },
  "notes": []
}
```

- `data`: The rows, keyed by what they are (profiles, companies, posts…). Every row carries the operation's typed fields, always present and null when the source had nothing, with details last.
- `coverage`: What you asked for against what came back, and why anything is missing.
- `provenance`: When each subject was measured and whether it was a fresh capture or a cached read.
- `confidence`: Measured, derived or unknown. Never a blend.
- `cost`: What this call charged in dollars, what is left, and which subjects you paid for.
- `notes`: Plain sentences when something needs saying. Empty when nothing does.

## Errors

Branch on `error.code`. `fix` is the next step; `details` carries the numbers.

```
HTTP 402
{ "error": {
    "code": "insufficient_funds",
    "message": "This call needs $0.12. The account holds $0.03.",
    "fix": "Top up at the link, or lower limit to 20.",
    "details": { "neededUsd": 0.12, "balanceUsd": 0.03,
                 "topUp": "https://apiforagents.dev/pay/acc_7f3k" },
    "docs": "https://apiforagents.dev/docs.md#insufficient_funds" } }
```

| Code | Status | Meaning |
|---|---|---|
| invalid_request | 400 | A field is missing or malformed. details names it. Fix the request; nothing was charged. |
| unauthorized | 401 | No key, or a revoked one. Create an account or mint a new key. |
| insufficient_funds | 402 | The balance cannot cover the quote. details carries neededUsd, balanceUsd and a topUp link. |
| budget_exceeded | 402 | The call would cost more than maxUsd. Raise maxUsd or lower limit. Nothing was charged. |
| subject_rejected | 422 | The source refused one of your own values, named in details. Change it; the rest of the call ran. |
| rate_limited | 429 | Too many calls at once for this key. retryAfterSeconds says when. |
| source_unavailable | 503 | The source is down or refusing. Charged nothing. Try later; the response says when. |

## Limits and conduct

- Sixty calls a minute per key. The 429 says when to retry.
- One anonymous registration an hour per address, five unclaimed at once, one $0.10 trial per address and 3 per network per day while the day's trial budget lasts; an unclaimed registration expires after a day.
- Ten subjects per call on lookups; every listing op has a cap printed on its platform page.
- Handles come from evidence: a search result, a pasted URL, an earlier answer. A handle typed from a name bills real money and can return a different person.
- Public pages only. Nothing behind a login is read, stored or sold.
- One account per person or company. Accounts made to dodge a limit are closed and the balance returned.


---

# For agents

> API for Agents · https://apiforagents.dev/agents · HTML twin: https://apiforagents.dev/agents

This page is written to you, the agent.

1. **Read.** Fetch https://apiforagents.dev/llms.txt first. It links every page as text. Append .md to any page on this site for the same content without markup. The machine-readable price list is /pricing.md and the schema is /openapi.json.
2. **Register.** Read https://apiforagents.dev/auth.md and follow it: POST /agent/identity with {"type":"anonymous"}, exchange the identity_assertion at /oauth2/token, and keep claim_token in memory. The bearer you get can read and quote.
3. **Quote.** Repeat any paid call with estimateOnly true. Compare cost.wouldChargeUsd with cost.balanceUsd. Set maxUsd on calls where the row count is not certain.
4. **Get claimed, then paid.** Paid calls answer 403 insufficient_scope until a person claims you: POST /agent/identity/claim with their email, show them the user_code and verification_uri, poll the token endpoint. A 402 after that carries top_up_url; send it to the person and do not retry until the balance rises. The first top-up is $5.
5. **Read the answer.** Read coverage and notes before data. A not_found omission means the handle failed; search for the right one rather than concluding the entity does not exist. provenance says when each subject was measured. confidence is measured, derived or unknown; say which when you report.
6. **Behave.** Sixty calls a minute. Handles from evidence, never typed from a name. Public pages only. One account per person or company.

## Where everything is

- Index: https://apiforagents.dev/llms.txt
- Everything in one file: https://apiforagents.dev/llms-full.txt
- Schema: https://apiforagents.dev/openapi.json
- Prices: https://apiforagents.dev/pricing.md
- Docs: https://apiforagents.dev/docs.md
- Any platform: https://apiforagents.dev/platforms/{platform}.md
- Live catalogue: GET https://apiforagents.dev/v1/platforms

## The prompt

```
You have access to apiforagents.dev, a public-data API.
1. Read https://apiforagents.dev/llms.txt
2. Register as described in https://apiforagents.dev/auth.md: POST https://apiforagents.dev/agent/identity with {"type":"anonymous"}, exchange the identity_assertion at https://apiforagents.dev/oauth2/token, keep claim_token in memory.
3. Before any paid call, repeat it with "estimateOnly": true and read cost.wouldChargeUsd.
4. On 403 insufficient_scope, start the claim: POST https://apiforagents.dev/agent/identity/claim with the owner's email, show them the user_code and verification_uri, poll the token endpoint. On 402, send top_up_url to the owner and do not retry until the balance rises.
5. Read coverage and notes before data. An omission with reason "not_found" means the handle failed, not that the entity does not exist.
```


---

# Pricing

> API for Agents · https://apiforagents.dev/pricing · HTML twin: https://apiforagents.dev/pricing

Pay as you go: per record, in US dollars, with no plan. First top-up $5; any amount after. Quotes, balance and history are free. Unused money is kept. Prices start at $0.000045 per job. Prices as of 2026-10-21; the live list is `GET /v1/platforms`.

## What you pay for

- A fresh capture: list price per record.
- Your own answer read again within a day: free.
- Someone else's cached answer: at cost, below a capture; provenance says cache and how old.
- A subject that did not come back: refunded, named in coverage.
- A call that fails on our side: nothing.

## Social

| Platform | Record | Per record (USD) |
|---|---|---|
| Instagram | comments | 0.00045 |
| Instagram | followers | 0.000675 |
| Instagram | posts | 0.0018 |
| Instagram | profiles | 0.0018 |
| LinkedIn | jobs | 0.001 |
| LinkedIn | ads library | 0.002 |
| LinkedIn | post comments | 0.002 |
| LinkedIn | post reactions | 0.002 |
| LinkedIn | posts | 0.002 |
| LinkedIn | profile comments | 0.002 |
| LinkedIn | profile reactions | 0.002 |
| LinkedIn | companies | 0.004 |
| LinkedIn | profiles | 0.004 |
| YouTube | channels | 0.00045 |
| YouTube | comments | 0.00045 |
| YouTube | videos | 0.00045 |
| X / Twitter | followers | 0.000225 |
| X / Twitter | replies | 0.000225 |
| X / Twitter | retweeters | 0.000225 |
| X / Twitter | tweets | 0.000225 |
| X / Twitter | profiles | 0.00045 |
| Reddit | comments | 0.0045 |
| Reddit | posts | 0.0045 |
| TikTok | comments | 0.00045 |
| TikTok | followers | 0.0009 |
| TikTok | posts | 0.0018 |
| TikTok | profiles | 0.00225 |
| TikTok | shop | 0.0135 |
| Facebook | comments | 0.00225 |
| Facebook | reviews | 0.00225 |
| Facebook | ads | 0.0045 |
| Facebook | posts | 0.0045 |
| Facebook | reels | 0.0045 |
| Facebook | followers | 0.00675 |
| Facebook | events | 0.009 |
| Facebook | marketplace | 0.009 |
| Facebook | pages | 0.009 |

## Commerce

| Platform | Record | Per record (USD) |
|---|---|---|
| Amazon | reviews | 0.00045 |
| Amazon | products | 0.00135 |
| Shopify | products | 0.0009 |
| Farfetch | products | 0.0009 |
| GOAT | products | 0.0009 |
| StockX | products | 0.0009 |
| Blinkit | category | 0.0009 |
| Blinkit | products | 0.0009 |
| Blinkit | search | 0.0009 |
| Swiggy Instamart | category | 0.0009 |
| Swiggy Instamart | products | 0.0009 |
| Swiggy Instamart | search | 0.0009 |
| Zepto | category | 0.0009 |
| Zepto | products | 0.0009 |
| Zepto | search | 0.0009 |

## Places & travel

| Platform | Record | Per record (USD) |
|---|---|---|
| Google Maps | reviews | 0.000225 |
| Google Maps | places | 0.0036 |
| Yelp | reviews | 0.000225 |
| Yelp | business | 0.00045 |
| Tripadvisor | attractions | 0.0018 |
| Tripadvisor | hotels | 0.0018 |
| Tripadvisor | restaurants | 0.0018 |
| Tripadvisor | reviews | 0.0018 |
| Airbnb | listings | 0.0018 |
| Airbnb | reviews | 0.0018 |
| Booking.com | listings | 0.0018 |
| Booking.com | reviews | 0.0018 |

## Jobs & work

| Platform | Record | Per record (USD) |
|---|---|---|
| Indeed | jobs | 0.000045 |
| Naukri | job | 0.0018 |
| Upwork | jobs | 0.0027 |

## Search

| Platform | Record | Per record (USD) |
|---|---|---|
| Google | play reviews | 0.00009 |
| Google | images | 0.0009 |
| Google | search | 0.0009 |
| Google | news | 0.0018 |
| Google | shopping | 0.0027 |

## People

| Platform | Record | Per record (USD) |
|---|---|---|
| Contacts | per request, on the capabilities endpoint | |

## Everything else

| Platform | Record | Per record (USD) |
|---|---|---|
| Explore | per source, printed by the sources endpoint | |



---

# Platforms

> API for Agents · https://apiforagents.dev/platforms · HTML twin: https://apiforagents.dev/platforms

Every platform is one endpoint, `POST /v1/{platform}`, one operation per call, subjects batched inside the call. Every platform below is live behind the same key.

## Social

- [Instagram](https://apiforagents.dev/platforms/instagram.md): Profiles, posts, comments, followers, hashtags and similar accounts from Instagram. Ops: profiles, posts, similar, hashtag, search, comments, followers, history. Pay as you go, from $0.00045 per comment.
- [LinkedIn](https://apiforagents.dev/platforms/linkedin.md): People, companies, posts, jobs, comments, reactions and ads from LinkedIn. Ops: profiles, posts, companies, searchPeople, searchCompanies, jobs, searchPosts, postComments, profileComments, postReactions, profileReactions, adsLibrary, history. Pay as you go, from $0.001 per job.
- [YouTube](https://apiforagents.dev/platforms/youtube.md): Channels, videos and comments from YouTube. Ops: channels, videos, comments, history. Pay as you go, from $0.00045 per channel.
- [X / Twitter](https://apiforagents.dev/platforms/x_twitter.md): Profiles, posts and search from X, formerly Twitter. Ops: profiles, posts, search, searchPosts, history. Pay as you go, from $0.000225 per follower.
- [Reddit](https://apiforagents.dev/platforms/reddit.md): Posts, comments, subreddits and search from Reddit, with scores and permalinks on every row. Ops: posts, subreddit, comments, search, history. Pay as you go, from $0.0045 per comment.
- [TikTok](https://apiforagents.dev/platforms/tiktok.md): Creators, videos, comments, followers, search and shop listings from TikTok. Ops: profiles, posts, videos, searchPosts, search, comments, followers, shop, history. Pay as you go, from $0.00045 per comment.
- [Facebook](https://apiforagents.dev/platforms/facebook.md): Pages, posts, reels, comments, reviews, ads, events and marketplace listings from Facebook. Ops: pages, posts, reels, comments, reviews, followers, ads, events, marketplace, history. Pay as you go, from $0.0022 per comment.

## Commerce

- [Amazon](https://apiforagents.dev/platforms/amazon.md): Products, search results and reviews from any Amazon marketplace. Ops: products, search, reviews, history. Pay as you go, from $0.00045 per review.
- [Shopify](https://apiforagents.dev/platforms/shopify.md): Products, prices and stock from any Shopify store. Ops: products, history. Pay as you go, from $0.0009 per product.
- [Farfetch](https://apiforagents.dev/platforms/farfetch.md): Products, search and listings from Farfetch, priced per storefront. Ops: products, search, listing, history. Pay as you go, from $0.0009 per product.
- [GOAT](https://apiforagents.dev/platforms/goat.md): Resale products, listings and asks from GOAT. Ops: products, search, listing, history. Pay as you go, from $0.0009 per product.
- [StockX](https://apiforagents.dev/platforms/stockx.md): Market prices, listings and last sales from StockX. Ops: products, search, listing, history. Pay as you go, from $0.0009 per product.
- [Blinkit](https://apiforagents.dev/platforms/blinkit.md): A product's price and stock at one dark store, right now, from Blinkit. Ops: products, search, category, history. Pay as you go, from $0.0009 per category.
- [Swiggy Instamart](https://apiforagents.dev/platforms/instamart.md): A product's price and stock at one dark store, right now, from Swiggy Instamart. Ops: products, search, category, history. Pay as you go, from $0.0009 per category.
- [Zepto](https://apiforagents.dev/platforms/zepto.md): A product's price and stock at one dark store, right now, from Zepto. Ops: products, search, category, history. Pay as you go, from $0.0009 per category.

## Places & travel

- [Google Maps](https://apiforagents.dev/platforms/google_maps.md): Places, search and reviews from Google Maps. Ops: places, search, reviews, history. Pay as you go, from $0.000225 per review.
- [Yelp](https://apiforagents.dev/platforms/yelp.md): Businesses, search and reviews from Yelp. Ops: businesses, search, reviews, history. Pay as you go, from $0.000225 per review.
- [Tripadvisor](https://apiforagents.dev/platforms/tripadvisor.md): Hotels, restaurants, attractions and reviews from Tripadvisor. Ops: hotels, restaurants, attractions, searchHotels, searchRestaurants, searchAttractions, reviews, history. Pay as you go, from $0.0018 per attraction.
- [Airbnb](https://apiforagents.dev/platforms/airbnb.md): Listings, prices for a stay and reviews from Airbnb. Ops: listings, reviews, history. Pay as you go, from $0.0018 per listing.
- [Booking.com](https://apiforagents.dev/platforms/booking.md): Properties, search, prices for a stay and reviews from Booking.com. Ops: properties, search, reviews, history. Pay as you go, from $0.0018 per listing.

## Jobs & work

- [Indeed](https://apiforagents.dev/platforms/indeed.md): Job search and job listings from Indeed, by country. Ops: search, jobs. Pay as you go, from $0.000045 per job.
- [Naukri](https://apiforagents.dev/platforms/naukri.md): Job search from Naukri with the board's own filters. Ops: search, history. Pay as you go, from $0.0018 per job.
- [Upwork](https://apiforagents.dev/platforms/upwork.md): Job search from Upwork with its own filters. Ops: search, history. Pay as you go, from $0.0027 per job.

## Search

- [Google](https://apiforagents.dev/platforms/google.md): Web search, news, images, shopping and Play Store reviews from Google. Ops: search, news, images, shopping, playReviews. Pay as you go, from $0.00009 per play review.

## People

- [Contacts](https://apiforagents.dev/platforms/contacts.md): A person's work email and mobile number, by LinkedIn handle. Ops: reveal.

## Everything else

- [Explore](https://apiforagents.dev/platforms/explore.md): Data sources beyond the named platforms, for the long tail. Ops: sources, schema, run.



---

# Instagram API for agents

> API for Agents · https://apiforagents.dev/platforms/instagram · HTML twin: https://apiforagents.dev/platforms/instagram

Profiles, posts, comments, followers, hashtags and similar accounts from Instagram.

Endpoint: `POST https://apiforagents.dev/v1/instagram`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| comments | $0.00045 |
| followers | $0.000675 |
| posts | $0.0018 |
| profiles | $0.0018 |

## Operations

### profiles

Profile cards for up to ten accounts. Profile-only by default. A call that also wants each account's recent posts says `include.posts` and gets profiles AND posts in one call, one answer.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Usernames or profile URLs. |
| fields | no | list of enum | 'contact' adds the business email/phone fields to the answer; the fetch is the same either way, so this shapes the RESPONSE, not the bill. Values: profile, contact. |
| include | no | object |  |
| include.posts | no | object |  |
| include.posts.limit | no | integer (1-48) | Recent posts to fetch per account, newest first; 1-48. |
| include.posts.tab | no | enum | Which tab to read: the grid ("posts") or Reels ("reels"). Values: posts, reels. |
| include.posts.since | no | string (YYYY-MM-DD) | Only posts on or after this day (YYYY-MM-DD). Omit for the newest. |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| username | string |
| igUserId | string |
| fullName | string |
| biography | string |
| avatarUrl | string |
| profileUrl | string |
| externalUrl | string |
| bioLinks | list of object |
| category | string |
| isVerified | boolean |
| isPrivate | boolean |
| isBusiness | boolean |
| followers | integer |
| following | integer |
| mediaCount | integer |
| highlightReelCount | integer |
| engagementRate | number |
| contactEmail | string |
| contactPhone | string |
| location | string |
| businessStreet | string |
| businessZip | string |
| businessCityId | string |
| businessLatitude | number |
| businessLongitude | number |
| facebookPage | object |
| lastPostedAt | string |
| recentPosts | list of object |
| relatedAccounts | list of object |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/instagram \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profiles","subjects":["natgeo","nike"]}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "username": "brewlab.coffee",
    "fullName": "Brewlab Coffee",
    "biography": "Small-batch roasters · Austin, TX",
    "category": "Coffee shop",
    "isVerified": false,
    "isBusiness": true,
    "followers": 48210,
    "following": 312,
    "mediaCount": 864,
    "engagementRate": 0.031,
    "location": "Austin, Texas",
    "igUserId": "456125832",
    "avatarUrl": "https://img.instagram.com/brewlab-coffee.jpg",
    "externalUrl": "https://www.instagram.com/brewlab-coffee-1000",
    "isPrivate": false,
    "lastPostedAt": "2026-10-05",
    "details": {}
  },
  {
    "username": "mira.moves",
    "fullName": "Mira | Pilates",
    "biography": "Pilates for busy people · new class every Monday",
    "category": "Fitness trainer",
    "isVerified": true,
    "isBusiness": true,
    "followers": 182400,
    "following": 540,
    "mediaCount": 1210,
    "engagementRate": 0.046,
    "location": "Mumbai, India",
    "igUserId": "908365941",
    "avatarUrl": "https://img.instagram.com/mira-pilates.jpg",
    "externalUrl": "https://www.instagram.com/mira-pilates-1001",
    "isPrivate": false,
    "lastPostedAt": "2026-10-11",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=instagram&op=profiles (sign in first).

### posts

One account's recent posts, newest first. The grid or the Reels tab. With the author's profile card in the same answer.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subject | yes | string (≤400 chars) | One username or profile URL. |
| limit | no | integer (1-48) |  |
| tab | no | enum | 'reels' pulls the Reels tab instead of the grid. Non-default tabs and date floors always fetch fresh (they never touch the grid's cache markers) and are served fresh from a source that has them. Values: posts, reels. |
| since | no | string (YYYY-MM-DD) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| shortCode | string |
| igMediaId | string |
| caption | string |
| kind | string |
| productType | string |
| postedAt | string |
| permalink | string |
| mediaUrl | string |
| videoUrl | string |
| images | list of string |
| media | list of object |
| width | integer |
| height | integer |
| likes | integer |
| comments | integer |
| views | integer |
| plays | integer |
| saves | integer |
| shares | integer |
| videoDuration | number |
| language | string |
| likesHidden | boolean |
| isPinned | boolean |
| isPaidPartnership | boolean |
| hashtags | list of string |
| mentions | list of string |
| owner | object |
| taggedUsers | list of object |
| coauthors | list of object |
| sponsors | list of object |
| locationName | string |
| locationId | string |
| music | object |
| firstComment | string |
| recentComments | list of object |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/instagram \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"posts","subject":"natgeo","limit":12}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "owner": {
      "username": "brewlab.coffee"
    },
    "caption": "New single origin from Chikmagalur ☕ #specialtycoffee",
    "kind": "image",
    "postedAt": "2026-10-15T08:00:00Z",
    "likes": 2140,
    "comments": 88,
    "hashtags": [
      "specialtycoffee"
    ],
    "views": null,
    "videoDuration": null,
    "igMediaId": "1315471224",
    "permalink": "https://www.instagram.com/new-single-origin-from-chikmagalur-speci-1000",
    "mediaUrl": "https://www.instagram.com/new-single-origin-from-chikmagalur-speci-1000",
    "isPinned": false,
    "isPaidPartnership": false,
    "details": {}
  },
  {
    "owner": {
      "username": "brewlab.coffee"
    },
    "caption": "How we dial in espresso every morning",
    "kind": "reel",
    "postedAt": "2026-10-12T07:30:00Z",
    "likes": 5310,
    "comments": 142,
    "hashtags": [
      "espresso",
      "baristalife"
    ],
    "views": 88400,
    "videoDuration": 41,
    "igMediaId": "1973392646",
    "permalink": "https://www.instagram.com/how-we-dial-in-espresso-every-morning-1001",
    "mediaUrl": "https://www.instagram.com/how-we-dial-in-espresso-every-morning-1001",
    "isPinned": false,
    "isPaidPartnership": false,
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=instagram&op=posts (sign in first).

### similar

Accounts related to one account, for finding more like it.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subject | yes | string (≤400 chars) | One username or profile URL. |
| limit | no | integer (1-50) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| username | string |
| fullName | string |
| igUserId | string |
| isVerified | boolean |
| isPrivate | boolean |
| avatarUrl | string |
| profileUrl | string |
| followers | integer |
| profile | object |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/instagram \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"similar","subject":"natgeo","limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "username": "roastery.co",
    "fullName": "Roastery Co.",
    "followers": 61200,
    "details": {}
  },
  {
    "username": "dailygrind.cafe",
    "fullName": "Daily Grind",
    "followers": 23400,
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=instagram&op=similar (sign in first).

### hashtag

Posts TAGGED with a hashtag. Instagram's public listening surface. 'top' is the ranked timeline; 'newest' is chronological.

| Field | Required | Type | Meaning |
|---|---|---|---|
| hashtag | yes | string (≤150 chars) |  |
| sort | no | enum |  Values: top, newest. |
| limit | no | integer (1-50) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| shortCode | string |
| igMediaId | string |
| caption | string |
| kind | string |
| productType | string |
| postedAt | string |
| permalink | string |
| mediaUrl | string |
| videoUrl | string |
| images | list of string |
| media | list of object |
| width | integer |
| height | integer |
| likes | integer |
| comments | integer |
| views | integer |
| plays | integer |
| saves | integer |
| shares | integer |
| videoDuration | number |
| language | string |
| likesHidden | boolean |
| isPinned | boolean |
| isPaidPartnership | boolean |
| hashtags | list of string |
| mentions | list of string |
| owner | object |
| taggedUsers | list of object |
| coauthors | list of object |
| sponsors | list of object |
| locationName | string |
| locationId | string |
| music | object |
| firstComment | string |
| recentComments | list of object |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/instagram \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"hashtag","hashtag":"streetphotography","sort":"top","limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "owner": {
      "username": "mira.moves"
    },
    "caption": "10-minute core flow, save it for later #pilates",
    "kind": "reel",
    "postedAt": "2026-10-13T06:00:00Z",
    "likes": 18250,
    "comments": 412,
    "views": 241000,
    "videoDuration": 58,
    "hashtags": [
      "pilates",
      "corestrength"
    ],
    "igMediaId": "2465709650",
    "permalink": "https://www.instagram.com/10-minute-core-flow-save-it-for-later-pi-1000",
    "mediaUrl": "https://www.instagram.com/10-minute-core-flow-save-it-for-later-pi-1000",
    "isPinned": false,
    "isPaidPartnership": false,
    "details": {}
  },
  {
    "owner": {
      "username": "studio.flow"
    },
    "caption": "Reformer basics for week one #pilates",
    "kind": "reel",
    "postedAt": "2026-10-12T17:20:00Z",
    "likes": 6400,
    "comments": 120,
    "views": 91200,
    "videoDuration": 33,
    "hashtags": [
      "pilates",
      "reformer"
    ],
    "igMediaId": "1592716932",
    "permalink": "https://www.instagram.com/reformer-basics-for-week-one-pilates-1001",
    "mediaUrl": "https://www.instagram.com/reformer-basics-for-week-one-pilates-1001",
    "isPinned": false,
    "isPaidPartnership": false,
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=instagram&op=hashtag (sign in first).

### search

Instagram's own account search. Find handles by name or keyword.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) |  |
| limit | no | integer (1-25) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| username | string |
| fullName | string |
| igUserId | string |
| isVerified | boolean |
| isPrivate | boolean |
| avatarUrl | string |
| profileUrl | string |
| followers | integer |
| profile | object |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/instagram \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"coffee roasters","limit":10}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "username": "mira.moves",
    "fullName": "Mira | Pilates",
    "followers": 182400,
    "details": {}
  },
  {
    "username": "corewithkai",
    "fullName": "Kai Tan",
    "followers": 96300,
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=instagram&op=search (sign in first).

### comments

Top comments on up to ten Instagram POSTS, by /p/ or /reel/ URL (or a bare shortcode). Author is free text. Commenters are not corpus members.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Post URLs (/p/ or /reel/) or bare shortcodes. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| igCommentId | string |
| author | string |
| body | string |
| score | integer |
| commentedAt | string |
| commenter | object |
| replyCount | integer |
| commentUrl | string |
| postUrl | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/instagram \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"comments","subjects":["https://www.instagram.com/p/<shortcode>/"],"limit":50}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "author": "ravi.k",
    "body": "Tried this today, so good!",
    "score": 42,
    "commentedAt": "2026-10-15T09:10:00Z",
    "igCommentId": "1406279790",
    "details": {}
  },
  {
    "author": "lena_m",
    "body": "Which beans do you use?",
    "score": 18,
    "commentedAt": "2026-10-15T09:44:00Z",
    "igCommentId": "3977780793",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=instagram&op=comments (sign in first).

### followers

The followers OR the following list of up to ten public accounts. The discovered accounts become thin corpus rows and a directed follow edge.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Usernames or profile URLs. |
| direction | no | enum |  Values: followers, following. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| username | string |
| fullName | string |
| igUserId | string |
| isVerified | boolean |
| isPrivate | boolean |
| avatarUrl | string |
| profileUrl | string |
| followers | integer |
| profile | object |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/instagram \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"followers","subjects":["natgeo"],"direction":"following","limit":50}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "username": "ravi.k",
    "fullName": "Ravi Kumar",
    "followers": 412,
    "details": {}
  },
  {
    "username": "lena_m",
    "fullName": "Lena M.",
    "followers": 2100,
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=instagram&op=followers (sign in first).

### history (free)

The stored time series. Free, reads only what captures already wrote.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Usernames or profile URLs. |
| metric | no | enum |  Values: followers, following, media_count, engagement_rate. |
| days | no | integer (1-730) |  |

Request shape:

```json
{
  "op": "history",
  "subjects": [
    "example"
  ]
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=instagram&op=history (sign in first).

## Notes for the agent

Measured Instagram data, one operation per call. Usernames come from evidence (a search result, a pasted URL, a prior answer). Never typed from a person's name. ops: profiles (subjects = usernames; add include.posts to get each account's recent posts IN THE SAME CALL. Profiles with posts of each, one answer), posts (one account, deep. Includes the author's profile card), similar (related accounts), hashtag (posts tagged #x, sort top/newest), search (find accounts by keyword), comments (top comments on posts by URL), followers (the followers OR following list of accounts), history (stored time series, free). Ops are independent. Issue several as PARALLEL tool calls for faster answers. Fresh fetches are charged per record; your own answer is free while fresh.


---

# LinkedIn API for agents

> API for Agents · https://apiforagents.dev/platforms/linkedin · HTML twin: https://apiforagents.dev/platforms/linkedin

People, companies, posts, jobs, comments, reactions and ads from LinkedIn.

Endpoint: `POST https://apiforagents.dev/v1/linkedin`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| jobs | $0.001 |
| ads library | $0.002 |
| post comments | $0.002 |
| post reactions | $0.002 |
| posts | $0.002 |
| profile comments | $0.002 |
| profile reactions | $0.002 |
| companies | $0.004 |
| profiles | $0.004 |

## Operations

### profiles

Profile cards for up to ten people, by /in/<slug> vanity handle (a full profile URL is accepted and reduced to its slug). `include.posts` adds each person's recent posts to the same answer.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | /in/<slug> handles or profile URLs. |
| fields | no | list of enum | What each card carries: "profile" is the card itself (always), "positions" adds the person's work history. Omit for the card alone. Values: profile, positions. |
| include | no | object |  |
| include.posts | no | object |  |
| include.posts.limit | no | integer (1-50) | Recent posts to fetch per person, newest first; 1-50. |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| publicId | string |
| urn | string |
| name | string |
| firstName | string |
| lastName | string |
| headline | string |
| about | string |
| location | string |
| city | string |
| state | string |
| country | string |
| profileUrl | string |
| avatarUrl | string |
| coverUrl | string |
| followers | integer |
| connections | integer |
| isPremium | boolean |
| isOpenToWork | boolean |
| isHiring | boolean |
| isVerified | boolean |
| isCreator | boolean |
| isInfluencer | boolean |
| isOpenProfile | boolean |
| skills | list of string |
| companyName | string |
| positions | list of object |
| education | list of object |
| certifications | list of object |
| languages | list of object |
| projects | list of object |
| publications | list of object |
| courses | list of object |
| honors | list of object |
| volunteering | list of object |
| recommendations | list of object |
| causes | list of string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profiles","subjects":["satyanadella"]}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "publicId": "ananya-rao",
    "name": "Ananya Rao",
    "headline": "Head of Marketing at Paylane",
    "companyName": "Paylane",
    "location": "Bengaluru, Karnataka, India",
    "followers": 8421,
    "connections": 500,
    "isOpenToWork": false,
    "isHiring": true,
    "skills": [
      "Growth marketing",
      "B2B SaaS",
      "Brand strategy"
    ],
    "urn": "urn:li:fsd_profile:885327295",
    "avatarUrl": "https://img.linkedin.com/ananya-rao.jpg",
    "isPremium": false,
    "positions": [
      {
        "companyName": "Paylane",
        "title": "Head of Marketing",
        "startedOn": "2019-01",
        "isCurrent": true
      }
    ],
    "details": {}
  },
  {
    "publicId": "marcus-lee",
    "name": "Marcus Lee",
    "headline": "VP Sales, EMEA | B2B SaaS",
    "companyName": "Northfold",
    "location": "London, England, United Kingdom",
    "followers": 15230,
    "connections": 500,
    "isOpenToWork": false,
    "isHiring": false,
    "skills": [
      "Enterprise sales",
      "Negotiation",
      "Team leadership"
    ],
    "urn": "urn:li:fsd_profile:302922555",
    "avatarUrl": "https://img.linkedin.com/marcus-lee.jpg",
    "isPremium": false,
    "positions": [
      {
        "companyName": "Northfold",
        "title": "VP Sales",
        "startedOn": "2020-02",
        "isCurrent": true
      }
    ],
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=linkedin&op=profiles (sign in first).

### posts

A person's recent posts with engagement. (Company-page posts are not served yet. Asking today is declined with a reason, never guessed at.)

| Field | Required | Type | Meaning |
|---|---|---|---|
| subject | yes | string (≤400 chars) | One /in/<slug> handle or profile URL. |
| limit | no | integer (1-50) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| urn | string |
| body | string |
| kind | string |
| postedAt | string |
| permalink | string |
| mediaUrl | string |
| mediaType | string |
| likes | integer |
| comments | integer |
| reposts | integer |
| author | object |
| mentions | list of object |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"posts","subject":"satyanadella","limit":10}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "author": {
      "handle": "ananya-rao",
      "type": "person"
    },
    "body": "We cut onboarding from 14 days to 3. Here is what changed, step by step.",
    "kind": "text",
    "postedAt": "2026-10-14T09:12:00Z",
    "likes": 1284,
    "comments": 96,
    "reposts": 41,
    "urn": "urn:li:activity:2164259024",
    "permalink": "https://www.linkedin.com/we-cut-onboarding-from-14-days-to-3-here-1000",
    "mediaUrl": "https://www.linkedin.com/we-cut-onboarding-from-14-days-to-3-here-1000",
    "details": {}
  },
  {
    "author": {
      "handle": "ananya-rao",
      "type": "person"
    },
    "body": "We're hiring two product marketers in Bengaluru. DM me.",
    "kind": "image",
    "postedAt": "2026-10-08T06:40:00Z",
    "likes": 412,
    "comments": 58,
    "reposts": 19,
    "urn": "urn:li:activity:2872631718",
    "permalink": "https://www.linkedin.com/we-re-hiring-two-product-marketers-in-be-1001",
    "mediaUrl": "https://www.linkedin.com/we-re-hiring-two-product-marketers-in-be-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=linkedin&op=posts (sign in first).

### companies

Company pages for up to ten /company/<slug> handles or URLs.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | /company/<slug> handles or URLs. |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| universalName | string |
| urn | string |
| name | string |
| industry | string |
| sizeBucket | string |
| employeesCount | integer |
| followers | integer |
| website | string |
| linkedinUrl | string |
| hqLocation | string |
| hqStreet | string |
| hqCity | string |
| hqState | string |
| hqPostalCode | string |
| hqCountry | string |
| about | string |
| founded | integer |
| specialities | list of string |
| logoUrl | string |
| pageType | string |
| isVerified | boolean |
| isActive | boolean |
| jobsUrl | string |
| callToActionUrl | string |
| locations | list of object |
| employeesByLocation | list of object |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"companies","subjects":["microsoft"]}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "universalName": "paylane",
    "name": "Paylane",
    "industry": "Financial Services",
    "sizeBucket": "201-500",
    "employeesCount": 342,
    "followers": 48210,
    "website": "https://paylane.example",
    "hqLocation": "Bengaluru, Karnataka, India",
    "founded": 2017,
    "specialities": [
      "Payments",
      "Payouts",
      "APIs"
    ],
    "urn": "urn:li:fsd_company:70566685",
    "logoUrl": "https://img.linkedin.com/paylane.jpg",
    "details": {
      "tagline": "Payments for every shop",
      "employeesBySkill": [
        {
          "skill": "Sales",
          "count": 120
        },
        {
          "skill": "Python",
          "count": 85
        }
      ],
      "employeesByFunction": [
        {
          "function": "Engineering",
          "count": 210
        }
      ]
    }
  },
  {
    "universalName": "northfold",
    "name": "Northfold",
    "industry": "Software Development",
    "sizeBucket": "51-200",
    "employeesCount": 128,
    "followers": 15904,
    "website": "https://northfold.example",
    "hqLocation": "London, England, United Kingdom",
    "founded": 2019,
    "specialities": [
      "Finance automation",
      "Close management"
    ],
    "urn": "urn:li:fsd_company:1275972461",
    "logoUrl": "https://img.linkedin.com/northfold.jpg",
    "details": {
      "tagline": "Freight, simplified",
      "employeesBySkill": [
        {
          "skill": "Sales",
          "count": 90
        },
        {
          "skill": "Python",
          "count": 65
        }
      ],
      "employeesByFunction": [
        {
          "function": "Engineering",
          "count": 160
        }
      ]
    }
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=linkedin&op=companies (sign in first).

### searchPeople

People search. With `company`: that company's people, filtered (employees-of-X). Without it: a GLOBAL search. Give `query` (e.g. "fintech founder") and/or titles. Find founders/leadership via titles (free text: "Founder", "CEO") and/or seniority bands (cxo, owner_partner); functions and tenure narrow further.

| Field | Required | Type | Meaning |
|---|---|---|---|
| company | no | string (≤400 chars) | A /company/<slug> handle or company URL: search only that company's people. Omit for a global search (then give query and/or titles). |
| query | no | string (≤300 chars) |  |
| titles | no | list of string | Current job titles, free text ("Founder", "Head of Marketing"); any match. |
| pastTitles | no | list of string | Titles the person held before, free text. Global search only. |
| pastCompanies | no | list of string | Company names the person worked at before. Global search only. |
| schools | no | list of string | School or university names the person attended. Global search only. |
| locations | no | list of string |  |
| industries | no | list of string | Leaf names or " > " paths. Validated against LinkedIn's 434-node taxonomy. |
| companySizes | no | list of enum | Headcount bands of the person's current employer: 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+. Global search only. Values: 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+. |
| seniority | no | list of enum | Seniority bands: cxo, owner_partner, vice_president, director, experienced_manager, entry_manager, strategic, senior, entry, in_training. Any match. Values: in_training, entry, senior, strategic, entry_manager, experienced_manager, director, vice_president, cxo, owner_partner. |
| functions | no | list of enum | Job functions: marketing, sales, engineering, finance, operations, product_management, human_resources … Any match. Values: accounting, administrative, arts_and_design, business_development, community_and_social_services, consulting, education, engineering, entrepreneurship, finance, healthcare_services, human_resources, information_technology, legal, marketing, media_and_communication, military_and_protective_services, operations, product_management, program_and_project_management, purchasing, quality_assurance, real_estate, research, sales. |
| yearsAtCompany | no | list of enum | Tenure at the current company, in bands: lt_1y, 1_2y, 3_5y, 6_10y, gt_10y. Values: lt_1y, 1_2y, 3_5y, 6_10y, gt_10y. |
| yearsOfExperience | no | list of enum | Total career length, the same bands as yearsAtCompany. Values: lt_1y, 1_2y, 3_5y, 6_10y, gt_10y. |
| recentlyChangedJobs | no | boolean | true: only people who started a new role recently. |
| recentlyPosted | no | boolean | true: only people who posted on LinkedIn recently. Global search only. |
| personNames | no | list of string | Person-name / current employer / HQ / language filters (global search honours all). |
| currentCompanies | no | list of string | Names of the person's current employer(s). Global search only. |
| companyHqLocations | no | list of string | Where the current employer is headquartered. Cities, regions or countries as written on LinkedIn ("Bengaluru", "United States"). |
| profileLanguages | no | list of string | Languages listed on the profile, by name ("English", "Hindi"). |
| limit | no | integer (1-50) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| publicId | string |
| urn | string |
| name | string |
| firstName | string |
| lastName | string |
| headline | string |
| about | string |
| location | string |
| city | string |
| state | string |
| country | string |
| profileUrl | string |
| avatarUrl | string |
| coverUrl | string |
| followers | integer |
| connections | integer |
| isPremium | boolean |
| isOpenToWork | boolean |
| isHiring | boolean |
| isVerified | boolean |
| isCreator | boolean |
| isInfluencer | boolean |
| isOpenProfile | boolean |
| skills | list of string |
| companyName | string |
| positions | list of object |
| education | list of object |
| certifications | list of object |
| languages | list of object |
| projects | list of object |
| publications | list of object |
| courses | list of object |
| honors | list of object |
| volunteering | list of object |
| recommendations | list of object |
| causes | list of string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchPeople","company":"stripe","titles":["Head of Data"],"limit":10}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "publicId": "priya-nair",
    "name": "Priya Nair",
    "headline": "Head of Marketing · Ledgerly",
    "companyName": "Ledgerly",
    "location": "Bengaluru, Karnataka, India",
    "followers": 5120,
    "connections": 500,
    "isOpenToWork": false,
    "isHiring": false,
    "skills": [
      "Demand generation",
      "Fintech"
    ],
    "urn": "urn:li:fsd_profile:1103731855",
    "avatarUrl": "https://img.linkedin.com/priya-nair.jpg",
    "isPremium": false,
    "positions": [
      {
        "companyName": "Ledgerly",
        "title": "Head of Marketing",
        "startedOn": "2019-01",
        "isCurrent": true
      }
    ],
    "details": {}
  },
  {
    "publicId": "arjun-mehta",
    "name": "Arjun Mehta",
    "headline": "Marketing Director at Coinmint",
    "companyName": "Coinmint",
    "location": "Bengaluru, Karnataka, India",
    "followers": 3380,
    "connections": 500,
    "isOpenToWork": false,
    "isHiring": true,
    "skills": [
      "Performance marketing",
      "Payments"
    ],
    "urn": "urn:li:fsd_profile:1983785629",
    "avatarUrl": "https://img.linkedin.com/arjun-mehta.jpg",
    "isPremium": false,
    "positions": [
      {
        "companyName": "Coinmint",
        "title": "Marketing Director",
        "startedOn": "2020-02",
        "isCurrent": true
      }
    ],
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=linkedin&op=searchPeople (sign in first).

### searchCompanies

Company search by keyword and structured filters.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | no | string (≤300 chars) |  |
| locations | no | list of string |  |
| companySizes | no | list of enum | Headcount bands: 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+; any match. Values: 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+. |
| industries | no | list of string | Industry names, leaf or " > " path, from LinkedIn's own taxonomy. |
| limit | no | integer (1-50) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| universalName | string |
| urn | string |
| name | string |
| industry | string |
| sizeBucket | string |
| employeesCount | integer |
| followers | integer |
| website | string |
| linkedinUrl | string |
| hqLocation | string |
| hqStreet | string |
| hqCity | string |
| hqState | string |
| hqPostalCode | string |
| hqCountry | string |
| about | string |
| founded | integer |
| specialities | list of string |
| logoUrl | string |
| pageType | string |
| isVerified | boolean |
| isActive | boolean |
| jobsUrl | string |
| callToActionUrl | string |
| locations | list of object |
| employeesByLocation | list of object |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchCompanies","query":"fintech","locations":["London"],"limit":10}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "universalName": "ledgerly",
    "name": "Ledgerly",
    "industry": "Software Development",
    "sizeBucket": "11-50",
    "employeesCount": 38,
    "followers": 4120,
    "website": "https://ledgerly.example",
    "hqLocation": "Berlin, Germany",
    "founded": 2021,
    "specialities": [
      "Accounting software",
      "SMBs"
    ],
    "urn": "urn:li:fsd_company:4164023981",
    "logoUrl": "https://img.linkedin.com/ledgerly.jpg",
    "details": {
      "tagline": "Payments for every shop"
    }
  },
  {
    "universalName": "coinmint",
    "name": "Coinmint",
    "industry": "Financial Services",
    "sizeBucket": "51-200",
    "employeesCount": 96,
    "followers": 12800,
    "website": "https://coinmint.example",
    "hqLocation": "Berlin, Germany",
    "founded": 2018,
    "specialities": [
      "Crypto custody"
    ],
    "urn": "urn:li:fsd_company:1700968753",
    "logoUrl": "https://img.linkedin.com/coinmint.jpg",
    "details": {
      "tagline": "Freight, simplified"
    }
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=linkedin&op=searchCompanies (sign in first).

### jobs

Job listings search: `query` is the job-title anchor, the rest narrow it.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) |  |
| locations | no | list of string |  |
| companies | no | list of string | Hiring company names, as written on LinkedIn; any match. |
| industries | no | list of string | Industry names, leaf or " > " path, from LinkedIn's own taxonomy. |
| workplace | no | list of enum |  Values: remote, hybrid, onsite. |
| employmentType | no | list of enum |  Values: full_time, part_time, contract, internship, temporary. |
| experienceLevel | no | list of enum | Levels: internship, entry, associate, mid_senior, director, executive. Values: internship, entry, associate, mid_senior, director, executive. |
| postedWithin | no | enum |  Values: 1h, 1d, 7d, 30d. |
| salaryMin | no | integer (40-1000) | Thousands of USD a year, 40 and up; filtered in LinkedIn's $20k bands. |
| easyApply | no | boolean | true: only listings that take applications on LinkedIn itself. |
| under10Applicants | no | boolean | true: only listings with fewer than ten applicants so far. |
| sort | no | enum | Unset = the platform's default order. Values: relevance, newest. |
| limit | no | integer (1-50) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| jobId | string |
| title | string |
| companyName | string |
| location | string |
| city | string |
| state | string |
| country | string |
| employmentType | string |
| workplaceType | string |
| isRemoteAllowed | boolean |
| experienceLevel | string |
| industries | list of string |
| functions | list of string |
| salaryText | string |
| listedAt | string |
| expiresAt | string |
| applicants | integer |
| url | string |
| applyUrl | string |
| applicantTrackingSystem | string |
| description | string |
| descriptionHtml | string |
| companyUrn | string |
| companySlug | string |
| companyUrl | string |
| companyLogoUrl | string |
| companyWebsite | string |
| companyDescription | string |
| companyEmployees | integer |
| companyFollowers | integer |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"jobs","query":"data engineer","locations":["Berlin"],"postedWithin":"7d","limit":10}'
```

Example response rows (real rows, business data; a live row carries every field above):

```json
[
  {
    "jobId": "4430707116",
    "title": "Product Manager (Manufacturing) - Hybrid",
    "companyName": "MacLean Power Systems",
    "location": "Manteca, California, United States",
    "employmentType": "full_time",
    "listedAt": "2026-08-22T15:42:18+00:00",
    "applyUrl": "https://jobs.dayforcehcm.com/en-US/mlp/CANDIDATEPORTAL/jobs/15691?src=LinkedIn",
    "description": "MPS in Stockton, CA is seeking a talented Product Manager (Overhead High Voltage Switchgear). In this role you will be responsible for managing product portfolios, providing technical and commercial support to customers, and developing strategic and tactical plans encompassing the market and competitive analysis for our Stockton facility.\n\nThis role is Hybrid 3-2, and our facility is located in Stockton, CA.\n\nWhat You’ll Do\n\nOversee the implementation of technical product solutions for clients a",
    "details": {}
  },
  {
    "jobId": "4419567749",
    "title": "Sr. Engineering and Product Manager",
    "companyName": "Justrite Safety Group",
    "location": "Broomfield, Colorado, United States",
    "employmentType": "full_time",
    "listedAt": "2026-08-22T15:22:45+00:00",
    "applyUrl": "https://recruiting2.ultipro.com/JUS1001JUSTM/JobBoard/2d5c8dc9-71e2-46d7-aa3d-305883f6102b/OpportunityDetail?opportunityId=12d54091-fc20-4284-8485-92c704543815&source=LinkedIn",
    "description": "About Justrite Safety Group\n\nAt Justrite Safety Group, we're more than just a collection of industrial safety companies; we're a dynamic organization dedicated to protecting people, property, and the planet. Our ever-growing portfolio of companies collaborates to deliver advanced industrial safety solutions that set the standard for excellence.\n\nAs our business continues to grow, we continue to look for top talent to join our team as we lead the charge in revolutionizing industrial safety, ensur",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=linkedin&op=jobs (sign in first).

### searchPosts

Search LinkedIn POSTS by keyword. The content itself, not people or companies. `query` is the search ("layoffs fintech", a product name, a hashtag). Narrow by who is mentioned, the content type (videos, images, documents…), how recent, and sort by relevance or date.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) | Words the posts must contain. Always needed, even with mentioning (a mention-only ask is refused, verified 2026-09-23): to list all that tags a company or person, use their name as the query. |
| mentioning | no | list of string | Only posts that tag these people or companies: /in/<slug> or /company/<slug> handles, or their URLs. |
| contentType | no | enum | What kind of post: videos, images, jobs, live_videos, documents, collaborative_articles. Omit or "all" for every kind. Values: all, videos, images, jobs, live_videos, documents, collaborative_articles. |
| postedWithin | no | enum |  Values: any, 1h, 1d, 7d, 30d, 3m, 6m, 1y. |
| sort | no | enum |  Values: relevance, newest. |
| includeReposts | no | boolean | true: reposts of other people's posts count as hits too. |
| includeQuotePosts | no | boolean | true: posts that quote another post count as hits too. |
| limit | no | integer (1-50) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| urn | string |
| body | string |
| kind | string |
| postedAt | string |
| permalink | string |
| mediaUrl | string |
| mediaType | string |
| likes | integer |
| comments | integer |
| reposts | integer |
| author | object |
| mentions | list of object |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchPosts","query":"AI agents","postedWithin":"7d","limit":10}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "author": {
      "handle": "marcus-lee",
      "type": "person"
    },
    "body": "Layoffs in fintech this quarter: what I'm hearing from 40 sales leaders.",
    "kind": "text",
    "postedAt": "2026-10-15T08:00:00Z",
    "likes": 3120,
    "comments": 402,
    "reposts": 210,
    "urn": "urn:li:activity:31086471",
    "permalink": "https://www.linkedin.com/layoffs-in-fintech-this-quarter-what-i-m-1000",
    "mediaUrl": "https://www.linkedin.com/layoffs-in-fintech-this-quarter-what-i-m-1000",
    "details": {}
  },
  {
    "author": {
      "handle": "leila-haddad",
      "type": "person"
    },
    "body": "If you were part of the fintech layoffs, I'm sharing 25 open roles below.",
    "kind": "text",
    "postedAt": "2026-10-13T15:30:00Z",
    "likes": 1840,
    "comments": 233,
    "reposts": 512,
    "urn": "urn:li:activity:3331202746",
    "permalink": "https://www.linkedin.com/if-you-were-part-of-the-fintech-layoffs--1001",
    "mediaUrl": "https://www.linkedin.com/if-you-were-part-of-the-fintech-layoffs--1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=linkedin&op=searchPosts (sign in first).

### postComments

Comments on up to ten LinkedIn POSTS, by post URL. `includeReplies` pulls nested replies; `postedWithin` limits how far back to read.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Post URLs. |
| includeReplies | no | boolean | true: nested replies come back under their parent comment, not only top-level comments. |
| postedWithin | no | enum |  Values: any, 1d, 7d, 30d. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| commentId | string |
| commentUrl | string |
| postUrl | string |
| postUrn | string |
| commenterProfileId | string |
| commenterHandle | string |
| commenterName | string |
| commenterHeadline | string |
| commenterUrl | string |
| commenterAvatarUrl | string |
| commenterType | string |
| commenterFollowers | integer |
| isAuthor | boolean |
| edited | boolean |
| likes | integer |
| replies | integer |
| reactions | list of object |
| body | string |
| commentedAt | string |
| mentions | list of string |
| postAuthor | string |
| postAuthorHandle | string |
| postAuthorUrl | string |
| postAuthorHeadline | string |
| postAuthorAvatarUrl | string |
| postAuthorProfileId | string |
| postAuthorType | string |
| postText | string |
| postPostedAt | string |
| postMediaUrl | string |
| postLikes | integer |
| postComments | integer |
| postReposts | integer |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"postComments","subjects":["https://www.linkedin.com/posts/<post-id>"],"limit":25}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "commenterHandle": "priya-nair",
    "commenterName": "Priya Nair",
    "commenterHeadline": "Product Lead at Ledgerly",
    "body": "This matches what we saw. Did churn move too?",
    "likes": 34,
    "replies": 3,
    "commentedAt": "2026-10-14T10:02:00Z",
    "postAuthor": "Ananya Rao",
    "isAuthor": false,
    "commentId": "3095264851",
    "commentUrl": "https://www.linkedin.com/priya-nair-1000",
    "postUrl": "https://www.linkedin.com/priya-nair-1000",
    "postUrn": "urn:li:activity:1393902121",
    "commenterProfileId": "3708772264",
    "commenterUrl": "https://www.linkedin.com/priya-nair-1000",
    "postAuthorUrl": "https://www.linkedin.com/priya-nair-1000",
    "details": {}
  },
  {
    "commenterHandle": "tom-becker",
    "commenterName": "Tom Becker",
    "commenterHeadline": "Founder, Brightdesk",
    "body": "Saving this for our next planning week.",
    "likes": 12,
    "replies": 0,
    "commentedAt": "2026-10-14T10:40:00Z",
    "postAuthor": "Ananya Rao",
    "isAuthor": false,
    "commentId": "2364499118",
    "commentUrl": "https://www.linkedin.com/tom-becker-1001",
    "postUrl": "https://www.linkedin.com/tom-becker-1001",
    "postUrn": "urn:li:activity:492950413",
    "commenterProfileId": "1378818087",
    "commenterUrl": "https://www.linkedin.com/tom-becker-1001",
    "postAuthorUrl": "https://www.linkedin.com/tom-becker-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=linkedin&op=postComments (sign in first).

### profileComments

A profile's OWN commenting activity. The comments up to ten people left across LinkedIn, by /in/<slug> handle, newest first.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | /in/<slug> handles or profile URLs. |
| postedWithin | no | enum |  Values: any, 1d, 7d, 30d. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| commentId | string |
| commentUrl | string |
| postUrl | string |
| postUrn | string |
| commenterProfileId | string |
| commenterHandle | string |
| commenterName | string |
| commenterHeadline | string |
| commenterUrl | string |
| commenterAvatarUrl | string |
| commenterType | string |
| commenterFollowers | integer |
| isAuthor | boolean |
| edited | boolean |
| likes | integer |
| replies | integer |
| reactions | list of object |
| body | string |
| commentedAt | string |
| mentions | list of string |
| postAuthor | string |
| postAuthorHandle | string |
| postAuthorUrl | string |
| postAuthorHeadline | string |
| postAuthorAvatarUrl | string |
| postAuthorProfileId | string |
| postAuthorType | string |
| postText | string |
| postPostedAt | string |
| postMediaUrl | string |
| postLikes | integer |
| postComments | integer |
| postReposts | integer |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profileComments","subjects":["satyanadella"],"limit":25}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "commenterHandle": "marcus-lee",
    "commenterName": "Marcus Lee",
    "commenterHeadline": "VP Sales, EMEA | B2B SaaS",
    "body": "Strong take. Discovery calls are where most deals are lost.",
    "likes": 48,
    "replies": 5,
    "commentedAt": "2026-10-15T07:30:00Z",
    "postAuthor": "Emma Novak",
    "isAuthor": false,
    "commentId": "3190665176",
    "commentUrl": "https://www.linkedin.com/marcus-lee-1000",
    "postUrl": "https://www.linkedin.com/marcus-lee-1000",
    "postUrn": "urn:li:activity:1646120582",
    "commenterProfileId": "1150986638",
    "commenterUrl": "https://www.linkedin.com/marcus-lee-1000",
    "postAuthorUrl": "https://www.linkedin.com/marcus-lee-1000",
    "details": {}
  },
  {
    "commenterHandle": "marcus-lee",
    "commenterName": "Marcus Lee",
    "commenterHeadline": "VP Sales, EMEA | B2B SaaS",
    "body": "Congrats on the launch, team!",
    "likes": 9,
    "replies": 1,
    "commentedAt": "2026-10-12T16:05:00Z",
    "postAuthor": "Daniel Kim",
    "isAuthor": false,
    "commentId": "4239718143",
    "commentUrl": "https://www.linkedin.com/marcus-lee-1001",
    "postUrl": "https://www.linkedin.com/marcus-lee-1001",
    "postUrn": "urn:li:activity:3776163747",
    "commenterProfileId": "3190281601",
    "commenterUrl": "https://www.linkedin.com/marcus-lee-1001",
    "postAuthorUrl": "https://www.linkedin.com/marcus-lee-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=linkedin&op=profileComments (sign in first).

### postReactions

Reactions on up to ten LinkedIn POSTS, by post URL. Who reacted and how. `reactionTypes` filters to specific reactions (Like, Celebrate…).

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Post URLs. |
| reactionTypes | no | list of enum | Keep only these reactions: like, celebrate, support, love, insightful, funny. Omit for all of them. Values: like, celebrate, support, love, insightful, funny. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| reactorProfileId | string |
| reactorHandle | string |
| reactorName | string |
| reactorHeadline | string |
| reactorUrl | string |
| reactorAvatarUrl | string |
| reactorLocation | string |
| reactionType | string |
| postUrn | string |
| postUrl | string |
| postAuthor | string |
| postAuthorHandle | string |
| postAuthorUrl | string |
| postAuthorHeadline | string |
| postAuthorProfileId | string |
| postAuthorType | string |
| postText | string |
| postPostedAt | string |
| postMediaUrl | string |
| postLikes | integer |
| postComments | integer |
| postReposts | integer |
| reactedAt | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"postReactions","subjects":["https://www.linkedin.com/posts/<post-id>"],"reactionTypes":["like"],"limit":25}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "reactorHandle": "priya-nair",
    "reactorName": "Priya Nair",
    "reactorHeadline": "Product Lead at Ledgerly",
    "reactorLocation": "Mumbai, India",
    "reactionType": "LIKE",
    "postAuthor": "Ananya Rao",
    "reactedAt": "2026-10-14T09:30:00Z",
    "reactorProfileId": "4155200177",
    "reactorUrl": "https://www.linkedin.com/priya-nair-1000",
    "postUrn": "urn:li:activity:492783029",
    "postUrl": "https://www.linkedin.com/priya-nair-1000",
    "postAuthorUrl": "https://www.linkedin.com/priya-nair-1000",
    "details": {}
  },
  {
    "reactorHandle": "daniel-kim",
    "reactorName": "Daniel Kim",
    "reactorHeadline": "Engineering Manager at Kitebank",
    "reactorLocation": "Seoul, South Korea",
    "reactionType": "PRAISE",
    "postAuthor": "Ananya Rao",
    "reactedAt": "2026-10-14T09:41:00Z",
    "reactorProfileId": "1968241913",
    "reactorUrl": "https://www.linkedin.com/daniel-kim-1001",
    "postUrn": "urn:li:activity:3363527946",
    "postUrl": "https://www.linkedin.com/daniel-kim-1001",
    "postAuthorUrl": "https://www.linkedin.com/daniel-kim-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=linkedin&op=postReactions (sign in first).

### profileReactions

A profile's OWN reactions. What up to ten people reacted to across LinkedIn, by /in/<slug> handle, newest first.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | /in/<slug> handles or profile URLs. |
| postedWithin | no | enum |  Values: any, 1d, 7d, 30d. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| reactorProfileId | string |
| reactorHandle | string |
| reactorName | string |
| reactorHeadline | string |
| reactorUrl | string |
| reactorAvatarUrl | string |
| reactorLocation | string |
| reactionType | string |
| postUrn | string |
| postUrl | string |
| postAuthor | string |
| postAuthorHandle | string |
| postAuthorUrl | string |
| postAuthorHeadline | string |
| postAuthorProfileId | string |
| postAuthorType | string |
| postText | string |
| postPostedAt | string |
| postMediaUrl | string |
| postLikes | integer |
| postComments | integer |
| postReposts | integer |
| reactedAt | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profileReactions","subjects":["satyanadella"],"limit":25}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "reactorHandle": "sofia-ortiz",
    "reactorName": "Sofia Ortiz",
    "reactorHeadline": "Data Engineer · Python, dbt, Airflow",
    "reactorLocation": "Austin, Texas, United States",
    "reactionType": "LIKE",
    "postAuthor": "Tom Becker",
    "postText": "We open-sourced our data quality checks.",
    "reactedAt": "2026-10-15T14:10:00Z",
    "reactorProfileId": "3680798353",
    "reactorUrl": "https://www.linkedin.com/sofia-ortiz-1000",
    "postUrn": "urn:li:activity:3845499993",
    "postUrl": "https://www.linkedin.com/sofia-ortiz-1000",
    "postAuthorUrl": "https://www.linkedin.com/sofia-ortiz-1000",
    "details": {}
  },
  {
    "reactorHandle": "sofia-ortiz",
    "reactorName": "Sofia Ortiz",
    "reactorHeadline": "Data Engineer · Python, dbt, Airflow",
    "reactorLocation": "Austin, Texas, United States",
    "reactionType": "EMPATHY",
    "postAuthor": "Leila Haddad",
    "postText": "Today is my last day at Coinmint.",
    "reactedAt": "2026-10-12T18:22:00Z",
    "reactorProfileId": "3776001972",
    "reactorUrl": "https://www.linkedin.com/sofia-ortiz-1001",
    "postUrn": "urn:li:activity:1372690733",
    "postUrl": "https://www.linkedin.com/sofia-ortiz-1001",
    "postAuthorUrl": "https://www.linkedin.com/sofia-ortiz-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=linkedin&op=profileReactions (sign in first).

### adsLibrary

Ads from the LinkedIn Ad Library, by Ad Library URL. An advertiser's page (all their live ads) or a single ad's detail URL.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subject | yes | string (≤400 chars) | An Ad Library URL. An advertiser page or one ad's detail page. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| adId | string |
| adUrl | string |
| advertiserUrl | string |
| paidBy | string |
| headline | string |
| body | string |
| format | string |
| mediaType | string |
| mediaUrl | string |
| clickUrl | string |
| impressions | integer |
| targetingLocation | string |
| started | string |
| ended | string |
| daysActive | integer |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"adsLibrary","subject":"https://www.linkedin.com/ad-library/search?companyIds=<company-id>","limit":10}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "paidBy": "Northfold",
    "headline": "Close your books 3x faster",
    "body": "Finance teams at 400+ companies close in 2 days.",
    "format": "SINGLE_IMAGE",
    "mediaType": "image",
    "impressions": "10k-50k",
    "targetingLocation": "United Kingdom",
    "started": "2026-09-02",
    "daysActive": 44,
    "adId": "3114963231",
    "adUrl": "https://www.linkedin.com/finance-teams-at-400-companies-close-in--1000",
    "advertiserUrl": "https://www.linkedin.com/finance-teams-at-400-companies-close-in--1000",
    "mediaUrl": "https://www.linkedin.com/finance-teams-at-400-companies-close-in--1000",
    "clickUrl": "https://www.linkedin.com/finance-teams-at-400-companies-close-in--1000",
    "details": {}
  },
  {
    "paidBy": "Northfold",
    "headline": "The 2026 finance team benchmark",
    "body": "Download the report: 1,200 teams surveyed.",
    "format": "DOCUMENT",
    "mediaType": "document",
    "impressions": "50k-100k",
    "targetingLocation": "Europe",
    "started": "2026-09-20",
    "daysActive": 26,
    "adId": "3288908810",
    "adUrl": "https://www.linkedin.com/download-the-report-1-200-teams-surveyed-1001",
    "advertiserUrl": "https://www.linkedin.com/download-the-report-1-200-teams-surveyed-1001",
    "mediaUrl": "https://www.linkedin.com/download-the-report-1-200-teams-surveyed-1001",
    "clickUrl": "https://www.linkedin.com/download-the-report-1-200-teams-surveyed-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=linkedin&op=adsLibrary (sign in first).

### history (free)

The stored time series. Free, reads what captures already wrote.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Handles or URLs of the chosen entity kind. |
| entity | no | enum | Whose series: "people" (/in/ handles) or "companies" (/company/ handles). Values: people, companies. |
| metric | no | string | people: followers | connections; companies: followers | employees_count |
| days | no | integer (1-730) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| subject |  |
| metric |  |
| points[].date |  |
| points[].value |  |

Request shape:

```json
{
  "op": "history",
  "subjects": [
    "example"
  ]
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=linkedin&op=history (sign in first).

## Notes for the agent

Measured LinkedIn data, one operation per call. /in/ handles come from evidence (web search, a pasted URL, a prior answer). Never typed from a name. A `publicId` of the form ACoAA…/ ACwAA… is LinkedIn's member id, which some search rows carry instead of a handle: it works for profiles here, but contacts needs the /in/ handle. Web-search the person for it. Never typed from a name: first-last slugs often name a DIFFERENT person, and the fetch bills. ops: profiles (batch of /in/ handles or URLs; fields=["positions"] adds the work history, include.posts adds each person's recent posts in the same call), posts (one person, deep. Includes the author's profile card when held), companies (company pages), searchPeople (a company's people filtered by title/seniority/function, or GLOBAL with query and no company), searchCompanies (query + size/industry/ location), jobs (listings by title + filters), searchPosts (find POSTS by keyword. The content itself, not people/companies; narrow by mention, content type, recency), postComments (a post's comment thread by URL), profileComments (a person's OWN commenting activity by /in/ handle), postReactions (who reacted to a post, filterable by reaction), profileReactions (what a person reacted to), adsLibrary (an advertiser's public ads from an Ad Library URL), history (stored series, free). A person's work email and mobile number are the `contacts` tool's job. Find the /in/ here first. Ops are independent. Issue several as PARALLEL tool calls for faster answers.


---

# YouTube API for agents

> API for Agents · https://apiforagents.dev/platforms/youtube · HTML twin: https://apiforagents.dev/platforms/youtube

Channels, videos and comments from YouTube.

Endpoint: `POST https://apiforagents.dev/v1/youtube`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| channels | $0.00045 |
| comments | $0.00045 |
| videos | $0.00045 |

## Operations

### channels

Channel cards for up to ten channels, by @handle, UC… id or pasted channel URL. `include.videos` adds each channel's recent videos to the same answer.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | @handles, UC… ids or channel URLs. |
| include | no | object |  |
| include.videos | no | object |  |
| include.videos.limit | no | integer (1-50) | Recent videos to fetch per channel, newest first; 1-50. |
| include.videos.since | no | string (YYYY-MM-DD) | Only videos published on or after this day (YYYY-MM-DD). |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| handle | string |
| channelId | string |
| name | string |
| description | string |
| avatarUrl | string |
| bannerUrl | string |
| country | string |
| isVerified | boolean |
| joinedOn | string |
| links | list of string |
| subscribers | integer |
| totalVideos | integer |
| totalViews | integer |
| channelUrl | string |
| canonicalHandle | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/youtube \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"channels","subjects":["@mkbhd"]}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "handle": "@mirapilates",
    "name": "Mira Pilates",
    "description": "Short pilates classes you can do at home.",
    "country": "IN",
    "isVerified": true,
    "joinedOn": "2019-03-11",
    "subscribers": 412000,
    "totalVideos": 318,
    "totalViews": 52100000,
    "channelId": "495749829",
    "avatarUrl": "https://img.youtube.com/mira-pilates.jpg",
    "bannerUrl": "https://img.youtube.com/mira-pilates.jpg",
    "details": {}
  },
  {
    "handle": "@northfoldhq",
    "name": "Northfold",
    "description": "Finance, made calmer.",
    "country": "GB",
    "isVerified": false,
    "joinedOn": "2020-07-02",
    "subscribers": 18400,
    "totalVideos": 96,
    "totalViews": 1240000,
    "channelId": "3181161809",
    "avatarUrl": "https://img.youtube.com/northfold.jpg",
    "bannerUrl": "https://img.youtube.com/northfold.jpg",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=youtube&op=channels (sign in first).

### videos

One channel's recent videos with views, likes and comments. Includes the channel card when held. A date floor always fetches fresh.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subject | yes | string (≤400 chars) | One @handle, UC… id or channel URL. |
| limit | no | integer (1-50) |  |
| since | no | string (YYYY-MM-DD) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| videoId | string |
| title | string |
| description | string |
| kind | string |
| publishedAt | string |
| durationS | integer |
| category | string |
| keywords | list of string |
| isLive | boolean |
| thumbnailUrl | string |
| permalink | string |
| views | integer |
| likes | integer |
| comments | integer |
| channelHandle | string |
| channelNativeId | string |
| channelName | string |
| channelUrl | string |
| channelSubscribers | string |
| channelBadges | list of string |
| captions | list of object |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/youtube \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"videos","subject":"@mkbhd","limit":10}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "channelHandle": "@cookwithkai",
    "title": "One-pan laksa in 25 minutes",
    "kind": "video",
    "publishedAt": "2026-10-09",
    "durationS": 902,
    "category": "Howto & Style",
    "views": 1210000,
    "likes": 41200,
    "comments": 1830,
    "keywords": [
      "laksa",
      "one pan",
      "weeknight"
    ],
    "videoId": "2831094151",
    "isLive": false,
    "thumbnailUrl": "https://img.youtube.com/one-pan-laksa-in-25-minutes.jpg",
    "permalink": "https://www.youtube.com/one-pan-laksa-in-25-minutes-1000",
    "channelNativeId": "247899388",
    "details": {}
  },
  {
    "channelHandle": "@cookwithkai",
    "title": "Crispy rice, 3 ways",
    "kind": "short",
    "publishedAt": "2026-10-06",
    "durationS": 48,
    "category": "Howto & Style",
    "views": 2830000,
    "likes": 120400,
    "comments": 2210,
    "keywords": [
      "rice",
      "shorts"
    ],
    "videoId": "2788502292",
    "isLive": false,
    "thumbnailUrl": "https://img.youtube.com/crispy-rice-3-ways.jpg",
    "permalink": "https://www.youtube.com/crispy-rice-3-ways-1001",
    "channelNativeId": "3627234726",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=youtube&op=videos (sign in first).

### comments

Top comments on up to ten VIDEOS, by watch/shorts URL or bare video id. Commenters are free text. Not corpus members.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Watch/shorts URLs or bare video ids. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| commentId | string |
| author | string |
| authorChannelId | string |
| body | string |
| likes | integer |
| replies | integer |
| postedAt | string |
| isOwner | boolean |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/youtube \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"comments","subjects":["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"limit":50}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "author": "@ravi_k",
    "body": "Made this last night, the whole family loved it.",
    "likes": 812,
    "replies": 14,
    "postedAt": "2026-10-10",
    "isOwner": false,
    "commentId": "2563345527",
    "authorChannelId": "2543720091",
    "details": {}
  },
  {
    "author": "@lena.m",
    "body": "Can I use coconut cream instead of milk?",
    "likes": 236,
    "replies": 3,
    "postedAt": "2026-10-10",
    "isOwner": false,
    "commentId": "1328958082",
    "authorChannelId": "1219906403",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=youtube&op=comments (sign in first).

### history (free)

The stored time series. Free, reads only what captures already wrote.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | @handles, UC… ids or channel URLs. |
| metric | no | enum |  Values: subscribers, total_videos, total_views. |
| days | no | integer (1-730) |  |

Request shape:

```json
{
  "op": "history",
  "subjects": [
    "example"
  ]
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=youtube&op=history (sign in first).

## Notes for the agent

Measured YouTube data, one operation per call. Channels come from evidence (a pasted channel URL, an @handle you SAW, a UC… id). Never typed from a person's name. ops: channels (subjects = @handles, UC ids or channel URLs; add include.videos to get each channel's recent videos IN THE SAME CALL), videos (one channel, deep. Includes the channel card when held; views, likes, comments, duration and absolute publish dates per video), comments (top comments on videos by watch/shorts URL or id), history (stored subscriber/video/view series, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.


---

# X / Twitter API for agents

> API for Agents · https://apiforagents.dev/platforms/x_twitter · HTML twin: https://apiforagents.dev/platforms/x_twitter

Profiles, posts and search from X, formerly Twitter.

Endpoint: `POST https://apiforagents.dev/v1/x_twitter`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| followers | $0.000225 |
| replies | $0.000225 |
| retweeters | $0.000225 |
| tweets | $0.000225 |
| profiles | $0.00045 |

## Operations

### profiles

Profile cards for up to ten accounts, by @handle or pasted profile URL. `include.posts` adds each account's recent posts to the same answer.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | @handles or profile URLs. |
| include | no | object |  |
| include.posts | no | object |  |
| include.posts.limit | no | integer (1-50) | Recent posts to fetch per account, newest first; 1-50. |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| username | string |
| accountId | string |
| displayName | string |
| bio | string |
| location | string |
| website | string |
| avatarUrl | string |
| bannerUrl | string |
| isProtected | boolean |
| isBlueVerified | boolean |
| verifiedType | string |
| accountType | string |
| joinedAt | string |
| pinnedPostUrl | string |
| followers | integer |
| following | integer |
| postsCount | integer |
| mediaCount | integer |
| likesGiven | integer |
| canonicalUsername | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/x_twitter \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profiles","subjects":["@NASA"]}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "username": "northfoldhq",
    "displayName": "Northfold",
    "bio": "Close your books in days, not weeks.",
    "location": "London",
    "isBlueVerified": true,
    "accountType": "business",
    "joinedAt": "2020-06-01",
    "followers": 24100,
    "following": 410,
    "postsCount": 3812,
    "accountId": "1354972458",
    "avatarUrl": "https://img.x.com/northfold.jpg",
    "bannerUrl": "https://img.x.com/northfold.jpg",
    "isProtected": false,
    "pinnedPostUrl": "https://x.com/northfold-1000",
    "details": {}
  },
  {
    "username": "ananya_builds",
    "displayName": "Ananya Rao",
    "bio": "Marketing @paylane. Notes on growth.",
    "location": "Bengaluru",
    "isBlueVerified": false,
    "accountType": "person",
    "joinedAt": "2014-02-18",
    "followers": 8920,
    "following": 690,
    "postsCount": 5210,
    "accountId": "1119122908",
    "avatarUrl": "https://img.x.com/ananya-rao.jpg",
    "bannerUrl": "https://img.x.com/ananya-rao.jpg",
    "isProtected": false,
    "pinnedPostUrl": "https://x.com/ananya-rao-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=x_twitter&op=profiles (sign in first).

### posts

One account's recent posts with engagement. Includes the author's profile card when held.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subject | yes | string (≤400 chars) | One @handle or profile URL. |
| limit | no | integer (1-50) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| postId | string |
| body | string |
| kind | string |
| postedAt | string |
| permalink | string |
| language | string |
| mediaUrl | string |
| likes | integer |
| replies | integer |
| reposts | integer |
| quotes | integer |
| views | integer |
| bookmarks | integer |
| isReply | boolean |
| isQuote | boolean |
| isPinned | boolean |
| replyToHandle | string |
| quotedPostUrl | string |
| repostedPostUrl | string |
| hashtags | list of string |
| mentions | list of string |
| authorUsername | string |
| authorId | string |
| author | object |
| conversationId | string |
| media | list of object |
| outboundLinks | list of string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/x_twitter \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"posts","subject":"@NASA","limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "authorUsername": "northfoldhq",
    "body": "Month-end close in 2 days, not 10. Here's how teams do it ↓",
    "kind": "post",
    "postedAt": "2026-10-14T13:00:00Z",
    "views": 84200,
    "likes": 1210,
    "reposts": 240,
    "replies": 61,
    "quotes": 18,
    "isReply": false,
    "replyToHandle": null,
    "postId": "2327853664",
    "permalink": "https://x.com/month-end-close-in-2-days-not-10-here-s--1000",
    "mediaUrl": "https://x.com/month-end-close-in-2-days-not-10-here-s--1000",
    "isQuote": false,
    "isPinned": false,
    "quotedPostUrl": "https://x.com/month-end-close-in-2-days-not-10-here-s--1000",
    "repostedPostUrl": "https://x.com/month-end-close-in-2-days-not-10-here-s--1000",
    "authorId": "804340720",
    "details": {}
  },
  {
    "authorUsername": "northfoldhq",
    "body": "We're at Finance Leaders London next week. Come say hi!",
    "kind": "post",
    "postedAt": "2026-10-10T09:00:00Z",
    "views": 12100,
    "likes": 140,
    "reposts": 21,
    "replies": 9,
    "quotes": 1,
    "isReply": false,
    "replyToHandle": null,
    "postId": "482952772",
    "permalink": "https://x.com/we-re-at-finance-leaders-london-next-wee-1001",
    "mediaUrl": "https://x.com/we-re-at-finance-leaders-london-next-wee-1001",
    "isQuote": false,
    "isPinned": false,
    "quotedPostUrl": "https://x.com/we-re-at-finance-leaders-london-next-wee-1001",
    "repostedPostUrl": "https://x.com/we-re-at-finance-leaders-london-next-wee-1001",
    "authorId": "1870987843",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=x_twitter&op=posts (sign in first).

### search

Find ACCOUNTS by keyword. A name, a topic, a bio phrase.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) |  |
| limit | no | integer (1-25) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| username | string |
| accountId | string |
| displayName | string |
| bio | string |
| location | string |
| website | string |
| avatarUrl | string |
| bannerUrl | string |
| isProtected | boolean |
| isBlueVerified | boolean |
| verifiedType | string |
| accountType | string |
| joinedAt | string |
| pinnedPostUrl | string |
| followers | integer |
| following | integer |
| postsCount | integer |
| mediaCount | integer |
| likesGiven | integer |
| canonicalUsername | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/x_twitter \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"climate scientist","limit":10}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "username": "pilates_daily",
    "displayName": "Pilates Daily",
    "bio": "One pilates tip a day.",
    "location": "Sydney",
    "isBlueVerified": false,
    "accountType": "person",
    "joinedAt": "2019-01-03",
    "followers": 41200,
    "following": 310,
    "postsCount": 2210,
    "accountId": "519961039",
    "avatarUrl": "https://img.x.com/pilates-daily.jpg",
    "bannerUrl": "https://img.x.com/pilates-daily.jpg",
    "isProtected": false,
    "pinnedPostUrl": "https://x.com/pilates-daily-1000",
    "details": {}
  },
  {
    "username": "mira_moves",
    "displayName": "Mira | Pilates",
    "bio": "Classes on YouTube, links below.",
    "location": "Mumbai",
    "isBlueVerified": true,
    "accountType": "person",
    "joinedAt": "2018-05-21",
    "followers": 96400,
    "following": 120,
    "postsCount": 4120,
    "accountId": "2620162896",
    "avatarUrl": "https://img.x.com/mira-pilates.jpg",
    "bannerUrl": "https://img.x.com/mira-pilates.jpg",
    "isProtected": false,
    "pinnedPostUrl": "https://x.com/mira-pilates-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=x_twitter&op=search (sign in first).

### searchPosts

Find POSTS by keyword. What X is saying about something. The content itself, across all authors, newest-relevant first.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) |  |
| limit | no | integer (1-50) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| postId | string |
| body | string |
| kind | string |
| postedAt | string |
| permalink | string |
| language | string |
| mediaUrl | string |
| likes | integer |
| replies | integer |
| reposts | integer |
| quotes | integer |
| views | integer |
| bookmarks | integer |
| isReply | boolean |
| isQuote | boolean |
| isPinned | boolean |
| replyToHandle | string |
| quotedPostUrl | string |
| repostedPostUrl | string |
| hashtags | list of string |
| mentions | list of string |
| authorUsername | string |
| authorId | string |
| author | object |
| conversationId | string |
| media | list of object |
| outboundLinks | list of string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/x_twitter \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchPosts","query":"electric cars","limit":25}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "authorUsername": "fintech_weekly",
    "body": "Three fintechs raised $100M+ this week. Thread 🧵",
    "kind": "post",
    "postedAt": "2026-10-15T11:00:00Z",
    "views": 210000,
    "likes": 3400,
    "reposts": 880,
    "replies": 140,
    "quotes": 96,
    "postId": "989531282",
    "permalink": "https://x.com/three-fintechs-raised-100m-this-week-thr-1000",
    "mediaUrl": "https://x.com/three-fintechs-raised-100m-this-week-thr-1000",
    "isReply": false,
    "isQuote": false,
    "isPinned": false,
    "quotedPostUrl": "https://x.com/three-fintechs-raised-100m-this-week-thr-1000",
    "repostedPostUrl": "https://x.com/three-fintechs-raised-100m-this-week-thr-1000",
    "authorId": "2124078388",
    "details": {}
  },
  {
    "authorUsername": "marcus_sells",
    "body": "Fintech funding is back, but only for revenue.",
    "kind": "post",
    "postedAt": "2026-10-14T08:20:00Z",
    "views": 41000,
    "likes": 920,
    "reposts": 110,
    "replies": 64,
    "quotes": 12,
    "postId": "2595211473",
    "permalink": "https://x.com/fintech-funding-is-back-but-only-for-rev-1001",
    "mediaUrl": "https://x.com/fintech-funding-is-back-but-only-for-rev-1001",
    "isReply": false,
    "isQuote": false,
    "isPinned": false,
    "quotedPostUrl": "https://x.com/fintech-funding-is-back-but-only-for-rev-1001",
    "repostedPostUrl": "https://x.com/fintech-funding-is-back-but-only-for-rev-1001",
    "authorId": "4058817374",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=x_twitter&op=searchPosts (sign in first).

### history (free)

The stored time series. Free, reads only what captures already wrote.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | @handles or profile URLs. |
| metric | no | enum |  Values: followers, following, posts_count. |
| days | no | integer (1-730) |  |

Request shape:

```json
{
  "op": "history",
  "subjects": [
    "example"
  ]
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=x_twitter&op=history (sign in first).

## Notes for the agent

Measured data from X. The platform formerly known as Twitter (x.com / twitter.com). One operation per call. Handles come from evidence (a pasted x.com URL, a handle you SAW, a prior answer). Never typed from a person's name. The blue badge is a paid subscription and is reported as `isBlueVerified`, never as verification. ops: profiles (batch of @handles or profile URLs; add include.posts to get each account's recent posts IN THE SAME CALL), posts (one account, deep. Likes, replies, reposts, quotes, views, bookmarks and the reply/quote lineage per post; includes the author card when held), search (find ACCOUNTS by keyword), searchPosts (find POSTS by keyword. What X is saying about something, across authors), history (stored follower/following/post-count series, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.


---

# Reddit API for agents

> API for Agents · https://apiforagents.dev/platforms/reddit · HTML twin: https://apiforagents.dev/platforms/reddit

Posts, comments, subreddits and search from Reddit, with scores and permalinks on every row.

Endpoint: `POST https://apiforagents.dev/v1/reddit`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| comments | $0.0045 |
| posts | $0.0045 |

## Operations

### posts

One user's recent submissions. Score, comment count, upvote ratio and the kind of each post.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subject | yes | string (≤400 chars) | One u/username or profile URL. |
| limit | no | integer (1-50) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| postId | string |
| author | string |
| subreddit | string |
| title | string |
| body | string |
| kind | string |
| flair | string |
| isNsfw | boolean |
| permalink | string |
| externalUrl | string |
| mediaUrl | string |
| thumbnailUrl | string |
| postedAt | string |
| editedAt | string |
| score | integer |
| upvoteRatio | number |
| commentsCount | integer |
| subredditSubscribers | integer |
| fullname | string |
| gallery | list of string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/reddit \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"posts","subject":"u/spez","limit":25}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "author": "u/quietbuilder",
    "subreddit": "r/startups",
    "title": "What we learned pricing our first B2B product",
    "kind": "text",
    "score": 1240,
    "upvoteRatio": 0.96,
    "commentsCount": 318,
    "postedAt": "2026-10-14T10:00:00Z",
    "postId": "226223522",
    "isNsfw": false,
    "permalink": "https://www.reddit.com/what-we-learned-pricing-our-first-b2b-pr-1000",
    "externalUrl": "https://www.reddit.com/what-we-learned-pricing-our-first-b2b-pr-1000",
    "mediaUrl": "https://www.reddit.com/what-we-learned-pricing-our-first-b2b-pr-1000",
    "thumbnailUrl": "https://img.reddit.com/what-we-learned-pricing-our-first-b2b-pr.jpg",
    "editedAt": "2026-10-09",
    "details": {}
  },
  {
    "author": "u/quietbuilder",
    "subreddit": "r/SaaS",
    "title": "Our churn halved after one onboarding change",
    "kind": "text",
    "score": 860,
    "upvoteRatio": 0.94,
    "commentsCount": 144,
    "postedAt": "2026-10-02T16:30:00Z",
    "postId": "220858165",
    "isNsfw": false,
    "permalink": "https://www.reddit.com/our-churn-halved-after-one-onboarding-ch-1001",
    "externalUrl": "https://www.reddit.com/our-churn-halved-after-one-onboarding-ch-1001",
    "mediaUrl": "https://www.reddit.com/our-churn-halved-after-one-onboarding-ch-1001",
    "thumbnailUrl": "https://img.reddit.com/our-churn-halved-after-one-onboarding-ch.jpg",
    "editedAt": "2026-10-12",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=reddit&op=posts (sign in first).

### subreddit

A subreddit's listing under one sort. `postedWithin` applies to `top` only. Reddit ignores it for every other sort.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subject | yes | string (≤400 chars) | One r/name or subreddit URL. |
| sort | no | enum |  Values: hot, newest, top, rising. |
| postedWithin | no | enum |  Values: 1h, 1d, 7d, 30d, 1y, any. |
| limit | no | integer (1-50) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| postId | string |
| author | string |
| subreddit | string |
| title | string |
| body | string |
| kind | string |
| flair | string |
| isNsfw | boolean |
| permalink | string |
| externalUrl | string |
| mediaUrl | string |
| thumbnailUrl | string |
| postedAt | string |
| editedAt | string |
| score | integer |
| upvoteRatio | number |
| commentsCount | integer |
| subredditSubscribers | integer |
| fullname | string |
| gallery | list of string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/reddit \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"subreddit","subject":"r/technology","sort":"top","postedWithin":"7d","limit":25}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "author": "u/brew_nerd",
    "subreddit": "r/coffee",
    "title": "Best grinder under $200 in 2026?",
    "kind": "text",
    "flair": "Gear",
    "score": 286,
    "upvoteRatio": 0.97,
    "commentsCount": 241,
    "postedAt": "2026-10-11T09:00:00Z",
    "subredditSubscribers": 2410000,
    "postId": "2117003186",
    "isNsfw": false,
    "permalink": "https://www.reddit.com/best-grinder-under-200-in-2026-1000",
    "externalUrl": "https://www.reddit.com/best-grinder-under-200-in-2026-1000",
    "mediaUrl": "https://www.reddit.com/best-grinder-under-200-in-2026-1000",
    "thumbnailUrl": "https://img.reddit.com/best-grinder-under-200-in-2026.jpg",
    "editedAt": "2026-10-09",
    "details": {}
  },
  {
    "author": "u/latteart_lou",
    "subreddit": "r/coffee",
    "title": "My first decent heart after 3 months!",
    "kind": "image",
    "flair": "Latte art",
    "score": 1920,
    "upvoteRatio": 0.98,
    "commentsCount": 96,
    "postedAt": "2026-10-10T18:40:00Z",
    "subredditSubscribers": 2410000,
    "postId": "4131271503",
    "isNsfw": false,
    "permalink": "https://www.reddit.com/my-first-decent-heart-after-3-months-1001",
    "externalUrl": "https://www.reddit.com/my-first-decent-heart-after-3-months-1001",
    "mediaUrl": "https://www.reddit.com/my-first-decent-heart-after-3-months-1001",
    "thumbnailUrl": "https://img.reddit.com/my-first-decent-heart-after-3-months.jpg",
    "editedAt": "2026-10-11",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=reddit&op=subreddit (sign in first).

### comments

Top comments on up to ten POSTS, by permalink or bare post id. Commenters are free text. Not corpus members.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Post permalinks or bare post ids. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| commentId | string |
| parentId | string |
| author | string |
| body | string |
| score | integer |
| depth | integer |
| postedAt | string |
| isOp | boolean |
| permalink | string |
| parentFullname | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/reddit \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"comments","subjects":["https://www.reddit.com/r/technology/comments/<post-id>/"],"limit":50}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "author": "u/kai_dev",
    "body": "Charge more than feels comfortable. Then talk to every churned user.",
    "score": 412,
    "depth": 0,
    "isOp": false,
    "postedAt": "2026-10-14T10:30:00Z",
    "commentId": "2387243326",
    "parentId": "4795852",
    "permalink": "https://www.reddit.com/u-kai-dev-1000",
    "details": {}
  },
  {
    "author": "u/quietbuilder",
    "body": "This. We doubled price and lost only 4% of signups.",
    "score": 128,
    "depth": 1,
    "isOp": true,
    "postedAt": "2026-10-14T10:52:00Z",
    "commentId": "2972310197",
    "parentId": "2461267070",
    "permalink": "https://www.reddit.com/u-quietbuilder-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=reddit&op=comments (sign in first).

### search

Posts across all of Reddit matching a keyword. What Reddit is saying about something. `postedWithin` applies to `top` only.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) |  |
| sort | no | enum |  Values: relevance, hot, top, newest, most_commented. |
| postedWithin | no | enum |  Values: 1h, 1d, 7d, 30d, 1y, any. |
| limit | no | integer (1-50) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| postId | string |
| author | string |
| subreddit | string |
| title | string |
| body | string |
| kind | string |
| flair | string |
| isNsfw | boolean |
| permalink | string |
| externalUrl | string |
| mediaUrl | string |
| thumbnailUrl | string |
| postedAt | string |
| editedAt | string |
| score | integer |
| upvoteRatio | number |
| commentsCount | integer |
| subredditSubscribers | integer |
| fullname | string |
| gallery | list of string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/reddit \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"electric cars","sort":"top","postedWithin":"30d","limit":25}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "author": "u/dataops_dan",
    "subreddit": "r/dataengineering",
    "title": "dbt vs plain SQL for a 3-person team?",
    "kind": "text",
    "score": 412,
    "upvoteRatio": 0.93,
    "commentsCount": 187,
    "postedAt": "2026-10-12T14:00:00Z",
    "postId": "482552129",
    "isNsfw": false,
    "permalink": "https://www.reddit.com/dbt-vs-plain-sql-for-a-3-person-team-1000",
    "externalUrl": "https://www.reddit.com/dbt-vs-plain-sql-for-a-3-person-team-1000",
    "mediaUrl": "https://www.reddit.com/dbt-vs-plain-sql-for-a-3-person-team-1000",
    "thumbnailUrl": "https://img.reddit.com/dbt-vs-plain-sql-for-a-3-person-team.jpg",
    "editedAt": "2026-10-14",
    "details": {}
  },
  {
    "author": "u/sofia_codes",
    "subreddit": "r/analytics",
    "title": "Is dbt worth it for small data?",
    "kind": "text",
    "score": 198,
    "upvoteRatio": 0.9,
    "commentsCount": 76,
    "postedAt": "2026-10-08T11:20:00Z",
    "postId": "3942850405",
    "isNsfw": false,
    "permalink": "https://www.reddit.com/is-dbt-worth-it-for-small-data-1001",
    "externalUrl": "https://www.reddit.com/is-dbt-worth-it-for-small-data-1001",
    "mediaUrl": "https://www.reddit.com/is-dbt-worth-it-for-small-data-1001",
    "thumbnailUrl": "https://img.reddit.com/is-dbt-worth-it-for-small-data.jpg",
    "editedAt": "2026-10-07",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=reddit&op=search (sign in first).

### history (free)

The stored score / comment-count series of up to ten posts. Free, reads only what captures already wrote.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Post permalinks or bare post ids. |
| metric | no | enum |  Values: score, comments_count. |
| days | no | integer (1-730) |  |

Request shape:

```json
{
  "op": "history",
  "subjects": [
    "example"
  ]
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=reddit&op=history (sign in first).

## Notes for the agent

Measured Reddit data, one operation per call. The POST is the entity: score, upvote ratio, comment count, kind and permalink on every row. There is no profile card. Reddit publishes none we can measure. ops: posts (one user's recent submissions. U/name or a profile URL), subreddit (a subreddit's listing under one sort: hot | newest | top | rising; `postedWithin` applies to top only), comments (top comments on up to ten posts, by permalink or bare id), search (posts across Reddit matching a keyword. What Reddit is saying about something; sorts relevance | hot | top | newest | most_commented), history (stored score / comment-count series of posts already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.


---

# TikTok API for agents

> API for Agents · https://apiforagents.dev/platforms/tiktok · HTML twin: https://apiforagents.dev/platforms/tiktok

Creators, videos, comments, followers, search and shop listings from TikTok.

Endpoint: `POST https://apiforagents.dev/v1/tiktok`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| comments | $0.00045 |
| followers | $0.0009 |
| posts | $0.0018 |
| profiles | $0.0022 |
| shop | $0.013 |

## Operations

### profiles

Profile cards for up to ten accounts by @handle or profile URL. Followers, following, total likes, video count, bio, verification.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | @handles or profile URLs. |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| handle | string |
| tiktokId | string |
| displayName | string |
| profileUrl | string |
| avatar | string |
| bio | string |
| bioLink | string |
| verified | boolean |
| private | boolean |
| businessAccount | boolean |
| businessCategory | string |
| tiktokSeller | boolean |
| followers | integer |
| following | integer |
| totalLikes | integer |
| likesGiven | integer |
| videos | integer |
| mutualFollows | integer |
| accountCreated | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/tiktok \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profiles","subjects":["@nba","@natgeo"]}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "handle": "@mira.moves",
    "displayName": "Mira | Pilates",
    "bio": "New class every Monday 🧘",
    "verified": true,
    "businessAccount": true,
    "businessCategory": "Fitness",
    "followers": 1240000,
    "following": 312,
    "totalLikes": 41200000,
    "videos": 642,
    "tiktokId": "2692099489",
    "profileUrl": "https://www.tiktok.com/mira-pilates-1000",
    "bioLink": "https://www.tiktok.com/mira-pilates-1000",
    "accountCreated": "2026-10-07",
    "details": {}
  },
  {
    "handle": "@cookwithkai",
    "displayName": "Cook with Kai",
    "bio": "Dinner in 30 minutes or less",
    "verified": true,
    "businessAccount": false,
    "businessCategory": null,
    "followers": 860000,
    "following": 190,
    "totalLikes": 22100000,
    "videos": 418,
    "tiktokId": "3614854177",
    "profileUrl": "https://www.tiktok.com/cook-with-kai-1001",
    "bioLink": "https://www.tiktok.com/cook-with-kai-1001",
    "accountCreated": "2026-10-01",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=tiktok&op=profiles (sign in first).

### posts

One account's recent posts. Views, likes, comments, shares, saves, sound, hashtags, duration; includes the author card when held.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subject | yes | string (≤400 chars) | One @handle or profile URL. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| postId | string |
| postUrl | string |
| authorHandle | string |
| caption | string |
| postedDate | string |
| views | integer |
| likes | integer |
| comments | integer |
| shares | integer |
| saves | integer |
| durationS | integer |
| language | string |
| isSlideshow | boolean |
| isSponsored | boolean |
| isAd | boolean |
| hashtags | list of string |
| mentions | list of string |
| sound | any |
| location | string |
| locationAddress | string |
| country | string |
| thumbnail | string |
| resolution | string |
| effects | list of string |
| slideshowImages | any |
| hashtagViews | integer |
| sourceQuery | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/tiktok \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"posts","subject":"@nba","limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "authorHandle": "@mira.moves",
    "caption": "60-second core burner #pilates",
    "postedDate": "2026-10-14",
    "views": 2410000,
    "likes": 312000,
    "comments": 2100,
    "shares": 14200,
    "saves": 88000,
    "durationS": 60,
    "hashtags": [
      "pilates",
      "core"
    ],
    "postId": "18940392",
    "postUrl": "https://www.tiktok.com/60-second-core-burner-pilates-1000",
    "isSlideshow": false,
    "isSponsored": false,
    "isAd": false,
    "details": {}
  },
  {
    "authorHandle": "@mira.moves",
    "caption": "Pilates for back pain, gentle version",
    "postedDate": "2026-10-11",
    "views": 980000,
    "likes": 104000,
    "comments": 1320,
    "shares": 9100,
    "saves": 61000,
    "durationS": 74,
    "hashtags": [
      "pilates",
      "backpain"
    ],
    "postId": "835950238",
    "postUrl": "https://www.tiktok.com/pilates-for-back-pain-gentle-version-1001",
    "isSlideshow": false,
    "isSponsored": false,
    "isAd": false,
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=tiktok&op=posts (sign in first).

### videos

Full cards for up to ten posts by video or photo URL.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Video or photo URLs. |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| postId | string |
| postUrl | string |
| authorHandle | string |
| caption | string |
| postedDate | string |
| views | integer |
| likes | integer |
| comments | integer |
| shares | integer |
| saves | integer |
| durationS | integer |
| language | string |
| isSlideshow | boolean |
| isSponsored | boolean |
| isAd | boolean |
| hashtags | list of string |
| mentions | list of string |
| sound | any |
| location | string |
| locationAddress | string |
| country | string |
| thumbnail | string |
| resolution | string |
| effects | list of string |
| slideshowImages | any |
| hashtagViews | integer |
| sourceQuery | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/tiktok \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"videos","subjects":["https://www.tiktok.com/@nba/video/<video-id>"]}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "authorHandle": "@cookwithkai",
    "caption": "Crispy rice in 5 minutes",
    "postedDate": "2026-10-12",
    "views": 1180000,
    "likes": 140000,
    "comments": 980,
    "shares": 8600,
    "saves": 52000,
    "durationS": 35,
    "hashtags": [
      "easyrecipes"
    ],
    "postId": "2158438716",
    "postUrl": "https://www.tiktok.com/crispy-rice-in-5-minutes-1000",
    "isSlideshow": false,
    "isSponsored": false,
    "isAd": false,
    "details": {}
  },
  {
    "authorHandle": "@cookwithkai",
    "caption": "One-pan laksa",
    "postedDate": "2026-10-09",
    "views": 640000,
    "likes": 71000,
    "comments": 520,
    "shares": 4100,
    "saves": 33000,
    "durationS": 58,
    "hashtags": [
      "laksa"
    ],
    "postId": "55945509",
    "postUrl": "https://www.tiktok.com/one-pan-laksa-1001",
    "isSlideshow": false,
    "isSponsored": false,
    "isAd": false,
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=tiktok&op=videos (sign in first).

### searchPosts

Posts by keyword, by hashtag, or by sound URL. Exactly one.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | no | string (≤300 chars) |  |
| hashtag | no | string (≤150 chars) |  |
| soundUrl | no | string (≤400 chars) | A TikTok sound page URL (tiktok.com/music/…): posts made with that sound. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| postId | string |
| postUrl | string |
| authorHandle | string |
| caption | string |
| postedDate | string |
| views | integer |
| likes | integer |
| comments | integer |
| shares | integer |
| saves | integer |
| durationS | integer |
| language | string |
| isSlideshow | boolean |
| isSponsored | boolean |
| isAd | boolean |
| hashtags | list of string |
| mentions | list of string |
| sound | any |
| location | string |
| locationAddress | string |
| country | string |
| thumbnail | string |
| resolution | string |
| effects | list of string |
| slideshowImages | any |
| hashtagViews | integer |
| sourceQuery | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/tiktok \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchPosts","hashtag":"booktok","limit":25}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "authorHandle": "@homebarista",
    "caption": "Espresso at home for under $300 #coffee",
    "postedDate": "2026-10-13",
    "views": 3100000,
    "likes": 402000,
    "comments": 5200,
    "shares": 31000,
    "saves": 140000,
    "durationS": 64,
    "hashtags": [
      "coffee",
      "espresso"
    ],
    "postId": "1544575846",
    "postUrl": "https://www.tiktok.com/espresso-at-home-for-under-300-coffee-1000",
    "isSlideshow": false,
    "isSponsored": false,
    "isAd": false,
    "details": {}
  },
  {
    "authorHandle": "@latteart.lou",
    "caption": "Rosetta in slow motion #coffee",
    "postedDate": "2026-10-12",
    "views": 880000,
    "likes": 96000,
    "comments": 1100,
    "shares": 4200,
    "saves": 19000,
    "durationS": 18,
    "hashtags": [
      "coffee",
      "latteart"
    ],
    "postId": "113019651",
    "postUrl": "https://www.tiktok.com/rosetta-in-slow-motion-coffee-1001",
    "isSlideshow": false,
    "isSponsored": false,
    "isAd": false,
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=tiktok&op=searchPosts (sign in first).

### search

Find accounts by keyword. Every hit a full profile card.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) |  |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| handle | string |
| tiktokId | string |
| displayName | string |
| profileUrl | string |
| avatar | string |
| bio | string |
| bioLink | string |
| verified | boolean |
| private | boolean |
| businessAccount | boolean |
| businessCategory | string |
| tiktokSeller | boolean |
| followers | integer |
| following | integer |
| totalLikes | integer |
| likesGiven | integer |
| videos | integer |
| mutualFollows | integer |
| accountCreated | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/tiktok \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"home cooking","limit":10}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "handle": "@latteart.lou",
    "displayName": "Lou | Latte Art",
    "bio": "Pouring hearts daily",
    "verified": false,
    "followers": 312000,
    "following": 140,
    "totalLikes": 8400000,
    "videos": 520,
    "businessAccount": null,
    "tiktokId": "673577550",
    "profileUrl": "https://www.tiktok.com/lou-latte-art-1000",
    "bioLink": "https://www.tiktok.com/lou-latte-art-1000",
    "accountCreated": "2026-10-04",
    "details": {}
  },
  {
    "handle": "@brewlab",
    "displayName": "Brewlab Coffee",
    "bio": "Coffee nerds from Austin",
    "verified": false,
    "followers": 52100,
    "following": 88,
    "totalLikes": 610000,
    "videos": 214,
    "businessAccount": true,
    "tiktokId": "994794249",
    "profileUrl": "https://www.tiktok.com/brewlab-coffee-1001",
    "bioLink": "https://www.tiktok.com/brewlab-coffee-1001",
    "accountCreated": "2026-10-02",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=tiktok&op=search (sign in first).

### comments

Top-level comments on up to ten posts by URL.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Video or photo URLs. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| commentId | string |
| comment | string |
| likes | integer |
| replies | integer |
| postedDate | string |
| commenter | string |
| commenterId | string |
| commenterUrl | string |
| commenterAvatar | string |
| pinnedByCreator | boolean |
| likedByCreator | boolean |
| mentions | list of string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/tiktok \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"comments","subjects":["https://www.tiktok.com/@nba/video/<video-id>"],"limit":50}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "commenter": "@ravi.k",
    "comment": "Doing this every morning now",
    "likes": 2140,
    "replies": 12,
    "postedDate": "2026-10-14",
    "pinnedByCreator": false,
    "likedByCreator": true,
    "commentId": "4152526865",
    "commenterId": "1659980969",
    "commenterUrl": "https://www.tiktok.com/ravi-k-1000",
    "details": {}
  },
  {
    "commenter": "@lena_m",
    "comment": "Song name?",
    "likes": 980,
    "replies": 41,
    "postedDate": "2026-10-14",
    "pinnedByCreator": false,
    "likedByCreator": false,
    "commentId": "2242419321",
    "commenterId": "3716159273",
    "commenterUrl": "https://www.tiktok.com/lena-m-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=tiktok&op=comments (sign in first).

### followers

The followers OR following of up to five accounts, each row a full profile.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-5 items) | @handles or profile URLs. |
| direction | no | enum |  Values: followers, following. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| handle | string |
| userId | string |
| displayName | string |
| profileUrl | string |
| avatar | string |
| bio | string |
| verified | boolean |
| private | boolean |
| followers | integer |
| following | integer |
| videos | integer |
| totalLikes | integer |
| tiktokSeller | boolean |
| connectionType | string |
| connectedAccount | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/tiktok \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"followers","subjects":["@nba"],"direction":"following","limit":50}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "handle": "@ravi.k",
    "displayName": "Ravi",
    "followers": 412,
    "following": 830,
    "videos": 12,
    "connectionType": "follower",
    "userId": "4157080663",
    "profileUrl": "https://www.tiktok.com/ravi-1000",
    "details": {}
  },
  {
    "handle": "@lena_m",
    "displayName": "Lena",
    "followers": 2100,
    "following": 410,
    "videos": 58,
    "connectionType": "follower",
    "userId": "4017953218",
    "profileUrl": "https://www.tiktok.com/lena-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=tiktok&op=followers (sign in first).

### shop

TikTok Shop products for a keyword. Price, discount, rating, sold count, seller, every variant with its stock.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) |  |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| productId | string |
| productUrl | string |
| title | string |
| description | string |
| salePrice | number |
| originalPrice | number |
| discount | string |
| currency | string |
| rating | number |
| reviewCount | integer |
| soldCount | integer |
| seller | any |
| image | string |
| labels | list of string |
| variants | any |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/tiktok \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"shop","query":"resistance bands","limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "title": "Resistance bands set (5)",
    "seller": "Mira Moves Shop",
    "salePrice": 19.99,
    "originalPrice": 29.99,
    "discount": "33%",
    "currency": "USD",
    "rating": 4.7,
    "reviewCount": 2310,
    "soldCount": 12400,
    "productId": "279510755",
    "productUrl": "https://www.tiktok.com/resistance-bands-set-5-1000",
    "details": {}
  },
  {
    "title": "Non-slip yoga mat",
    "seller": "Mira Moves Shop",
    "salePrice": 34,
    "originalPrice": 45,
    "discount": "24%",
    "currency": "USD",
    "rating": 4.8,
    "reviewCount": 1450,
    "soldCount": 8800,
    "productId": "2036470454",
    "productUrl": "https://www.tiktok.com/non-slip-yoga-mat-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=tiktok&op=shop (sign in first).

### history (free)

Stored follower/likes/video-count series of profiles already held. Free.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) |  |
| metric | no | enum |  Values: followers, following, total_likes, videos. |
| days | no | integer (1-730) |  |

Request shape:

```json
{
  "op": "history",
  "subjects": [
    "example"
  ]
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=tiktok&op=history (sign in first).

## Notes for the agent

Measured TikTok data, one operation per call. Handles come from evidence (a pasted tiktok.com/@ URL, a handle you SAW, a prior answer). Never typed from a person's name. ops: profiles (cards for up to ten accounts. Followers, following, total likes, video count, bio, verification, business/seller flags), posts (one account's recent posts. Views, likes, comments, shares, saves, sound, hashtags, duration), videos (full cards for up to ten posts by URL), searchPosts (posts by keyword OR hashtag OR sound URL), search (find accounts by keyword), comments (top-level comments on up to ten posts), followers (the followers OR following of up to five accounts, each a full profile), shop (TikTok Shop products for a keyword. Price, discount, rating, sold count, seller, variants with stock), history (stored follower/likes/video series, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.


---

# Facebook API for agents

> API for Agents · https://apiforagents.dev/platforms/facebook · HTML twin: https://apiforagents.dev/platforms/facebook

Pages, posts, reels, comments, reviews, ads, events and marketplace listings from Facebook.

Endpoint: `POST https://apiforagents.dev/v1/facebook`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| comments | $0.0022 |
| reviews | $0.0022 |
| ads | $0.0045 |
| posts | $0.0045 |
| reels | $0.0045 |
| followers | $0.0067 |
| events | $0.009 |
| marketplace | $0.009 |
| pages | $0.009 |

## Operations

### pages

Page cards for up to ten pages by URL or handle. Followers, likes, talking-about, reviews and recommend %, category, contact, hours, ads status, social links.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Page URLs or vanity handles. |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| pageKey | string |
| pageId | string |
| pageUrl | string |
| pageName | string |
| username | string |
| category | string |
| intro | string |
| followers | integer |
| likes | integer |
| following | integer |
| talkingAbout | integer |
| wereHere | integer |
| reviewCount | integer |
| recommendPercent | number |
| phone | string |
| email | string |
| website | string |
| otherWebsites | list of string |
| address | string |
| addressMapUrl | string |
| businessHours | any |
| priceRange | string |
| services | string |
| profilePictureUrl | string |
| coverPhotoUrl | string |
| pageCreated | string |
| confirmedOwner | string |
| runningAds | boolean |
| adLibraryId | string |
| socialLinks | any |
| personalProfile | boolean |
| profilePhotoLink | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"pages","subjects":["nike","natgeo"]}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "pageName": "Brewlab Coffee",
    "username": "brewlabcoffee",
    "category": "Coffee shop",
    "followers": 21400,
    "likes": 19800,
    "recommendPercent": 96,
    "reviewCount": 412,
    "phone": "+1 512-555-0142",
    "website": "https://brewlab.example",
    "address": "210 Congress Ave, Austin, TX",
    "runningAds": true,
    "pageKey": "brewlab-coffee",
    "pageId": "2264557836",
    "pageUrl": "https://www.facebook.com/brewlab-coffee-1000",
    "addressMapUrl": "https://www.facebook.com/brewlab-coffee-1000",
    "profilePictureUrl": "https://img.facebook.com/brewlab-coffee.jpg",
    "coverPhotoUrl": "https://img.facebook.com/brewlab-coffee.jpg",
    "pageCreated": "2026-10-04",
    "adLibraryId": "1810680602",
    "profilePhotoLink": "https://img.facebook.com/brewlab-coffee.jpg",
    "details": {}
  },
  {
    "pageName": "Northfold",
    "username": "northfoldhq",
    "category": "Software company",
    "followers": 8400,
    "likes": 7900,
    "recommendPercent": null,
    "reviewCount": 0,
    "phone": null,
    "website": "https://northfold.example",
    "address": "London, United Kingdom",
    "runningAds": true,
    "pageKey": "northfold",
    "pageId": "4116075838",
    "pageUrl": "https://www.facebook.com/northfold-1001",
    "addressMapUrl": "https://www.facebook.com/northfold-1001",
    "profilePictureUrl": "https://img.facebook.com/northfold.jpg",
    "coverPhotoUrl": "https://img.facebook.com/northfold.jpg",
    "pageCreated": "2026-10-13",
    "adLibraryId": "3667530691",
    "profilePhotoLink": "https://img.facebook.com/northfold.jpg",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=facebook&op=pages (sign in first).

### posts

Recent posts of a page, profile or group. Text, reactions by type, comments, shares, views, media, mentions, top comments.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subject | yes | string (≤400 chars) | One page, profile or group URL or handle. |
| since | no | string (YYYY-MM-DD) |  |
| until | no | string (YYYY-MM-DD) |  |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| postUrl | string |
| postId | string |
| authorKey | string |
| author | any |
| text | string |
| postedAt | string |
| contentType | string |
| reactions | integer |
| reactionBreakdown | any |
| comments | integer |
| shares | integer |
| views | integer |
| media | any |
| videoDuration | string |
| hashtags | list of string |
| mentions | list of string |
| linkPreview | any |
| source | any |
| topComments | any |
| collaborators | any |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"posts","subject":"nike","since":"2026-10-01","limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "author": "Brewlab Coffee",
    "text": "New autumn menu is here 🍂",
    "postedAt": "2026-10-14T15:00:00Z",
    "contentType": "photo",
    "reactions": 1240,
    "comments": 86,
    "shares": 41,
    "views": null,
    "postUrl": "https://www.facebook.com/brewlab-coffee-1000",
    "postId": "3422847386",
    "authorKey": "3628227038",
    "details": {}
  },
  {
    "author": "Brewlab Coffee",
    "text": "Latte art night on the 24th, free entry.",
    "postedAt": "2026-10-10T18:00:00Z",
    "contentType": "event",
    "reactions": 610,
    "comments": 44,
    "shares": 58,
    "views": null,
    "postUrl": "https://www.facebook.com/brewlab-coffee-1001",
    "postId": "3041163862",
    "authorKey": "1879076958",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=facebook&op=posts (sign in first).

### reels

Recent reels of a page. Plays, audio, duration, video links.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subject | yes | string (≤400 chars) | One page URL or handle. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| reelId | string |
| reelUrl | string |
| plays | integer |
| playsLabel | string |
| publishedAt | string |
| durationSec | number |
| audioTitle | string |
| audioArtist | string |
| audioTrack | string |
| audioTrackId | string |
| audioType | string |
| audioMuted | boolean |
| remixable | boolean |
| videoUrl | string |
| thumbnailUrl | string |
| dimensions | string |
| captionLanguages | list of string |
| dubbedAudioLanguages | list of string |
| captionsFileUrl | string |
| page | any |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reels","subject":"natgeo","limit":10}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "plays": 184000,
    "playsLabel": "184K",
    "durationSec": 22,
    "audioTitle": "Original audio",
    "audioArtist": "Brewlab Coffee",
    "publishedAt": "2026-10-13",
    "remixable": true,
    "reelId": "2312965674",
    "reelUrl": "https://www.facebook.com/item-1000",
    "audioTrackId": "256678523",
    "videoUrl": "https://www.facebook.com/item-1000",
    "thumbnailUrl": "https://img.facebook.com/item.jpg",
    "captionsFileUrl": "https://www.facebook.com/item-1000",
    "details": {}
  },
  {
    "plays": 96000,
    "playsLabel": "96K",
    "durationSec": 31,
    "audioTitle": "Autumn Lo-fi",
    "audioArtist": "Sundays",
    "publishedAt": "2026-10-09",
    "remixable": true,
    "reelId": "3547752111",
    "reelUrl": "https://www.facebook.com/item-1001",
    "audioTrackId": "546944639",
    "videoUrl": "https://www.facebook.com/item-1001",
    "thumbnailUrl": "https://img.facebook.com/item.jpg",
    "captionsFileUrl": "https://www.facebook.com/item-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=facebook&op=reels (sign in first).

### comments

Comments on up to five posts, reels or photos by permalink.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-5 items) | Post, reel or photo permalinks. |
| includeReplies | no | boolean | false: top-level comments only; true (default) also returns the replies nested under them. |
| sort | no | enum | top = Facebook's "most relevant"; threaded = all comments in thread order. Values: top, threaded, newest. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| commentUrl | string |
| commentText | string |
| commenter | string |
| commenterId | string |
| commenterUrl | string |
| commenterPicture | string |
| likes | integer |
| replies | integer |
| replyDepth | integer |
| isReply | boolean |
| replyingTo | string |
| threadRootAuthor | string |
| commentDate | string |
| commentMediaType | string |
| commentMediaUrl | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"comments","subjects":["https://www.facebook.com/nike/posts/<post-id>"],"sort":"top","limit":50}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "commenter": "Ravi Kumar",
    "commentText": "Can't wait to try the pumpkin latte!",
    "likes": 24,
    "replies": 2,
    "commentDate": "2026-10-14",
    "isReply": false,
    "replyDepth": 0,
    "replyingTo": null,
    "commentUrl": "https://www.facebook.com/ravi-kumar-1000",
    "commenterId": "1050942139",
    "commenterUrl": "https://www.facebook.com/ravi-kumar-1000",
    "commentMediaUrl": "https://www.facebook.com/ravi-kumar-1000",
    "details": {}
  },
  {
    "commenter": "Lena Müller",
    "commentText": "Are you open on Sunday?",
    "likes": 6,
    "replies": 1,
    "commentDate": "2026-10-14",
    "isReply": false,
    "replyDepth": 0,
    "replyingTo": null,
    "commentUrl": "https://www.facebook.com/lena-m-ller-1001",
    "commenterId": "455822143",
    "commenterUrl": "https://www.facebook.com/lena-m-ller-1001",
    "commentMediaUrl": "https://www.facebook.com/lena-m-ller-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=facebook&op=comments (sign in first).

### reviews

Reviews/recommendations on up to five pages.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-5 items) | Page URLs or vanity handles. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| reviewId | string |
| reviewUrl | string |
| reviewText | string |
| recommended | boolean |
| reviewDate | string |
| reviewerName | string |
| reviewerAvatar | string |
| reviewerProfileUrl | string |
| likes | integer |
| commentCount | integer |
| photos | list of string |
| tags | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reviews","subjects":["starbucks"],"limit":25}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "reviewerName": "Hannah Wright",
    "recommended": true,
    "reviewText": "Friendly staff and great coffee.",
    "reviewDate": "2026-10-11",
    "likes": 3,
    "commentCount": 0,
    "reviewId": "309363717",
    "reviewUrl": "https://www.facebook.com/hannah-wright-1000",
    "reviewerProfileUrl": "https://www.facebook.com/hannah-wright-1000",
    "photos": [
      "https://img.facebook.com/hannah-wright.jpg"
    ],
    "details": {}
  },
  {
    "reviewerName": "Arjun Shah",
    "recommended": true,
    "reviewText": "My favourite spot to work from.",
    "reviewDate": "2026-10-02",
    "likes": 1,
    "commentCount": 1,
    "reviewId": "3649534047",
    "reviewUrl": "https://www.facebook.com/arjun-shah-1001",
    "reviewerProfileUrl": "https://www.facebook.com/arjun-shah-1001",
    "photos": [
      "https://img.facebook.com/arjun-shah.jpg"
    ],
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=facebook&op=reviews (sign in first).

### followers

The followers OR following of up to three pages. Name, profile URL, bio. The dearest rows in the catalogue.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-3 items) | Page URLs or vanity handles. |
| direction | no | enum |  Values: followers, following. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| profileId | string |
| followerName | string |
| profileUrl | string |
| avatarUrl | string |
| bio | string |
| relationship | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"followers","subjects":["natgeo"],"direction":"following","limit":25}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "followerName": "Ravi Kumar",
    "bio": "Coffee and cycling",
    "relationship": "follower",
    "profileId": "624155740",
    "profileUrl": "https://www.facebook.com/ravi-kumar-1000",
    "avatarUrl": "https://img.facebook.com/ravi-kumar.jpg",
    "details": {}
  },
  {
    "followerName": "Lena Müller",
    "bio": "Designer in Austin",
    "relationship": "follower",
    "profileId": "3527258922",
    "profileUrl": "https://www.facebook.com/lena-m-ller-1001",
    "avatarUrl": "https://img.facebook.com/lena-m-ller.jpg",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=facebook&op=followers (sign in first).

### ads

Every ad a page runs in Meta's Ad Library. Creative, headline, CTA, link, dates, platforms, advertiser and EU reach.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-5 items) | Page URLs or vanity handles. |
| status | no | enum | "active": ads running now; "inactive": ads that have stopped. Values: active, inactive. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| libraryId | string |
| adUrl | string |
| pageUrl | string |
| advertiser | any |
| isActive | boolean |
| startDate | string |
| endDate | string |
| daysActive | integer |
| headline | string |
| bodyText | string |
| linkDescription | string |
| ctaText | string |
| destinationUrl | string |
| mediaType | string |
| mediaUrl | string |
| format | string |
| variantCount | integer |
| platforms | list of string |
| euReach | integer |
| reachBreakdown | any |
| cards | any |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"ads","subjects":["nike"],"status":"active","limit":25}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "advertiser": "Brewlab Coffee",
    "isActive": true,
    "startDate": "2026-10-01",
    "daysActive": 15,
    "headline": "20% off your first bag",
    "bodyText": "Small-batch beans, roasted every Monday.",
    "ctaText": "Shop now",
    "mediaType": "video",
    "format": "single",
    "variantCount": 2,
    "platforms": [
      "facebook",
      "instagram"
    ],
    "endDate": "2026-10-02",
    "libraryId": "2282493876",
    "adUrl": "https://www.facebook.com/item-1000",
    "pageUrl": "https://www.facebook.com/item-1000",
    "destinationUrl": "https://www.facebook.com/item-1000",
    "mediaUrl": "https://www.facebook.com/item-1000",
    "details": {}
  },
  {
    "advertiser": "Brewlab Coffee",
    "isActive": true,
    "startDate": "2026-09-20",
    "daysActive": 26,
    "headline": "Try the autumn menu",
    "bodyText": "Pumpkin spice, done right.",
    "ctaText": "Get directions",
    "mediaType": "image",
    "format": "single",
    "variantCount": 1,
    "platforms": [
      "facebook"
    ],
    "endDate": "2026-10-06",
    "libraryId": "1516528853",
    "adUrl": "https://www.facebook.com/item-1001",
    "pageUrl": "https://www.facebook.com/item-1001",
    "destinationUrl": "https://www.facebook.com/item-1001",
    "mediaUrl": "https://www.facebook.com/item-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=facebook&op=ads (sign in first).

### events

Events by keyword. Name, date, venue, host, going/interested, tickets.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) |  |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| eventId | string |
| eventUrl | string |
| eventName | string |
| description | string |
| dateTime | string |
| startDate | string |
| duration | string |
| frequency | string |
| occurrences | any |
| category | string |
| venueName | string |
| venueUrl | string |
| address | string |
| street | string |
| city | string |
| country | string |
| latitude | number |
| longitude | number |
| isOnline | boolean |
| isPast | boolean |
| isCanceled | boolean |
| host | string |
| hosts | any |
| going | integer |
| interested | integer |
| tickets | any |
| externalLinks | list of string |
| coverImageUrl | string |
| imageCaption | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"events","query":"jazz festival","limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "eventName": "Latte Art Night",
    "startDate": "2026-10-24",
    "duration": "3 hours",
    "category": "Food & Drink",
    "venueName": "Brewlab Coffee",
    "city": "Austin",
    "country": "US",
    "isOnline": false,
    "going": 84,
    "interested": 412,
    "eventId": "1614687254",
    "eventUrl": "https://www.facebook.com/latte-art-night-1000",
    "venueUrl": "https://www.facebook.com/latte-art-night-1000",
    "isPast": false,
    "isCanceled": false,
    "coverImageUrl": "https://img.facebook.com/latte-art-night.jpg",
    "details": {}
  },
  {
    "eventName": "Cupping: New Harvest",
    "startDate": "2026-11-07",
    "duration": "2 hours",
    "category": "Food & Drink",
    "venueName": "Brewlab Coffee",
    "city": "Austin",
    "country": "US",
    "isOnline": false,
    "going": 26,
    "interested": 190,
    "eventId": "1747196447",
    "eventUrl": "https://www.facebook.com/cupping-new-harvest-1001",
    "venueUrl": "https://www.facebook.com/cupping-new-harvest-1001",
    "isPast": false,
    "isCanceled": false,
    "coverImageUrl": "https://img.facebook.com/cupping-new-harvest.jpg",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=facebook&op=events (sign in first).

### marketplace

Marketplace listings from a category or search URL. Title, price, condition, location, attributes, photos.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subject | yes | string (≤400 chars) | A Marketplace category or search URL. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| listingId | string |
| listingUrl | string |
| listingTitle | string |
| description | string |
| price | string |
| priceValue | number |
| originalPrice | string |
| currency | string |
| condition | string |
| location | string |
| city | string |
| state | string |
| country | string |
| postalCode | string |
| latitude | number |
| longitude | number |
| listedAt | string |
| primaryPhoto | string |
| photos | any |
| videoUrl | string |
| attributes | any |
| deliveryOptions | list of string |
| mileage | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"marketplace","subject":"https://www.facebook.com/marketplace/nyc/bicycles","limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "listingTitle": "Road bike, 54 cm, barely used",
    "price": "$420",
    "priceValue": 420,
    "currency": "USD",
    "condition": "Used - like new",
    "city": "Austin",
    "state": "TX",
    "country": "US",
    "listedAt": "2026-10-14",
    "listingId": "770737849",
    "listingUrl": "https://www.facebook.com/road-bike-54-cm-barely-used-1000",
    "videoUrl": "https://www.facebook.com/road-bike-54-cm-barely-used-1000",
    "details": {}
  },
  {
    "listingTitle": "Gravel bike, 56 cm",
    "price": "$650",
    "priceValue": 650,
    "currency": "USD",
    "condition": "Used - good",
    "city": "Austin",
    "state": "TX",
    "country": "US",
    "listedAt": "2026-10-12",
    "listingId": "151623122",
    "listingUrl": "https://www.facebook.com/gravel-bike-56-cm-1001",
    "videoUrl": "https://www.facebook.com/gravel-bike-56-cm-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=facebook&op=marketplace (sign in first).

### history (free)

Stored follower/likes series of pages already held. Free.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) |  |
| metric | no | enum |  Values: followers, likes, talking_about, review_count, recommend_percent. |
| days | no | integer (1-730) |  |

Request shape:

```json
{
  "op": "history",
  "subjects": [
    "example"
  ]
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=facebook&op=history (sign in first).

## Notes for the agent

Measured Facebook data, one operation per call. Pages are named by URL or vanity handle ("nike"); posts by permalink. Handles come from evidence, never typed from a name. ops: pages (cards for up to ten pages. Followers, likes, following, talking-about, reviews and recommend %, category, contact, address, hours, price range, ads status, social links), posts (recent posts of a page, profile or group. Text, reactions by type, comments, shares, views, media, top comments; since/until), reels (a page's reels. Plays, audio, duration), comments (comments on up to five posts by permalink, replies optional; sort top/threaded/newest), reviews (a page's reviews/recommendations), followers (a page's followers OR following, each with name, profile URL and bio), ads (every ad a page runs in the Ad Library. Creative, headline, CTA, link, dates, platforms, EU reach; active or inactive), events (events by keyword. Date, venue, host, going/interested, tickets), marketplace (listings from a Marketplace category or search URL. Price, condition, location, attributes), history (stored follower/likes series of pages already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.


---

# Amazon API for agents

> API for Agents · https://apiforagents.dev/platforms/amazon · HTML twin: https://apiforagents.dev/platforms/amazon

Products, search results and reviews from any Amazon marketplace.

Endpoint: `POST https://apiforagents.dev/v1/amazon`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| reviews | $0.00045 |
| products | $0.0014 |

## Operations

### products

Full product cards for up to ten products. Price, list price, deal and Prime flags, availability, rating and count, best-sellers rank, seller, specs, images, variants. By ASIN or product URL.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | ASINs or product URLs. |
| marketplace | no | enum | The Amazon site as its domain suffix ,  "com", "in", "co.uk", "de"… A product URL carries its own and overrides this; a bare ASIN and a search use it. Prices, stock and reviews differ per site. Values: com, in, co.uk, de, fr, it, es, ca, com.au, co.jp, com.mx, com.br. |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| asin | string |
| marketplace | string |
| title | string |
| brand | string |
| productUrl | string |
| price | number |
| currency | string |
| listPrice | number |
| discount | string |
| onDeal | boolean |
| prime | boolean |
| availability | string |
| rating | number |
| ratingsCount | integer |
| reviewsCount | integer |
| ratingBreakdown | any |
| boughtPastMonth | string |
| boughtPastMonthMin | integer |
| bestSellersRank | integer |
| bsrCategory | string |
| soldBy | string |
| fulfilledBy | string |
| sellerId | string |
| usedOffer | any |
| features | list of string |
| description | string |
| categoryPath | string |
| browseNodeId | string |
| productDetails | any |
| keySpecs | any |
| bookEditions | any |
| variants | any |
| mainImage | string |
| images | list of string |
| videos | list of string |
| reviewSummary | string |
| reviewTopics | any |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/amazon \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["B0DGHMNQ5Z"],"marketplace":"com"}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "title": "Sonora Buds Pro, Wireless Noise Cancelling Earbuds",
    "brand": "Sonora",
    "price": 79,
    "currency": "USD",
    "listPrice": 99,
    "discount": "20%",
    "onDeal": true,
    "prime": true,
    "availability": "In Stock",
    "rating": 4.4,
    "ratingsCount": 2310,
    "reviewsCount": 640,
    "bestSellersRank": 412,
    "bsrCategory": "Electronics",
    "soldBy": "Sonora Store",
    "asin": "B062975243",
    "productUrl": "https://www.amazon.com/sonora-buds-pro-wireless-noise-cancellin-1000",
    "sellerId": "224336018",
    "browseNodeId": "3757554087",
    "images": [
      "https://img.amazon.com/sonora-buds-pro-wireless-noise-cancellin.jpg"
    ],
    "details": {}
  },
  {
    "title": "Brewlab Cold Brew Coffee Maker, 1.5 L",
    "brand": "Brewlab",
    "price": 34.99,
    "currency": "USD",
    "listPrice": 34.99,
    "discount": null,
    "onDeal": false,
    "prime": true,
    "availability": "In Stock",
    "rating": 4.6,
    "ratingsCount": 8120,
    "reviewsCount": 1904,
    "bestSellersRank": 58,
    "bsrCategory": "Home & Kitchen",
    "soldBy": "Brewlab",
    "asin": "B030638468",
    "productUrl": "https://www.amazon.com/brewlab-cold-brew-coffee-maker-1-5-l-1001",
    "sellerId": "4228393585",
    "browseNodeId": "4135714401",
    "images": [
      "https://img.amazon.com/brewlab-cold-brew-coffee-maker-1-5-l.jpg"
    ],
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=amazon&op=products (sign in first).

### search

Keyword search on one marketplace. Every hit is a full product card with its search rank.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) |  |
| marketplace | no | enum | The Amazon site as its domain suffix ,  "com", "in", "co.uk", "de"… A product URL carries its own and overrides this; a bare ASIN and a search use it. Prices, stock and reviews differ per site. Values: com, in, co.uk, de, fr, it, es, ca, com.au, co.jp, com.mx, com.br. |
| limit | no | integer (1-50) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| asin | string |
| marketplace | string |
| title | string |
| brand | string |
| productUrl | string |
| price | number |
| currency | string |
| listPrice | number |
| discount | string |
| onDeal | boolean |
| prime | boolean |
| availability | string |
| rating | number |
| ratingsCount | integer |
| reviewsCount | integer |
| ratingBreakdown | any |
| boughtPastMonth | string |
| boughtPastMonthMin | integer |
| bestSellersRank | integer |
| bsrCategory | string |
| soldBy | string |
| fulfilledBy | string |
| sellerId | string |
| usedOffer | any |
| features | list of string |
| description | string |
| categoryPath | string |
| browseNodeId | string |
| productDetails | any |
| keySpecs | any |
| bookEditions | any |
| variants | any |
| mainImage | string |
| images | list of string |
| videos | list of string |
| reviewSummary | string |
| reviewTopics | any |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/amazon \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"wireless earbuds","marketplace":"com","limit":10}'
```

Example response rows (real rows, business data; a live row carries every field above):

```json
[
  {
    "asin": "B0DGHMNQ5Z",
    "marketplace": "com",
    "title": "Apple AirPods 4 Wireless Earbuds",
    "brand": "Apple",
    "productUrl": "https://www.amazon.com/dp/B0DGHMNQ5Z",
    "price": 99,
    "currency": "USD",
    "listPrice": 129,
    "discount": "-23%",
    "onDeal": false,
    "prime": false,
    "availability": "In Stock",
    "rating": 4.5,
    "ratingsCount": 34347,
    "boughtPastMonth": "10K+ bought in past month",
    "boughtPastMonthMin": 10000,
    "bestSellersRank": null,
    "bsrCategory": null,
    "soldBy": "Amazon.com",
    "fulfilledBy": "Amazon.com",
    "sellerId": null,
    "usedOffer": {
      "price": 94.05,
      "soldBy": "Amazon Resale",
      "condition": "Used - Like New",
      "packageCondition": "Moderate cosmetic damage observed during inspection. Minor packaging damage observed during inspection."
    },
    "features": [
      "REBUILT FOR COMFORT - AirPods 4 have been redesigned for exceptional all-day comfort and greater stability. With a refined contour, shorter stem, and quick-press controls for music or calls.",
      "PERSONALIZED SPATIAL AUDIO - Personalized Spatial Audio with dynamic head tracking places sound all around you, creating a theater-like listening experience for music, TV shows, movies, games, and more.*",
      "IMPROVED SOUND AND CALL QUALITY - AirPods 4 feature the Apple-designed H2 chip. Voice Isolation improves the quality of phone calls in loud conditions. Using advanced computational audio, it reduces background noise while isolating and clarifying the sound of your voice for whomever you’re speaking to.*",
      "MAGICAL EXPERIENCE - Just say “Siri” or “Hey Siri” to play a song, make a call, or check your schedule.* And with Siri Interactions, now you can respond to Siri by simply nodding your head yes or shaking your head no.* Pair AirPods 4 by simply placing them near your device and tapping Connect on your screen.* Easily share a song or show between two sets of AirPods.* An optical in-ear sensor knows to play audio only when you’re wearing AirPods and pauses when you take them off. And you can track down your AirPods and Charging Case with the Find My app.*",
      "LONG BATTERY LIFE - Get up to 5 hours of listening time on a single charge. And get up to 30 hours of total listening time using the case.*",
      "REDESIGNED CASE - The Charging Case comes with USB-C charging capabilities and is more than 10 percent smaller by volume than the previous generation.*",
      "DUST, SWEAT, AND WATER RESISTANT - AirPods 4 and the Charging Case are rated IP54 dust, sweat, and water resistant, so they’ll withstand rain and heavy workouts.*",
      "LEGAL DISCLAIMERS - This is a summary of the main product features. See below to learn more."
    ],
    "description": null,
    "categoryPath": null,
    "browseNodeId": null,
    "productDetails": [
      {
        "name": "Product Dimensions",
        "value": "‎3.25 x 3.25 x 1.5 inches"
      },
      {
        "name": "Item Weight",
        "value": "‎1.6 ounces"
      },
      {
        "name": "Manufacturer",
        "value": "‎Apple"
      },
      {
        "name": "ASIN",
        "value": "‎B0DGHMNQ5Z"
      },
      {
        "name": "Item model number",
        "value": "‎MXP63LL/A"
      },
      {
        "name": "Batteries",
        "value": "‎3 Lithium Ion batteries required. (included)"
      },
      {
        "name": "Date First Available",
        "value": "‎September 9, 2024"
      },
      {
        "name": "Item Weight",
        "value": "‎1.6 ounces"
      },
      {
        "name": "Units",
        "value": "‎1 Count"
      },
      {
        "name": "Number Of Items",
        "value": "‎1"
      }
    ],
    "keySpecs": [
      {
        "name": "Brand",
        "value": "Apple"
      },
      {
        "name": "Color",
        "value": "White"
      },
      {
        "name": "Ear Placement",
        "value": "In Ear"
      },
      {
        "name": "Form Factor",
        "value": "In Ear"
      },
      {
        "name": "Noise Control",
        "value": "Sound Isolation"
      }
    ],
    "variants": [
      {
        "asin": "B0DGHMNQ5Z",
        "value": "Without Active Noise Cancellation",
        "imageUrl": null,
        "selected": true,
        "available": true,
        "dimension": "style_name"
      },
      {
        "asin": "B0DGJ7HYG1",
        "value": "With Active Noise Cancellation",
        "imageUrl": null,
        "selected": false,
        "available": true,
        "dimension": "style_name"
      },
      {
        "asin": "B0DGHMNQ5Z",
        "value": "Without AppleCare+",
        "imageUrl": null,
        "selected": true,
        "available": true,
        "dimension": "configuration"
      },
      {
        "asin": "B0DGW54P27",
        "value": "With AppleCare+ (2 Years)",
        "imageUrl": null,
        "selected": false,
        "available": true,
        "dimension": "configuration"
      }
    ],
    "mainImage": "https://m.media-amazon.com/images/I/61iBtxCUabL._AC_SL1500_.jpg",
    "images": [
      "https://m.media-amazon.com/images/I/61iBtxCUabL._AC_SL1500_.jpg",
      "https://m.media-amazon.com/images/I/51ppBwqC4xL._AC_SL1500_.jpg",
      "https://m.media-amazon.com/images/I/71c1ABI5GAL._AC_SL1500_.jpg",
      "https://m.media-amazon.com/images/I/61E7pA3mgcL._AC_SL1500_.jpg",
      "https://m.media-amazon.com/images/I/715J6Hx8xyL._AC_SL1500_.jpg",
      "https://m.media-amazon.com/images/I/61l+yD0pXXL._AC_SL1500_.jpg"
    ],
    "videos": [
      "https://m.media-amazon.com/images/S/vse-vms-transcoding-artifact-us-east-1-prod/6c3055e8-b5b0-47ef-b4e7-41434b936140/default.jobtemplate.hls.m3u8",
      "https://m.media-amazon.com/images/S/vse-vms-transcoding-artifact-us-east-1-prod/5f412838-9f13-4205-b380-ff69c70948bb/default.jobtemplate.hls.m3u8"
    ],
    "reviewSummary": "Customers find these wireless earbuds to be well-made and appreciate their sound quality, describing them as loud and clear. The fit receives mixed feedback - while some say they fit comfortably, others report they don't stay in their ears. Customers disagree on the value for money, with some considering them well worth the investment while others find them not worth the cost. Reliability, battery life, connectivity, and durability are also mixed aspects, with some customers reporting good performance and long-lasting battery life, while others experience issues with connectivity and premature failure within three months of use.",
    "reviewTopics": [
      {
        "topic": "Quality",
        "summary": "Customers find these wireless earbuds to be of good quality and exactly as described.",
        "mentions": 759,
        "negative": 675,
        "positive": 84,
        "sentiment": "POSITIVE"
      },
      {
        "topic": "Sound quality",
        "summary": "Customers love the sound quality of these wireless earbuds, finding them loud and clear, with one customer specifically mentioning crisp highs.",
        "mentions": 590,
        "negative": 335,
        "positive": 255,
        "sentiment": "POSITIVE"
      },
      {
        "topic": "Fit",
        "summary": "Customers have mixed experiences with how the earbuds sit in their ears, with some finding them comfortable and secure while others report they don't stay in place and fall out frequently.",
        "mentions": 246,
        "negative": 825,
        "positive": 421,
        "sentiment": "MIXED"
      },
      {
        "topic": "Value for money",
        "summary": "Customers have mixed opinions about the headphones' value for money, with some finding them well worth the investment while others consider them a complete waste of money.",
        "mentions": 123,
        "negative": 392,
        "positive": 731,
        "sentiment": "MIXED"
      },
      {
        "topic": "Reliability",
        "summary": "Customers have mixed experiences with the reliability of these earbuds, with some reporting they work great and have no problems, while others mention issues with the left bud stopping working and one ear not functioning properly.",
        "mentions": 25,
        "negative": 315,
        "positive": 710,
        "sentiment": "MIXED"
      },
      {
        "topic": "Battery life",
        "summary": "Customers have mixed experiences with the battery life of these earbuds: while some report that the charge lasts a long time and recharges quickly, others mention that the case doesn't hold a charge.",
        "mentions": 818,
        "negative": 380,
        "positive": 438,
        "sentiment": "MIXED"
      },
      {
        "topic": "Connectivity",
        "summary": "Customers have mixed experiences with the earbuds' connectivity: while some report seamless Bluetooth pairing and quick iPhone connection, others mention issues with disconnection and pairing problems.",
        "mentions": 553,
        "negative": 193,
        "positive": 360,
        "sentiment": "MIXED"
      },
      {
        "topic": "Durability",
        "summary": "Customers have mixed experiences with the durability of these earbuds, with some reporting they last through daily use and hours longer than expected, while others mention they stopped working within three months or died after a month of use.",
        "mentions": 471,
        "negative": 293,
        "positive": 178,
        "sentiment": "MIXED"
      }
    ],
    "details": {}
  },
  {
    "asin": "B0BJQWYLYN",
    "marketplace": "com",
    "title": "Apple AirPods Pro (2nd Generation) (Renewed)",
    "brand": "Apple",
    "productUrl": "https://www.amazon.com/dp/B0BJQWYLYN",
    "price": 146.9,
    "currency": "USD",
    "listPrice": 249,
    "discount": "-41%",
    "onDeal": false,
    "prime": false,
    "availability": "In Stock",
    "rating": 4,
    "ratingsCount": 3302,
    "boughtPastMonth": "1K+ bought in past month",
    "boughtPastMonthMin": 1000,
    "bestSellersRank": 65,
    "bsrCategory": "Amazon Renewed",
    "soldBy": "EcoBytez",
    "fulfilledBy": "Amazon",
    "sellerId": "A36UZVYSKR2ZI5",
    "usedOffer": null,
    "features": [
      "Active Noise Cancellation reduces unwanted background noise",
      "Adaptive Transparency lets outside sounds in while reducing loud environmental noise",
      "Personalized Spatial Audio with dynamic head tracking places sound all around you",
      "Multiple ear tips (XS, S, M, L)",
      "Touch control lets you swipe to adjust volume, press to direct media playback, answer or end calls, and press and hold to switch between listening modes"
    ],
    "description": "Apple AirPods Pro (2nd Generation) (Renewed)",
    "categoryPath": "Electronics > Headphones, Earbuds & Accessories > Headphones & Earbuds > Earbud Headphones",
    "browseNodeId": "12097478011",
    "productDetails": [
      {
        "name": "Brand Name",
        "value": "Apple"
      },
      {
        "name": "Model Number",
        "value": "A2931"
      },
      {
        "name": "Model Name",
        "value": "AirPods Pro"
      },
      {
        "name": "Built-In Media",
        "value": "Charging Station"
      },
      {
        "name": "Age Range Description",
        "value": "Adult"
      },
      {
        "name": "Warranty Description",
        "value": "90 days limited warranty"
      },
      {
        "name": "Customer Package Type",
        "value": "Standard Amazon Packaging"
      },
      {
        "name": "Number of Items",
        "value": "1"
      },
      {
        "name": "Series Number",
        "value": "2"
      },
      {
        "name": "UPC",
        "value": "657768136146"
      },
      {
        "name": "Manufacturer",
        "value": "Apple Computer"
      },
      {
        "name": "ASIN",
        "value": "B0BJQWYLYN"
      },
      {
        "name": "Customer Reviews",
        "value": "4.0 out of 5 stars (3,302)"
      },
      {
        "name": "Headphone Jack",
        "value": "lightning"
      },
      {
        "name": "Connectivity Technology",
        "value": "Wireless"
      },
      {
        "name": "Wireless Technology",
        "value": "Apple H2 Chip, Bluetooth, NFC, Wireless"
      },
      {
        "name": "Bluetooth Version",
        "value": "5.1"
      },
      {
        "name": "Control Type",
        "value": "Touch Control"
      },
      {
        "name": "Control Method",
        "value": "Touch"
      },
      {
        "name": "Controller Type",
        "value": "Siri"
      },
      {
        "name": "Impedance",
        "value": "16 ohm"
      },
      {
        "name": "Noise Control",
        "value": "None"
      },
      {
        "name": "Audio Driver Type",
        "value": "Dynamic Driver"
      },
      {
        "name": "Audio Latency",
        "value": "16 milliseconds"
      },
      {
        "name": "Audio Driver Size",
        "value": "30 millimeters"
      },
      {
        "name": "Enclosure Material",
        "value": "Silicone"
      },
      {
        "name": "Specific Uses For Product",
        "value": "Music"
      },
      {
        "name": "Antenna Location",
        "value": "Calling"
      },
      {
        "name": "Compatible Devices",
        "value": "Cellphones"
      },
      {
        "name": "Cable Features",
        "value": "Retractable"
      },
      {
        "name": "Water Resistance Level",
        "value": "Water Resistant"
      },
      {
        "name": "Additional Features",
        "value": "iOS Phone Control, Water-Resistant, Fast Charging, Microphone included, sweatproof, Volume Control, Sports & Exercise, Lightweight, Wireless,"
      },
      {
        "name": "Number of Power Levels",
        "value": "7"
      },
      {
        "name": "Total USB 2.0 Ports",
        "value": "1"
      },
      {
        "name": "Headphones Ear Placement",
        "value": "In Ear"
      },
      {
        "name": "Headphone Folding Features",
        "value": "semi-open-back"
      },
      {
        "name": "Earpiece Shape",
        "value": "Bud"
      },
      {
        "name": "Color",
        "value": "White"
      },
      {
        "name": "Item Weight",
        "value": "5.67 g"
      },
      {
        "name": "Battery Average Life",
        "value": "6 hours"
      }
    ],
    "keySpecs": [
      {
        "name": "Brand",
        "value": "Apple"
      },
      {
        "name": "Color",
        "value": "White"
      },
      {
        "name": "Ear Placement",
        "value": "In Ear"
      },
      {
        "name": "Form Factor",
        "value": "semi-open-back"
      },
      {
        "name": "Impedance",
        "value": "16 ohm"
      }
    ],
    "variants": null,
    "mainImage": "https://m.media-amazon.com/images/I/61SUj2aKoEL._AC_SL1500_.jpg",
    "images": [
      "https://m.media-amazon.com/images/I/61SUj2aKoEL._AC_SL1500_.jpg",
      "https://m.media-amazon.com/images/I/61sRKTAfrhL._AC_SL1500_.jpg",
      "https://m.media-amazon.com/images/I/51emillNpWL._AC_SL1500_.jpg",
      "https://m.media-amazon.com/images/I/51+vJkbGtJL._AC_SL1500_.jpg",
      "https://m.media-amazon.com/images/I/51s3yLTjWSL._AC_SL1500_.jpg"
    ],
    "videos": [],
    "reviewSummary": "Customers find these headphones excellent in quality, with great sound and awesome noise cancellation. The functionality and value for money receive mixed reviews - while some say they work well and offer good value, others report issues with connectivity and consider them a waste of money. The battery life is also mixed, with some praising its amazing performance while others report it won't charge after three months. The condition of the headphones is mixed, with some arriving like new while others show scratches.",
    "reviewTopics": [
      {
        "topic": "Quality",
        "summary": "Customers find these headphones to be excellent, with multiple customers expressing their satisfaction and willingness to recommend them.",
        "mentions": 239,
        "negative": 62,
        "positive": 177,
        "sentiment": "POSITIVE"
      },
      {
        "topic": "Sound quality",
        "summary": "Customers are satisfied with the sound quality of these headphones.",
        "mentions": 96,
        "negative": 23,
        "positive": 73,
        "sentiment": "POSITIVE"
      },
      {
        "topic": "Noise cancellation",
        "summary": "Customers appreciate the noise cancellation features of these earbuds, with one customer noting that the transparency and noise canceling modes exceed expectations, and another mentioning that they automatically close to block wind noise.",
        "mentions": 50,
        "negative": 11,
        "positive": 39,
        "sentiment": "POSITIVE"
      },
      {
        "topic": "Functionality",
        "summary": "Customers have mixed experiences with the functionality of these headphones, with some reporting that they work great and all features operate seamlessly, while others mention that one AirPod stopped working.",
        "mentions": 159,
        "negative": 56,
        "positive": 103,
        "sentiment": "MIXED"
      },
      {
        "topic": "Value for money",
        "summary": "Customers have mixed opinions about the headphones' value for money, with some finding them a great product for the price while others warn not to buy them.",
        "mentions": 101,
        "negative": 31,
        "positive": 70,
        "sentiment": "MIXED"
      },
      {
        "topic": "Battery life",
        "summary": "Customers have mixed experiences with the battery life of these earbuds, with some praising its amazing performance while others report that they won't charge after three months and don't last all day.",
        "mentions": 67,
        "negative": 44,
        "positive": 23,
        "sentiment": "MIXED"
      },
      {
        "topic": "Condition",
        "summary": "Customers have mixed experiences with the condition of the headphones, with some reporting they arrived like new and in perfect condition, while others mention scratches and signs of wear.",
        "mentions": 46,
        "negative": 25,
        "positive": 21,
        "sentiment": "MIXED"
      },
      {
        "topic": "Connectivity",
        "summary": "Customers report significant connectivity issues with these earbuds, noting that they won't connect to their devices, won't stay paired with phones, and the left AirPod specifically has connection problems.",
        "mentions": 71,
        "negative": 51,
        "positive": 20,
        "sentiment": "NEGATIVE"
      }
    ],
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=amazon&op=search (sign in first).

### reviews

Customer reviews for up to ten products. Text, rating, date, verified-purchase and Vine flags, helpful votes, variant, media. Amazon caps at 100 per product.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | ASINs or product URLs. |
| marketplace | no | enum | The Amazon site as its domain suffix ,  "com", "in", "co.uk", "de"… A product URL carries its own and overrides this; a bare ASIN and a search use it. Prices, stock and reviews differ per site. Values: com, in, co.uk, de, fr, it, es, ca, com.au, co.jp, com.mx, com.br. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| reviewId | string |
| reviewTitle | string |
| reviewText | string |
| rating | number |
| posted | string |
| reviewer | string |
| reviewerUrl | string |
| verifiedPurchase | boolean |
| amazonVine | boolean |
| helpfulVotes | integer |
| language | string |
| variant | list of string |
| variantAsin | string |
| images | list of string |
| videos | list of string |
| mediaType | string |
| reviewUrl | string |
| country | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/amazon \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reviews","subjects":["B0DGHMNQ5Z"],"marketplace":"com","limit":50}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "reviewTitle": "Great sound for the price",
    "reviewText": "Clear calls, solid bass, case fits in a pocket.",
    "rating": 5,
    "posted": "2026-09-28",
    "reviewer": "Dana P.",
    "verifiedPurchase": true,
    "helpfulVotes": 214,
    "country": "United States",
    "reviewId": "1992978764",
    "reviewerUrl": "https://www.amazon.com/great-sound-for-the-price-1000",
    "images": [
      "https://img.amazon.com/great-sound-for-the-price.jpg"
    ],
    "reviewUrl": "https://www.amazon.com/great-sound-for-the-price-1000",
    "details": {}
  },
  {
    "reviewTitle": "Battery could be better",
    "reviewText": "About 4 hours with noise cancelling on.",
    "rating": 3,
    "posted": "2026-10-02",
    "reviewer": "Chris M.",
    "verifiedPurchase": true,
    "helpfulVotes": 86,
    "country": "United States",
    "reviewId": "570880587",
    "reviewerUrl": "https://www.amazon.com/battery-could-be-better-1001",
    "images": [
      "https://img.amazon.com/battery-could-be-better.jpg"
    ],
    "reviewUrl": "https://www.amazon.com/battery-could-be-better-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=amazon&op=reviews (sign in first).

### history (free)

The stored series for products already held. Free.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) |  |
| marketplace | no | enum | The Amazon site as its domain suffix ,  "com", "in", "co.uk", "de"… A product URL carries its own and overrides this; a bare ASIN and a search use it. Prices, stock and reviews differ per site. Values: com, in, co.uk, de, fr, it, es, ca, com.au, co.jp, com.mx, com.br. |
| metric | no | enum |  Values: price, list_price, rating, ratings_count, best_sellers_rank, bought_past_month_min. |
| days | no | integer (1-730) |  |

Request shape:

```json
{
  "op": "history",
  "subjects": [
    "example"
  ]
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=amazon&op=history (sign in first).

## Notes for the agent

Measured Amazon product data, one operation per call. Products are named by ASIN or by any amazon.<marketplace> product URL; a URL carries its own marketplace, a bare ASIN takes the call's (default com). Prices are per marketplace and every fetch adds a point to that product's price history. ops: products (full cards for up to ten ASINs/URLs. Price, list price, deal and Prime flags, availability, rating and count, best-sellers rank, seller, specs, variants, images), search (keyword search on one marketplace, full cards with rank), reviews (customer reviews for up to ten products. Text, rating, date, verified-purchase and Vine flags, helpful votes, variant), history (stored price/rating/rank series for products already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.


---

# Shopify API for agents

> API for Agents · https://apiforagents.dev/platforms/shopify · HTML twin: https://apiforagents.dev/platforms/shopify

Products, prices and stock from any Shopify store.

Endpoint: `POST https://apiforagents.dev/v1/shopify`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| products | $0.0009 |

## Operations

### products

The catalogue of up to five Shopify storefronts. Every product with its price range, sale flag, stock, variants and options.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-5 items) | Store URLs. Any Shopify-powered storefront. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| storeUrl | string |
| productId | string |
| productUrl | string |
| title | string |
| brand | string |
| category | string |
| description | string |
| tags | list of string |
| currency | string |
| priceFrom | number |
| priceTo | number |
| onSale | boolean |
| inStock | boolean |
| variantCount | integer |
| variants | any |
| options | any |
| imageUrl | string |
| media | any |
| createdDate | string |
| publishedDate | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/shopify \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["https://www.allbirds.com"],"limit":25}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "title": "Linen Overshirt",
    "brand": "Northfold Studio",
    "category": "Shirts",
    "currency": "USD",
    "priceFrom": 89,
    "priceTo": 89,
    "onSale": false,
    "inStock": true,
    "variantCount": 5,
    "tags": [
      "linen",
      "summer"
    ],
    "storeUrl": "https://shop.northfold.example/linen-overshirt-1000",
    "productId": "2846215038",
    "productUrl": "https://shop.northfold.example/linen-overshirt-1000",
    "imageUrl": "https://img.shop.northfold.example/linen-overshirt.jpg",
    "createdDate": "2026-10-07",
    "publishedDate": "2026-10-07",
    "details": {}
  },
  {
    "title": "Merino Crew Socks (3 pack)",
    "brand": "Northfold Studio",
    "category": "Socks",
    "currency": "USD",
    "priceFrom": 28,
    "priceTo": 32,
    "onSale": true,
    "inStock": true,
    "variantCount": 3,
    "tags": [
      "merino",
      "bestseller"
    ],
    "storeUrl": "https://shop.northfold.example/merino-crew-socks-3-pack-1001",
    "productId": "508030209",
    "productUrl": "https://shop.northfold.example/merino-crew-socks-3-pack-1001",
    "imageUrl": "https://img.shop.northfold.example/merino-crew-socks-3-pack.jpg",
    "createdDate": "2026-10-01",
    "publishedDate": "2026-10-14",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=shopify&op=products (sign in first).

### history (free)

Stored price/stock series of a store's products already held. Free.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-5 items) |  |
| metric | no | enum |  Values: price_from, price_to, in_stock, variant_count. |
| days | no | integer (1-730) |  |

Request shape:

```json
{
  "op": "history",
  "subjects": [
    "example"
  ]
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=shopify&op=history (sign in first).

## Notes for the agent

Measured Shopify storefront data, one operation per call. Any Shopify-powered store, named by its URL. Every fetch adds a price and stock point to each product's history. ops: products (the catalogue of up to five stores. Title, brand, category, tags, price range, sale flag, stock, variant count, every variant with SKU/price/stock, options, images, created and published dates), history (stored price/stock series of a product already held, by product URL, free). Fresh fetches are charged per record; your own answer is free while fresh.


---

# Farfetch API for agents

> API for Agents · https://apiforagents.dev/platforms/farfetch · HTML twin: https://apiforagents.dev/platforms/farfetch

Products, search and listings from Farfetch, priced per storefront.

Endpoint: `POST https://apiforagents.dev/v1/farfetch`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| products | $0.0009 |

## Operations

### products

Full product detail for up to ten Farfetch product URLs or item ids. Price, full price, discount, per-size availability, seller boutique.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| productId | string |
| productName | string |
| brand | string |
| productUrl | string |
| description | string |
| color | string |
| category | string |
| categoryPath | string |
| gender | string |
| season | string |
| price | number |
| fullPrice | number |
| discountPercent | number |
| currency | string |
| seller | string |
| sizes | list of string |
| variants | any |
| measurements | any |
| returns | any |
| stockQuantity | integer |
| availability | list of string |
| label | string |
| condition | string |
| images | list of string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/farfetch \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["https://www.farfetch.com/shopping/women/<product>-item-<id>.aspx"]}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "productName": "Wool-blend tailored blazer",
    "brand": "Maison Aurel",
    "category": "Blazers",
    "color": "Camel",
    "gender": "women",
    "season": "FW26",
    "price": 690,
    "fullPrice": 980,
    "discountPercent": 30,
    "currency": "USD",
    "productId": "769094221",
    "productUrl": "https://www.farfetch.com/wool-blend-tailored-blazer-1000",
    "images": [
      "https://img.farfetch.com/wool-blend-tailored-blazer.jpg"
    ],
    "details": {}
  },
  {
    "productName": "Leather low-top sneakers",
    "brand": "Corvo",
    "category": "Sneakers",
    "color": "White",
    "gender": "men",
    "season": "SS26",
    "price": 420,
    "fullPrice": 420,
    "discountPercent": 0,
    "currency": "USD",
    "productId": "2828953235",
    "productUrl": "https://www.farfetch.com/leather-low-top-sneakers-1001",
    "images": [
      "https://img.farfetch.com/leather-low-top-sneakers.jpg"
    ],
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=farfetch&op=products (sign in first).

### search

Keyword search across Farfetch. Every hit a full product card.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) |  |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| productId | string |
| productName | string |
| brand | string |
| productUrl | string |
| description | string |
| color | string |
| category | string |
| categoryPath | string |
| gender | string |
| season | string |
| price | number |
| fullPrice | number |
| discountPercent | number |
| currency | string |
| seller | string |
| sizes | list of string |
| variants | any |
| measurements | any |
| returns | any |
| stockQuantity | integer |
| availability | list of string |
| label | string |
| condition | string |
| images | list of string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/farfetch \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"Gucci loafers","limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "productName": "Shearling-lined trench coat",
    "brand": "Maison Aurel",
    "category": "Coats",
    "color": "Black",
    "gender": "women",
    "season": "FW26",
    "price": 1890,
    "fullPrice": 1890,
    "discountPercent": 0,
    "currency": "USD",
    "productId": "69479774",
    "productUrl": "https://www.farfetch.com/shearling-lined-trench-coat-1000",
    "images": [
      "https://img.farfetch.com/shearling-lined-trench-coat.jpg"
    ],
    "details": {}
  },
  {
    "productName": "Double-breasted wool coat",
    "brand": "Corvo",
    "category": "Coats",
    "color": "Charcoal",
    "gender": "men",
    "season": "FW26",
    "price": 1150,
    "fullPrice": 1450,
    "discountPercent": 21,
    "currency": "USD",
    "productId": "3720102784",
    "productUrl": "https://www.farfetch.com/double-breasted-wool-coat-1001",
    "images": [
      "https://img.farfetch.com/double-breasted-wool-coat.jpg"
    ],
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=farfetch&op=search (sign in first).

### listing

Any designer, category or sale listing page URL. Its products in page order, each a full card.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subject | yes | string (≤400 chars) | The listing page URL. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| productId | string |
| productName | string |
| brand | string |
| productUrl | string |
| description | string |
| color | string |
| category | string |
| categoryPath | string |
| gender | string |
| season | string |
| price | number |
| fullPrice | number |
| discountPercent | number |
| currency | string |
| seller | string |
| sizes | list of string |
| variants | any |
| measurements | any |
| returns | any |
| stockQuantity | integer |
| availability | list of string |
| label | string |
| condition | string |
| images | list of string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/farfetch \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"listing","subject":"https://www.farfetch.com/shopping/women/gucci/items.aspx","limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "productName": "Cashmere crew-neck jumper",
    "brand": "Velia",
    "category": "Knitwear",
    "color": "Oatmeal",
    "gender": "women",
    "season": "FW26",
    "price": 540,
    "fullPrice": 540,
    "discountPercent": 0,
    "currency": "USD",
    "productId": "2784670277",
    "productUrl": "https://www.farfetch.com/cashmere-crew-neck-jumper-1000",
    "images": [
      "https://img.farfetch.com/cashmere-crew-neck-jumper.jpg"
    ],
    "details": {}
  },
  {
    "productName": "Ribbed cardigan",
    "brand": "Velia",
    "category": "Knitwear",
    "color": "Black",
    "gender": "women",
    "season": "FW26",
    "price": 460,
    "fullPrice": 620,
    "discountPercent": 26,
    "currency": "USD",
    "productId": "531485373",
    "productUrl": "https://www.farfetch.com/ribbed-cardigan-1001",
    "images": [
      "https://img.farfetch.com/ribbed-cardigan.jpg"
    ],
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=farfetch&op=listing (sign in first).

### history (free)

Stored price/stock series of products already held. Free.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) |  |
| metric | no | enum |  Values: price, full_price, discount_percent, stock_quantity. |
| days | no | integer (1-730) |  |

Request shape:

```json
{
  "op": "history",
  "subjects": [
    "example"
  ]
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=farfetch&op=history (sign in first).

## Notes for the agent

Measured Farfetch data, one operation per call. Products are named by product URL or the numeric item id in it. Prices are per storefront locale. Read `currency`, never assume USD. Every fetch adds a price and stock point to the product's history. ops: products (full cards for up to ten products. Price, full price, discount, per-size availability with SKU and price, seller boutique, category path, season, returns, images), search (keyword search, full cards), listing (any designer/category/sale page URL, its products in page order), history (stored price/stock series for products already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.


---

# GOAT API for agents

> API for Agents · https://apiforagents.dev/platforms/goat · HTML twin: https://apiforagents.dev/platforms/goat

Resale products, listings and asks from GOAT.

Endpoint: `POST https://apiforagents.dev/v1/goat`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| products | $0.0009 |

## Operations

### products

Full detail for up to ten GOAT products by URL or slug. Every size with its asking price and availability, max offer, retail price.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) |  |
| country | no | string (ISO alpha-2) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| slug | string |
| productId | string |
| productName | string |
| sku | string |
| productUrl | string |
| brand | string |
| colorway | string |
| color | string |
| category | string |
| subcategory | string |
| categoryLevel3 | string |
| categoryLevel4 | string |
| activities | list of string |
| gender | string |
| releaseDate | string |
| season | string |
| story | string |
| styleTags | list of string |
| detailTags | list of string |
| merchandisingTags | list of string |
| specialType | string |
| isResellable | boolean |
| directShipping | boolean |
| maxOffer | number |
| sizeType | string |
| sizeUnit | string |
| retailPrice | number |
| images | list of string |
| attributes | any |
| listings | any |
| lowestAsk | number |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/goat \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["https://www.goat.com/sneakers/<product-slug>"],"country":"US"}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "productName": "Runner 90 'Sea Salt'",
    "brand": "Stride",
    "sku": "ST90-102",
    "colorway": "Sea Salt/White",
    "category": "sneakers",
    "gender": "men",
    "releaseDate": "2026-03-14",
    "retailPrice": 130,
    "lowestAsk": 182,
    "slug": "runner-90-sea-salt",
    "productId": "3890853960",
    "productUrl": "https://www.goat.com/runner-90-sea-salt-1000",
    "isResellable": false,
    "images": [
      "https://img.goat.com/runner-90-sea-salt.jpg"
    ],
    "details": {}
  },
  {
    "productName": "Court Classic Low 'Black'",
    "brand": "Corvo",
    "sku": "CC-LOW-001",
    "colorway": "Black/Black",
    "category": "sneakers",
    "gender": "unisex",
    "releaseDate": "2025-11-02",
    "retailPrice": 110,
    "lowestAsk": 96,
    "slug": "court-classic-low-black",
    "productId": "1913871840",
    "productUrl": "https://www.goat.com/court-classic-low-black-1001",
    "isResellable": false,
    "images": [
      "https://img.goat.com/court-classic-low-black.jpg"
    ],
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=goat&op=products (sign in first).

### search

Keyword search on GOAT. Every hit a full product card.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) |  |
| country | no | string (ISO alpha-2) |  |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| slug | string |
| productId | string |
| productName | string |
| sku | string |
| productUrl | string |
| brand | string |
| colorway | string |
| color | string |
| category | string |
| subcategory | string |
| categoryLevel3 | string |
| categoryLevel4 | string |
| activities | list of string |
| gender | string |
| releaseDate | string |
| season | string |
| story | string |
| styleTags | list of string |
| detailTags | list of string |
| merchandisingTags | list of string |
| specialType | string |
| isResellable | boolean |
| directShipping | boolean |
| maxOffer | number |
| sizeType | string |
| sizeUnit | string |
| retailPrice | number |
| images | list of string |
| attributes | any |
| listings | any |
| lowestAsk | number |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/goat \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"Nike Dunk Low","country":"US","limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "productName": "Runner 90 'Sea Salt'",
    "brand": "Stride",
    "sku": "ST90-102",
    "colorway": "Sea Salt/White",
    "category": "sneakers",
    "gender": "men",
    "releaseDate": "2026-03-14",
    "retailPrice": 130,
    "lowestAsk": 182,
    "slug": "runner-90-sea-salt",
    "productId": "3696258439",
    "productUrl": "https://www.goat.com/runner-90-sea-salt-1000",
    "isResellable": false,
    "images": [
      "https://img.goat.com/runner-90-sea-salt.jpg"
    ],
    "details": {}
  },
  {
    "productName": "Runner 90 'Night'",
    "brand": "Stride",
    "sku": "ST90-001",
    "colorway": "Black/Gum",
    "category": "sneakers",
    "gender": "men",
    "releaseDate": "2026-01-20",
    "retailPrice": 130,
    "lowestAsk": 158,
    "slug": "runner-90-night",
    "productId": "228523151",
    "productUrl": "https://www.goat.com/runner-90-night-1001",
    "isResellable": false,
    "images": [
      "https://img.goat.com/runner-90-night.jpg"
    ],
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=goat&op=search (sign in first).

### listing

A brand or collection page URL. Its products in page order.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subject | yes | string (≤400 chars) | The listing page URL. |
| country | no | string (ISO alpha-2) |  |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| slug | string |
| productId | string |
| productName | string |
| sku | string |
| productUrl | string |
| brand | string |
| colorway | string |
| color | string |
| category | string |
| subcategory | string |
| categoryLevel3 | string |
| categoryLevel4 | string |
| activities | list of string |
| gender | string |
| releaseDate | string |
| season | string |
| story | string |
| styleTags | list of string |
| detailTags | list of string |
| merchandisingTags | list of string |
| specialType | string |
| isResellable | boolean |
| directShipping | boolean |
| maxOffer | number |
| sizeType | string |
| sizeUnit | string |
| retailPrice | number |
| images | list of string |
| attributes | any |
| listings | any |
| lowestAsk | number |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/goat \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"listing","subject":"https://www.goat.com/brand/nike","country":"US","limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "productName": "Court Classic High 'White'",
    "brand": "Corvo",
    "sku": "CC-HI-100",
    "colorway": "White/White",
    "category": "sneakers",
    "gender": "unisex",
    "releaseDate": "2026-02-01",
    "retailPrice": 125,
    "lowestAsk": 118,
    "slug": "court-classic-high-white",
    "productId": "4001860239",
    "productUrl": "https://www.goat.com/court-classic-high-white-1000",
    "isResellable": false,
    "images": [
      "https://img.goat.com/court-classic-high-white.jpg"
    ],
    "details": {}
  },
  {
    "productName": "Court Classic Low 'Sail'",
    "brand": "Corvo",
    "sku": "CC-LOW-210",
    "colorway": "Sail/Gum",
    "category": "sneakers",
    "gender": "unisex",
    "releaseDate": "2026-06-12",
    "retailPrice": 110,
    "lowestAsk": 124,
    "slug": "court-classic-low-sail",
    "productId": "4294050896",
    "productUrl": "https://www.goat.com/court-classic-low-sail-1001",
    "isResellable": false,
    "images": [
      "https://img.goat.com/court-classic-low-sail.jpg"
    ],
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=goat&op=listing (sign in first).

### history (free)

Stored ask/offer series of products already held. Free.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) |  |
| metric | no | enum |  Values: lowest_ask, max_offer, retail_price. |
| days | no | integer (1-730) |  |

Request shape:

```json
{
  "op": "history",
  "subjects": [
    "example"
  ]
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=goat&op=history (sign in first).

## Notes for the agent

Measured GOAT resale data, one operation per call. Products are named by product URL or its slug. Every fetch adds the lowest ask, max offer and retail price to the product's history. ops: products (full detail for up to ten products. Every size with its asking price, condition and availability, max offer, retail price, release date, colorway, tags), search (keyword search, full cards), listing (a brand or collection page URL, its products in order), history (stored ask/offer series for products already held, free). `country` (ISO-2, upper) prices in that region. Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.


---

# StockX API for agents

> API for Agents · https://apiforagents.dev/platforms/stockx · HTML twin: https://apiforagents.dev/platforms/stockx

Market prices, listings and last sales from StockX.

Endpoint: `POST https://apiforagents.dev/v1/stockx`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| products | $0.0009 |

## Operations

### products

Full detail with live market data for up to ten StockX products. Last sale, 90-day and 12-month averages, sales counts, bids, and every size's ask/bid/last sale.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) |  |
| country | no | string (ISO alpha-2) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| slug | string |
| productId | string |
| productUrl | string |
| primaryTitle | string |
| secondaryTitle | string |
| brand | string |
| model | string |
| colorway | string |
| styleId | string |
| category | string |
| subCategory | string |
| categoryPath | string |
| contentGroup | string |
| gender | string |
| condition | string |
| sizeConvention | string |
| retailPrice | number |
| releaseDate | string |
| description | string |
| tags | list of string |
| lastSale | number |
| sales72Hours | integer |
| averagePrice90Days | number |
| sales90Days | integer |
| priceVolatility | number |
| sales12Months | integer |
| averagePrice12Months | number |
| bids | integer |
| askInventoryType | string |
| expressAskCount | integer |
| expressShipLowestAsk | number |
| expressDeliveryDate | string |
| expressLatestDeliveryDate | string |
| images | list of string |
| sizes | any |
| attributes | any |
| lowestAsk | number |
| highestBid | number |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/stockx \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["https://stockx.com/nike-dunk-low-retro-white-black-2021"],"country":"US"}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "primaryTitle": "Stride Runner 90",
    "brand": "Stride",
    "colorway": "Sea Salt/White",
    "category": "sneakers",
    "retailPrice": 130,
    "lastSale": 176,
    "lowestAsk": 182,
    "highestBid": 160,
    "sales72Hours": 48,
    "averagePrice12Months": 153,
    "slug": "stride-runner-90",
    "productId": "366477383",
    "productUrl": "https://stockx.com/stride-runner-90-1000",
    "styleId": "3684041094",
    "releaseDate": "2026-10-05",
    "expressDeliveryDate": "2026-10-13",
    "expressLatestDeliveryDate": "2026-10-09",
    "images": [
      "https://img.stockx.com/stride-runner-90.jpg"
    ],
    "details": {}
  },
  {
    "primaryTitle": "Corvo Court Classic Low",
    "brand": "Corvo",
    "colorway": "Black/Black",
    "category": "sneakers",
    "retailPrice": 110,
    "lastSale": 99,
    "lowestAsk": 96,
    "highestBid": 84,
    "sales72Hours": 21,
    "averagePrice12Months": 104,
    "slug": "corvo-court-classic-low",
    "productId": "726332240",
    "productUrl": "https://stockx.com/corvo-court-classic-low-1001",
    "styleId": "3562676303",
    "releaseDate": "2026-10-04",
    "expressDeliveryDate": "2026-10-12",
    "expressLatestDeliveryDate": "2026-10-07",
    "images": [
      "https://img.stockx.com/corvo-court-classic-low.jpg"
    ],
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=stockx&op=products (sign in first).

### search

Keyword search on StockX. Every hit a full product card.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) |  |
| country | no | string (ISO alpha-2) |  |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| slug | string |
| productId | string |
| productUrl | string |
| primaryTitle | string |
| secondaryTitle | string |
| brand | string |
| model | string |
| colorway | string |
| styleId | string |
| category | string |
| subCategory | string |
| categoryPath | string |
| contentGroup | string |
| gender | string |
| condition | string |
| sizeConvention | string |
| retailPrice | number |
| releaseDate | string |
| description | string |
| tags | list of string |
| lastSale | number |
| sales72Hours | integer |
| averagePrice90Days | number |
| sales90Days | integer |
| priceVolatility | number |
| sales12Months | integer |
| averagePrice12Months | number |
| bids | integer |
| askInventoryType | string |
| expressAskCount | integer |
| expressShipLowestAsk | number |
| expressDeliveryDate | string |
| expressLatestDeliveryDate | string |
| images | list of string |
| sizes | any |
| attributes | any |
| lowestAsk | number |
| highestBid | number |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/stockx \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"Air Jordan 1","country":"US","limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "primaryTitle": "Stride Trail Pro GTX",
    "brand": "Stride",
    "colorway": "Moss/Grey",
    "category": "sneakers",
    "retailPrice": 170,
    "lastSale": 221,
    "lowestAsk": 215,
    "highestBid": 189,
    "sales72Hours": 9,
    "averagePrice12Months": 196,
    "slug": "stride-trail-pro-gtx",
    "productId": "1566781872",
    "productUrl": "https://stockx.com/stride-trail-pro-gtx-1000",
    "styleId": "3003996386",
    "releaseDate": "2026-10-06",
    "expressDeliveryDate": "2026-10-14",
    "expressLatestDeliveryDate": "2026-10-08",
    "images": [
      "https://img.stockx.com/stride-trail-pro-gtx.jpg"
    ],
    "details": {}
  },
  {
    "primaryTitle": "Stride Trail Pro GTX",
    "brand": "Stride",
    "colorway": "Black/Orange",
    "category": "sneakers",
    "retailPrice": 170,
    "lastSale": 198,
    "lowestAsk": 205,
    "highestBid": 180,
    "sales72Hours": 14,
    "averagePrice12Months": 184,
    "slug": "stride-trail-pro-gtx",
    "productId": "2674647671",
    "productUrl": "https://stockx.com/stride-trail-pro-gtx-1001",
    "styleId": "2303690539",
    "releaseDate": "2026-10-02",
    "expressDeliveryDate": "2026-10-04",
    "expressLatestDeliveryDate": "2026-10-10",
    "images": [
      "https://img.stockx.com/stride-trail-pro-gtx.jpg"
    ],
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=stockx&op=search (sign in first).

### listing

A brand or category page URL. Its products in page order.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subject | yes | string (≤400 chars) | The listing page URL. |
| country | no | string (ISO alpha-2) |  |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| slug | string |
| productId | string |
| productUrl | string |
| primaryTitle | string |
| secondaryTitle | string |
| brand | string |
| model | string |
| colorway | string |
| styleId | string |
| category | string |
| subCategory | string |
| categoryPath | string |
| contentGroup | string |
| gender | string |
| condition | string |
| sizeConvention | string |
| retailPrice | number |
| releaseDate | string |
| description | string |
| tags | list of string |
| lastSale | number |
| sales72Hours | integer |
| averagePrice90Days | number |
| sales90Days | integer |
| priceVolatility | number |
| sales12Months | integer |
| averagePrice12Months | number |
| bids | integer |
| askInventoryType | string |
| expressAskCount | integer |
| expressShipLowestAsk | number |
| expressDeliveryDate | string |
| expressLatestDeliveryDate | string |
| images | list of string |
| sizes | any |
| attributes | any |
| lowestAsk | number |
| highestBid | number |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/stockx \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"listing","subject":"https://stockx.com/brands/nike","country":"US","limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "primaryTitle": "Sonora Studio Headphones",
    "brand": "Sonora",
    "colorway": "Matte Black",
    "category": "electronics",
    "retailPrice": 349,
    "lastSale": 310,
    "lowestAsk": 299,
    "highestBid": 263,
    "sales72Hours": 12,
    "averagePrice12Months": 330,
    "slug": "sonora-studio-headphones",
    "productId": "163904352",
    "productUrl": "https://stockx.com/sonora-studio-headphones-1000",
    "styleId": "895962177",
    "releaseDate": "2026-10-12",
    "expressDeliveryDate": "2026-10-08",
    "expressLatestDeliveryDate": "2026-10-14",
    "images": [
      "https://img.stockx.com/sonora-studio-headphones.jpg"
    ],
    "details": {}
  },
  {
    "primaryTitle": "Sonora Buds Pro",
    "brand": "Sonora",
    "colorway": "White",
    "category": "electronics",
    "retailPrice": 199,
    "lastSale": 168,
    "lowestAsk": 162,
    "highestBid": 143,
    "sales72Hours": 31,
    "averagePrice12Months": 184,
    "slug": "sonora-buds-pro",
    "productId": "579672626",
    "productUrl": "https://stockx.com/sonora-buds-pro-1001",
    "styleId": "3844220973",
    "releaseDate": "2026-10-13",
    "expressDeliveryDate": "2026-10-13",
    "expressLatestDeliveryDate": "2026-10-10",
    "images": [
      "https://img.stockx.com/sonora-buds-pro.jpg"
    ],
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=stockx&op=listing (sign in first).

### history (free)

Stored market series of products already held. Free.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) |  |
| metric | no | enum |  Values: last_sale, lowest_ask, highest_bid, average_price_90_days, sales_90_days, sales_72_hours, average_price_12_months, sales_12_months, bids, price_volatility. |
| days | no | integer (1-730) |  |

Request shape:

```json
{
  "op": "history",
  "subjects": [
    "example"
  ]
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=stockx&op=history (sign in first).

## Notes for the agent

Measured StockX market data, one operation per call. Products are named by product URL or its slug. Every fetch adds last sale, lowest ask, highest bid, averages, sales counts and bids to the product's market history. ops: products (full detail for up to ten products. Last sale, 90-day and 12-month average price and sales, 72-hour sales, volatility, bids, express-ship asks, every size with its ask/bid/last sale, retail price, release date), search (keyword search, full cards), listing (a brand or category page URL, its products in order), history (stored market series for products already held, free). `country` (ISO-2, upper) prices in that region. Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.


---

# Blinkit API for agents

> API for Agents · https://apiforagents.dev/platforms/blinkit · HTML twin: https://apiforagents.dev/platforms/blinkit

A product's price and stock at one dark store, right now, from Blinkit.

Endpoint: `POST https://apiforagents.dev/v1/blinkit`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| category | $0.0009 |
| products | $0.0009 |
| search | $0.0009 |

## Operations

### products

Full product detail at one store. Price, MRP, discount, stock count, rating, seller, manufacturer, specifications. By product URL.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Product URLs at that store. |
| store | yes | object |  |
| store.storeId | no | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | no | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | no | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | no | number | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | no | number | Longitude in decimal degrees; only read together with lat. |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| productId | string |
| variantId | string |
| storeScope | string |
| storeId | string |
| vendorProductId | string |
| productName | string |
| brand | string |
| price | number |
| mrp | number |
| discountPct | number |
| packSize | string |
| inStock | boolean |
| stockCount | integer |
| rating | number |
| ratingCount | integer |
| category | string |
| rank | integer |
| sponsored | boolean |
| images | list of string |
| productUrl | string |
| description | string |
| countryOfOrigin | string |
| manufacturer | string |
| seller | string |
| specifications | any |
| latitude | number |
| longitude | number |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/blinkit \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["https://blinkit.com/prn/<product-name>/prid/<id>"],"store":{"city":"Bengaluru","pincode":"560001"}}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "productName": "Toned Milk",
    "brand": "Dairyfield",
    "price": 27,
    "mrp": 28,
    "discountPct": 4,
    "packSize": "500 ml",
    "inStock": true,
    "category": "Dairy & Breakfast",
    "rank": 1,
    "rating": 4.3,
    "ratingCount": 1200,
    "productId": "2109488896",
    "variantId": "939572139",
    "storeId": "267557837",
    "vendorProductId": "1840821662",
    "images": [
      "https://img.blinkit.com/toned-milk.jpg"
    ],
    "productUrl": "https://blinkit.com/toned-milk-1000",
    "details": {}
  },
  {
    "productName": "Brown Bread",
    "brand": "Bakehouse",
    "price": 45,
    "mrp": 50,
    "discountPct": 10,
    "packSize": "400 g",
    "inStock": true,
    "category": "Bakery",
    "rank": 2,
    "rating": 4.3,
    "ratingCount": 1200,
    "productId": "3344686621",
    "variantId": "799874867",
    "storeId": "612408852",
    "vendorProductId": "478340074",
    "images": [
      "https://img.blinkit.com/brown-bread.jpg"
    ],
    "productUrl": "https://blinkit.com/brown-bread-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=blinkit&op=products (sign in first).

### search

Search the app as a shopper at that store would. Listings with price, MRP, stock and rank.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) |  |
| store | yes | object |  |
| store.storeId | no | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | no | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | no | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | no | number | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | no | number | Longitude in decimal degrees; only read together with lat. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| productId | string |
| variantId | string |
| storeScope | string |
| storeId | string |
| vendorProductId | string |
| productName | string |
| brand | string |
| price | number |
| mrp | number |
| discountPct | number |
| packSize | string |
| inStock | boolean |
| stockCount | integer |
| rating | number |
| ratingCount | integer |
| category | string |
| rank | integer |
| sponsored | boolean |
| images | list of string |
| productUrl | string |
| description | string |
| countryOfOrigin | string |
| manufacturer | string |
| seller | string |
| specifications | any |
| latitude | number |
| longitude | number |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/blinkit \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"Amul butter","store":{"city":"Bengaluru","pincode":"560001"},"limit":20}'
```

Example response rows (real rows, business data; a live row carries every field above):

```json
[
  {
    "productId": "212722",
    "variantId": "212722",
    "storeScope": "pin:560034",
    "storeId": "44371",
    "vendorProductId": "212722",
    "productName": "Nestle KitKat 4 Fingers Choco Coated Wafer Bar",
    "brand": "Nestle KitKat",
    "price": 30,
    "mrp": 30,
    "discountPct": 0,
    "packSize": "38.5 g",
    "inStock": true,
    "stockCount": 50,
    "rating": 4.7,
    "ratingCount": 500000,
    "category": "Wafer Chocolate",
    "rank": 2,
    "sponsored": false,
    "images": [
      "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1786506151062-353.png?bg_token=color.surface.quaternary",
      "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1786426172675-233.png?bg_token=color.surface.quaternary",
      "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1786426172675-234.png?bg_token=color.surface.quaternary",
      "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1786426172675-236.png?bg_token=color.surface.quaternary",
      "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1786426172675-237.png?bg_token=color.surface.quaternary",
      "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1786426172675-235.png?bg_token=color.surface.quaternary",
      "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1786426172675-238.png?bg_token=color.surface.quaternary",
      "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1786426172675-239.png?bg_token=color.surface.quaternary",
      "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1786426172675-240.png?bg_token=color.surface.quaternary",
      "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1786593189552-187.png?bg_token=color.surface.quaternary"
    ],
    "productUrl": "https://blinkit.com/prn/x/prid/212722",
    "latitude": 27.1956,
    "longitude": 78.0092,
    "details": {}
  },
  {
    "productId": "536255",
    "variantId": "536255",
    "storeScope": "pin:560034",
    "storeId": "44371",
    "vendorProductId": "536255",
    "productName": "Cadbury Nutties Milk Chocolate Pack",
    "brand": "Cadbury Nutties",
    "price": 130,
    "mrp": 135,
    "discountPct": 3.7,
    "packSize": "30 g",
    "inStock": true,
    "stockCount": 43,
    "rating": 4.5,
    "ratingCount": 92044,
    "category": "Milk Chocolate Pack",
    "rank": 1,
    "sponsored": true,
    "images": [
      "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1778243110777-1497.png?bg_token=color.surface.quaternary",
      "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1778243110777-1498.png?bg_token=color.surface.quaternary",
      "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1778243110777-1499.png?bg_token=color.surface.quaternary",
      "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1778243110777-1500.png?bg_token=color.surface.quaternary",
      "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1778243110777-1501.png?bg_token=color.surface.quaternary",
      "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1778243110777-1502.png?bg_token=color.surface.quaternary",
      "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1778243110777-1503.png?bg_token=color.surface.quaternary",
      "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1778243110777-1504.png?bg_token=color.surface.quaternary",
      "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1778243110777-1505.png?bg_token=color.surface.quaternary"
    ],
    "productUrl": "https://blinkit.com/prn/x/prid/536255",
    "latitude": 27.1956,
    "longitude": 78.0092,
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=blinkit&op=search (sign in first).

### category

One category page at one store. Names must be the app's own menu names; a name that is not on the menu is refused and nothing is charged.

| Field | Required | Type | Meaning |
|---|---|---|---|
| category | yes | string (≤80 chars) | The top-level aisle as the app names it ("Dairy, Bread & Eggs"). |
| subCategory | yes | string (≤80 chars) | The shelf inside it, again as the app names it ("Milk"). Both are required: the listing is one shelf at one store. |
| store | yes | object |  |
| store.storeId | no | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | no | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | no | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | no | number | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | no | number | Longitude in decimal degrees; only read together with lat. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| productId | string |
| variantId | string |
| storeScope | string |
| storeId | string |
| vendorProductId | string |
| productName | string |
| brand | string |
| price | number |
| mrp | number |
| discountPct | number |
| packSize | string |
| inStock | boolean |
| stockCount | integer |
| rating | number |
| ratingCount | integer |
| category | string |
| rank | integer |
| sponsored | boolean |
| images | list of string |
| productUrl | string |
| description | string |
| countryOfOrigin | string |
| manufacturer | string |
| seller | string |
| specifications | any |
| latitude | number |
| longitude | number |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/blinkit \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"category","category":"Atta, Rice & Dal","subCategory":"Atta","store":{"city":"Delhi","pincode":"110001"},"limit":50}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "productName": "Fresh Paneer",
    "brand": "Dairyfield",
    "price": 90,
    "mrp": 95,
    "discountPct": 5,
    "packSize": "200 g",
    "inStock": true,
    "category": "Dairy & Breakfast",
    "rank": 1,
    "rating": 4.3,
    "ratingCount": 1200,
    "productId": "4192785922",
    "variantId": "123170715",
    "storeId": "3026289712",
    "vendorProductId": "128062296",
    "images": [
      "https://img.blinkit.com/fresh-paneer.jpg"
    ],
    "productUrl": "https://blinkit.com/fresh-paneer-1000",
    "details": {}
  },
  {
    "productName": "Greek Yogurt, Plain",
    "brand": "Cultura",
    "price": 60,
    "mrp": 65,
    "discountPct": 8,
    "packSize": "100 g",
    "inStock": true,
    "category": "Dairy & Breakfast",
    "rank": 2,
    "rating": 4.3,
    "ratingCount": 1200,
    "productId": "793487613",
    "variantId": "3782716101",
    "storeId": "1999865175",
    "vendorProductId": "248104020",
    "images": [
      "https://img.blinkit.com/greek-yogurt-plain.jpg"
    ],
    "productUrl": "https://blinkit.com/greek-yogurt-plain-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=blinkit&op=category (sign in first).

### history (free)

The stored price/stock series of products already held at a store. Free.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) |  |
| store | yes | object |  |
| store.storeId | no | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | no | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | no | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | no | number | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | no | number | Longitude in decimal degrees; only read together with lat. |
| metric | no | enum |  Values: price, mrp, discount_pct, stock_count, rating, rating_count. |
| days | no | integer (1-730) |  |

Request shape:

```json
{
  "op": "history",
  "subjects": [
    "example"
  ],
  "store": {
    "pincode": "560001"
  }
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=blinkit&op=history (sign in first).

## Notes for the agent

Measured Blinkit data, one operation per call. A product's price and stock at ONE dark store, right now. Every op takes `store`: a storeId, or a pincode (with city), or lat/lon. Prices, MRP, discounts and stock are per store and every fetch adds a point to that product's price history at that store. ops: products (full detail for up to ten blinkit.com product URLs at the store. Price, MRP, discount, stock count, rating, seller, manufacturer, specifications), search (what a shopper at that store sees for a query. Listings with price, stock and rank), category (one page of the app's own menu at that store; names must match the app exactly, e.g. category "Atta, Rice & Dal", subCategory "Atta". The pair must belong together), history (stored price/stock series for products already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.


---

# Swiggy Instamart API for agents

> API for Agents · https://apiforagents.dev/platforms/instamart · HTML twin: https://apiforagents.dev/platforms/instamart

A product's price and stock at one dark store, right now, from Swiggy Instamart.

Endpoint: `POST https://apiforagents.dev/v1/instamart`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| category | $0.0009 |
| products | $0.0009 |
| search | $0.0009 |

## Operations

### products

Full product detail at one store. Price, MRP, discount, stock count, rating, seller, manufacturer, specifications. By product URL.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Product URLs at that store. |
| store | yes | object |  |
| store.storeId | no | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | no | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | no | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | no | number | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | no | number | Longitude in decimal degrees; only read together with lat. |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| productId | string |
| variantId | string |
| storeScope | string |
| storeId | string |
| vendorProductId | string |
| productName | string |
| brand | string |
| price | number |
| mrp | number |
| discountPct | number |
| packSize | string |
| inStock | boolean |
| stockCount | integer |
| rating | number |
| ratingCount | integer |
| category | string |
| rank | integer |
| sponsored | boolean |
| images | list of string |
| productUrl | string |
| description | string |
| countryOfOrigin | string |
| manufacturer | string |
| seller | string |
| specifications | any |
| latitude | number |
| longitude | number |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/instamart \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["https://www.swiggy.com/instamart/item/<item-id>"],"store":{"city":"Delhi","pincode":"110001"}}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "productName": "Bananas, Robusta",
    "brand": "Fresh",
    "price": 42,
    "mrp": 55,
    "discountPct": 24,
    "packSize": "6 pcs",
    "inStock": true,
    "category": "Fruits",
    "rank": 1,
    "rating": 4.3,
    "ratingCount": 1200,
    "productId": "3188413045",
    "variantId": "3193636747",
    "storeId": "3779976944",
    "vendorProductId": "3920638163",
    "images": [
      "https://img.swiggy.com/bananas-robusta.jpg"
    ],
    "productUrl": "https://www.swiggy.com/instamart/bananas-robusta-1000",
    "details": {}
  },
  {
    "productName": "Eggs, Brown",
    "brand": "Farmnest",
    "price": 96,
    "mrp": 110,
    "discountPct": 13,
    "packSize": "6 pcs",
    "inStock": true,
    "category": "Eggs & Meat",
    "rank": 2,
    "rating": 4.3,
    "ratingCount": 1200,
    "productId": "3220125645",
    "variantId": "741222204",
    "storeId": "26123741",
    "vendorProductId": "2960127665",
    "images": [
      "https://img.swiggy.com/eggs-brown.jpg"
    ],
    "productUrl": "https://www.swiggy.com/instamart/eggs-brown-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=instamart&op=products (sign in first).

### search

Search the app as a shopper at that store would. Listings with price, MRP, stock and rank.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) |  |
| store | yes | object |  |
| store.storeId | no | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | no | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | no | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | no | number | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | no | number | Longitude in decimal degrees; only read together with lat. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| productId | string |
| variantId | string |
| storeScope | string |
| storeId | string |
| vendorProductId | string |
| productName | string |
| brand | string |
| price | number |
| mrp | number |
| discountPct | number |
| packSize | string |
| inStock | boolean |
| stockCount | integer |
| rating | number |
| ratingCount | integer |
| category | string |
| rank | integer |
| sponsored | boolean |
| images | list of string |
| productUrl | string |
| description | string |
| countryOfOrigin | string |
| manufacturer | string |
| seller | string |
| specifications | any |
| latitude | number |
| longitude | number |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/instamart \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"Maggi noodles","store":{"city":"Bengaluru","pincode":"560001"},"limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "productName": "Instant Noodles, Masala",
    "brand": "Noodo",
    "price": 14,
    "mrp": 15,
    "discountPct": 7,
    "packSize": "70 g",
    "inStock": true,
    "category": "Instant Food",
    "rank": 1,
    "rating": 4.3,
    "ratingCount": 1200,
    "productId": "2927721665",
    "variantId": "1659626997",
    "storeId": "2249531317",
    "vendorProductId": "3505215323",
    "images": [
      "https://img.swiggy.com/instant-noodles-masala.jpg"
    ],
    "productUrl": "https://www.swiggy.com/instamart/instant-noodles-masala-1000",
    "details": {}
  },
  {
    "productName": "Hakka Noodles",
    "brand": "Wokit",
    "price": 55,
    "mrp": 60,
    "discountPct": 8,
    "packSize": "150 g",
    "inStock": true,
    "category": "Instant Food",
    "rank": 2,
    "rating": 4.3,
    "ratingCount": 1200,
    "productId": "1063549028",
    "variantId": "446777371",
    "storeId": "3334597586",
    "vendorProductId": "305940609",
    "images": [
      "https://img.swiggy.com/hakka-noodles.jpg"
    ],
    "productUrl": "https://www.swiggy.com/instamart/hakka-noodles-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=instamart&op=search (sign in first).

### category

One category page at one store. Names must be the app's own menu names; a name that is not on the menu is refused and nothing is charged.

| Field | Required | Type | Meaning |
|---|---|---|---|
| category | yes | string (≤80 chars) | The top-level aisle as the app names it ("Dairy, Bread & Eggs"). |
| subCategory | yes | string (≤80 chars) | The shelf inside it, again as the app names it ("Milk"). Both are required: the listing is one shelf at one store. |
| store | yes | object |  |
| store.storeId | no | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | no | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | no | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | no | number | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | no | number | Longitude in decimal degrees; only read together with lat. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| productId | string |
| variantId | string |
| storeScope | string |
| storeId | string |
| vendorProductId | string |
| productName | string |
| brand | string |
| price | number |
| mrp | number |
| discountPct | number |
| packSize | string |
| inStock | boolean |
| stockCount | integer |
| rating | number |
| ratingCount | integer |
| category | string |
| rank | integer |
| sponsored | boolean |
| images | list of string |
| productUrl | string |
| description | string |
| countryOfOrigin | string |
| manufacturer | string |
| seller | string |
| specifications | any |
| latitude | number |
| longitude | number |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/instamart \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"category","category":"Atta, Rice and Dal","subCategory":"Atta","store":{"city":"Delhi","pincode":"110001"},"limit":50}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "productName": "Orange Juice, No Added Sugar",
    "brand": "Squeezy",
    "price": 120,
    "mrp": 135,
    "discountPct": 11,
    "packSize": "1 L",
    "inStock": true,
    "category": "Beverages",
    "rank": 1,
    "rating": 4.3,
    "ratingCount": 1200,
    "productId": "2876090726",
    "variantId": "4056194219",
    "storeId": "3566173443",
    "vendorProductId": "3732201011",
    "images": [
      "https://img.swiggy.com/orange-juice-no-added-sugar.jpg"
    ],
    "productUrl": "https://www.swiggy.com/instamart/orange-juice-no-added-sugar-1000",
    "details": {}
  },
  {
    "productName": "Coconut Water",
    "brand": "Tenderco",
    "price": 60,
    "mrp": 65,
    "discountPct": 8,
    "packSize": "200 ml",
    "inStock": true,
    "category": "Beverages",
    "rank": 2,
    "rating": 4.3,
    "ratingCount": 1200,
    "productId": "1437839382",
    "variantId": "1897365453",
    "storeId": "3109076870",
    "vendorProductId": "4292472465",
    "images": [
      "https://img.swiggy.com/coconut-water.jpg"
    ],
    "productUrl": "https://www.swiggy.com/instamart/coconut-water-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=instamart&op=category (sign in first).

### history (free)

The stored price/stock series of products already held at a store. Free.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) |  |
| store | yes | object |  |
| store.storeId | no | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | no | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | no | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | no | number | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | no | number | Longitude in decimal degrees; only read together with lat. |
| metric | no | enum |  Values: price, mrp, discount_pct, stock_count, rating, rating_count. |
| days | no | integer (1-730) |  |

Request shape:

```json
{
  "op": "history",
  "subjects": [
    "example"
  ],
  "store": {
    "pincode": "560001"
  }
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=instamart&op=history (sign in first).

## Notes for the agent

Measured Swiggy Instamart data, one operation per call. A product's price and stock at ONE dark store, right now. Every op takes `store`: a storeId, or a pincode (with city), or lat/lon. Prices, MRP, discounts and stock are per store and every fetch adds a point to that product's price history at that store. ops: products (full detail for up to ten swiggy.com/instamart product URLs at the store. Price, MRP, discount, stock count, rating, seller, manufacturer, specifications), search (what a shopper at that store sees for a query. Listings with price, stock and rank), category (one page of the app's own menu at that store; names must match the app exactly, e.g. category "Atta, Rice and Dal", subCategory "Atta". The pair must belong together), history (stored price/stock series for products already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.


---

# Zepto API for agents

> API for Agents · https://apiforagents.dev/platforms/zepto · HTML twin: https://apiforagents.dev/platforms/zepto

A product's price and stock at one dark store, right now, from Zepto.

Endpoint: `POST https://apiforagents.dev/v1/zepto`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| category | $0.0009 |
| products | $0.0009 |
| search | $0.0009 |

## Operations

### products

Full product detail at one store. Price, MRP, discount, stock count, rating, seller, manufacturer, specifications. By product URL.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Product URLs at that store. |
| store | yes | object |  |
| store.storeId | no | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | no | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | no | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | no | number | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | no | number | Longitude in decimal degrees; only read together with lat. |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| productId | string |
| variantId | string |
| storeScope | string |
| storeId | string |
| vendorProductId | string |
| productName | string |
| brand | string |
| price | number |
| mrp | number |
| discountPct | number |
| packSize | string |
| inStock | boolean |
| stockCount | integer |
| rating | number |
| ratingCount | integer |
| category | string |
| rank | integer |
| sponsored | boolean |
| images | list of string |
| productUrl | string |
| description | string |
| countryOfOrigin | string |
| manufacturer | string |
| seller | string |
| specifications | any |
| latitude | number |
| longitude | number |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/zepto \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["https://www.zepto.com/pn/<product-name>/pvid/<id>"],"store":{"city":"Bengaluru","pincode":"560001"}}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "productName": "Tomato, Hybrid",
    "brand": "Fresh",
    "price": 32,
    "mrp": 40,
    "discountPct": 20,
    "packSize": "500 g",
    "inStock": true,
    "category": "Vegetables",
    "rank": 1,
    "rating": 4.3,
    "ratingCount": 1200,
    "productId": "1563872094",
    "variantId": "1783170642",
    "storeId": "1613790522",
    "vendorProductId": "2511739480",
    "images": [
      "https://img.zeptonow.com/tomato-hybrid.jpg"
    ],
    "productUrl": "https://www.zeptonow.com/tomato-hybrid-1000",
    "details": {}
  },
  {
    "productName": "Onion",
    "brand": "Fresh",
    "price": 38,
    "mrp": 45,
    "discountPct": 16,
    "packSize": "1 kg",
    "inStock": true,
    "category": "Vegetables",
    "rank": 2,
    "rating": 4.3,
    "ratingCount": 1200,
    "productId": "1331370611",
    "variantId": "1288289772",
    "storeId": "2237783320",
    "vendorProductId": "2449101274",
    "images": [
      "https://img.zeptonow.com/onion.jpg"
    ],
    "productUrl": "https://www.zeptonow.com/onion-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=zepto&op=products (sign in first).

### search

Search the app as a shopper at that store would. Listings with price, MRP, stock and rank.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) |  |
| store | yes | object |  |
| store.storeId | no | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | no | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | no | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | no | number | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | no | number | Longitude in decimal degrees; only read together with lat. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| productId | string |
| variantId | string |
| storeScope | string |
| storeId | string |
| vendorProductId | string |
| productName | string |
| brand | string |
| price | number |
| mrp | number |
| discountPct | number |
| packSize | string |
| inStock | boolean |
| stockCount | integer |
| rating | number |
| ratingCount | integer |
| category | string |
| rank | integer |
| sponsored | boolean |
| images | list of string |
| productUrl | string |
| description | string |
| countryOfOrigin | string |
| manufacturer | string |
| seller | string |
| specifications | any |
| latitude | number |
| longitude | number |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/zepto \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"Tata Salt","store":{"city":"Delhi","pincode":"110001"},"limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "productName": "Dish Wash Liquid, Lemon",
    "brand": "Shinex",
    "price": 99,
    "mrp": 115,
    "discountPct": 14,
    "packSize": "500 ml",
    "inStock": true,
    "category": "Cleaning",
    "rank": 1,
    "rating": 4.3,
    "ratingCount": 1200,
    "productId": "213580421",
    "variantId": "381638891",
    "storeId": "4133013222",
    "vendorProductId": "3270065864",
    "images": [
      "https://img.zeptonow.com/dish-wash-liquid-lemon.jpg"
    ],
    "productUrl": "https://www.zeptonow.com/dish-wash-liquid-lemon-1000",
    "details": {}
  },
  {
    "productName": "Dish Wash Bar",
    "brand": "Shinex",
    "price": 30,
    "mrp": 30,
    "discountPct": 0,
    "packSize": "200 g",
    "inStock": true,
    "category": "Cleaning",
    "rank": 2,
    "rating": 4.3,
    "ratingCount": 1200,
    "productId": "1242557009",
    "variantId": "962932821",
    "storeId": "265047964",
    "vendorProductId": "4128143963",
    "images": [
      "https://img.zeptonow.com/dish-wash-bar.jpg"
    ],
    "productUrl": "https://www.zeptonow.com/dish-wash-bar-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=zepto&op=search (sign in first).

### category

One category page at one store. Names must be the app's own menu names; a name that is not on the menu is refused and nothing is charged.

| Field | Required | Type | Meaning |
|---|---|---|---|
| category | yes | string (≤80 chars) | The top-level aisle as the app names it ("Dairy, Bread & Eggs"). |
| subCategory | yes | string (≤80 chars) | The shelf inside it, again as the app names it ("Milk"). Both are required: the listing is one shelf at one store. |
| store | yes | object |  |
| store.storeId | no | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | no | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | no | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | no | number | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | no | number | Longitude in decimal degrees; only read together with lat. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| productId | string |
| variantId | string |
| storeScope | string |
| storeId | string |
| vendorProductId | string |
| productName | string |
| brand | string |
| price | number |
| mrp | number |
| discountPct | number |
| packSize | string |
| inStock | boolean |
| stockCount | integer |
| rating | number |
| ratingCount | integer |
| category | string |
| rank | integer |
| sponsored | boolean |
| images | list of string |
| productUrl | string |
| description | string |
| countryOfOrigin | string |
| manufacturer | string |
| seller | string |
| specifications | any |
| latitude | number |
| longitude | number |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/zepto \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"category","category":"Atta Rice Oil Dals","subCategory":"Atta","store":{"city":"Bengaluru","pincode":"560001"},"limit":50}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "productName": "Potato Chips, Salted",
    "brand": "Crunchio",
    "price": 20,
    "mrp": 20,
    "discountPct": 0,
    "packSize": "52 g",
    "inStock": true,
    "category": "Snacks",
    "rank": 1,
    "rating": 4.3,
    "ratingCount": 1200,
    "productId": "1498328296",
    "variantId": "2377874407",
    "storeId": "3345945435",
    "vendorProductId": "1303579314",
    "images": [
      "https://img.zeptonow.com/potato-chips-salted.jpg"
    ],
    "productUrl": "https://www.zeptonow.com/potato-chips-salted-1000",
    "details": {}
  },
  {
    "productName": "Roasted Peanuts",
    "brand": "Nutbox",
    "price": 55,
    "mrp": 60,
    "discountPct": 8,
    "packSize": "200 g",
    "inStock": true,
    "category": "Snacks",
    "rank": 2,
    "rating": 4.3,
    "ratingCount": 1200,
    "productId": "877985001",
    "variantId": "2418411808",
    "storeId": "3612682689",
    "vendorProductId": "4241202604",
    "images": [
      "https://img.zeptonow.com/roasted-peanuts.jpg"
    ],
    "productUrl": "https://www.zeptonow.com/roasted-peanuts-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=zepto&op=category (sign in first).

### history (free)

The stored price/stock series of products already held at a store. Free.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) |  |
| store | yes | object |  |
| store.storeId | no | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | no | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | no | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | no | number | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | no | number | Longitude in decimal degrees; only read together with lat. |
| metric | no | enum |  Values: price, mrp, discount_pct, stock_count, rating, rating_count. |
| days | no | integer (1-730) |  |

Request shape:

```json
{
  "op": "history",
  "subjects": [
    "example"
  ],
  "store": {
    "pincode": "560001"
  }
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=zepto&op=history (sign in first).

## Notes for the agent

Measured Zepto data, one operation per call. A product's price and stock at ONE dark store, right now. Every op takes `store`: a storeId, or a pincode (with city), or lat/lon. Prices, MRP, discounts and stock are per store and every fetch adds a point to that product's price history at that store. ops: products (full detail for up to ten zepto.com product URLs at the store. Price, MRP, discount, stock count, rating, seller, manufacturer, specifications), search (what a shopper at that store sees for a query. Listings with price, stock and rank), category (one page of the app's own menu at that store; names must match the app exactly, e.g. category "Atta Rice Oil Dals", subCategory "Atta". The pair must belong together), history (stored price/stock series for products already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.


---

# Indeed API for agents

> API for Agents · https://apiforagents.dev/platforms/indeed · HTML twin: https://apiforagents.dev/platforms/indeed

Job search and job listings from Indeed, by country.

Endpoint: `POST https://apiforagents.dev/v1/indeed`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| jobs | $0.000045 |

## Operations

### search

Search Indeed the way a seeker would. Keyword and place, with Indeed's own filters. Every hit is a full posting with salary, skills and employer signals.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) |  |
| location | no | string (≤120 chars) |  |
| country | no | enum |  Values: US, GB, CA, AU, IN, DE, FR, JP, BR, MX, IT, ES, NL, BE, CH, AT, SG, HK, IE, NZ, AR, CL, CO. |
| workplace | no | list of enum | Indeed filters remote only; hybrid/onsite are not filterable there. Values: remote. |
| employmentType | no | list of enum |  Values: full_time, part_time, contract, internship, temporary. |
| postedWithin | no | enum |  Values: 1d, 3d, 7d, 15d, 30d, any. |
| sort | no | enum |  Values: relevance, newest. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| jobId | string |
| jobUrl | string |
| applyUrl | string |
| jobTitle | string |
| normalizedTitle | string |
| companyName | string |
| companyKey | string |
| company | any |
| jobDescription | string |
| employmentType | list of string |
| workplaceType | string |
| workSetting | list of string |
| shift | list of string |
| experienceLevel | string |
| educationLevel | string |
| salaryText | string |
| salaryMin | number |
| salaryMax | number |
| salaryCurrency | string |
| salaryPeriod | string |
| posted | string |
| applyStarts | string |
| city | string |
| state | string |
| country | string |
| postalCode | string |
| streetAddress | string |
| fullAddress | string |
| latitude | number |
| longitude | number |
| skills | list of string |
| certifications | list of string |
| benefits | list of string |
| eligibility | list of string |
| physicalRequirements | list of string |
| travel | list of string |
| occupation | string |
| occupationCategories | list of string |
| sponsored | boolean |
| urgentHire | boolean |
| highVolumeHiring | boolean |
| numberOfHires | string |
| employerResponseRate | number |
| employerAvgResponseTimeDays | number |
| employerResponsive | boolean |
| sourceName | string |
| sourceType | string |
| language | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/indeed \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"software engineer","location":"Austin, TX","country":"US","postedWithin":"7d","limit":10}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "jobTitle": "Barista",
    "companyName": "Brewlab Coffee",
    "city": "Austin",
    "state": "TX",
    "country": "US",
    "employmentType": "Part-time",
    "workplaceType": "On-site",
    "salaryText": "$16 – $19 an hour",
    "salaryMin": 16,
    "salaryMax": 19,
    "salaryCurrency": "USD",
    "salaryPeriod": "hour",
    "posted": "2026-10-14",
    "jobId": "3889282693",
    "jobUrl": "https://www.indeed.com/barista-1000",
    "applyUrl": "https://www.indeed.com/barista-1000",
    "companyKey": "barista",
    "details": {}
  },
  {
    "jobTitle": "Shift Supervisor, Coffee Bar",
    "companyName": "Daily Grind",
    "city": "Austin",
    "state": "TX",
    "country": "US",
    "employmentType": "Full-time",
    "workplaceType": "On-site",
    "salaryText": "$19 – $22 an hour",
    "salaryMin": 19,
    "salaryMax": 22,
    "salaryCurrency": "USD",
    "salaryPeriod": "hour",
    "posted": "2026-10-13",
    "jobId": "2184679905",
    "jobUrl": "https://www.indeed.com/shift-supervisor-coffee-bar-1001",
    "applyUrl": "https://www.indeed.com/shift-supervisor-coffee-bar-1001",
    "companyKey": "shift-supervisor-coffee-bar",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=indeed&op=search (sign in first).

### jobs

Full postings for up to ten Indeed job keys or job URLs.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Job keys or job URLs. |
| country | no | enum |  Values: US, GB, CA, AU, IN, DE, FR, JP, BR, MX, IT, ES, NL, BE, CH, AT, SG, HK, IE, NZ, AR, CL, CO. |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| jobId | string |
| jobUrl | string |
| applyUrl | string |
| jobTitle | string |
| normalizedTitle | string |
| companyName | string |
| companyKey | string |
| company | any |
| jobDescription | string |
| employmentType | list of string |
| workplaceType | string |
| workSetting | list of string |
| shift | list of string |
| experienceLevel | string |
| educationLevel | string |
| salaryText | string |
| salaryMin | number |
| salaryMax | number |
| salaryCurrency | string |
| salaryPeriod | string |
| posted | string |
| applyStarts | string |
| city | string |
| state | string |
| country | string |
| postalCode | string |
| streetAddress | string |
| fullAddress | string |
| latitude | number |
| longitude | number |
| skills | list of string |
| certifications | list of string |
| benefits | list of string |
| eligibility | list of string |
| physicalRequirements | list of string |
| travel | list of string |
| occupation | string |
| occupationCategories | list of string |
| sponsored | boolean |
| urgentHire | boolean |
| highVolumeHiring | boolean |
| numberOfHires | string |
| employerResponseRate | number |
| employerAvgResponseTimeDays | number |
| employerResponsive | boolean |
| sourceName | string |
| sourceType | string |
| language | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/indeed \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"jobs","subjects":["https://www.indeed.com/viewjob?jk=<job-key>"],"country":"US"}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "jobTitle": "Customer Success Manager",
    "companyName": "Northfold",
    "city": "London",
    "country": "GB",
    "employmentType": "Full-time",
    "workplaceType": "Hybrid",
    "salaryText": "£45,000 – £55,000 a year",
    "salaryMin": 45000,
    "salaryMax": 55000,
    "salaryCurrency": "GBP",
    "salaryPeriod": "year",
    "posted": "2026-10-14",
    "state": null,
    "jobId": "982748018",
    "jobUrl": "https://www.indeed.com/customer-success-manager-1000",
    "applyUrl": "https://www.indeed.com/customer-success-manager-1000",
    "companyKey": "customer-success-manager",
    "details": {}
  },
  {
    "jobTitle": "Senior Data Analyst",
    "companyName": "Kitebank",
    "city": "Austin",
    "country": "US",
    "employmentType": "Full-time",
    "workplaceType": "Remote",
    "salaryText": "$110,000 – $135,000 a year",
    "salaryMin": 110000,
    "salaryMax": 135000,
    "salaryCurrency": "USD",
    "salaryPeriod": "year",
    "posted": "2026-10-12",
    "state": "TX",
    "jobId": "1707840656",
    "jobUrl": "https://www.indeed.com/senior-data-analyst-1001",
    "applyUrl": "https://www.indeed.com/senior-data-analyst-1001",
    "companyKey": "senior-data-analyst",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=indeed&op=jobs (sign in first).

## Notes for the agent

Measured Indeed job data, one operation per call. ops: search (query + location on one country's Indeed, with workplace, employmentType, postedWithin and sort filters. Every hit a full posting: title, company with industry and size, salary range and period, employment type, workplace type, skills, benefits, hiring signals like urgent-hire and employer response rate, apply link), jobs (full postings for up to ten job keys or job URLs). Fresh fetches are charged per record; your own answer is free while fresh.


---

# Naukri API for agents

> API for Agents · https://apiforagents.dev/platforms/naukri · HTML twin: https://apiforagents.dev/platforms/naukri

Job search from Naukri with the board's own filters.

Endpoint: `POST https://apiforagents.dev/v1/naukri`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| job | $0.0018 |

## Operations

### search

Search Naukri. A keyword (or a pasted Naukri search URL) with the board's own filters. Coded filters (department, roleCategory, industry, companyType, topCompanies, ugCourse, pgCourse) take Naukri's numeric ids, as the site's URLs carry them.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) | A keyword, or a pasted Naukri search URL. |
| postedWithin | no | enum |  Values: 1d, 3d, 7d, 15d, 30d, any. |
| sort | no | enum |  Values: relevance, newest. |
| experience | no | string (pattern `^(all|[0-9]|1[0-9]|2[0-3])$`) | Years of experience, "all" or "0".."23". |
| workplace | no | list of enum |  Values: onsite, remote, hybrid, temporary_wfh. |
| salaryMin | no | integer (0-1000) | Lakhs per annum; mapped onto Naukri's salary bands. |
| salaryMax | no | integer (0-1000) | Upper bound in lakhs per annum; with salaryMin, the bands that overlap the range are searched. |
| locations | no | list of string (each ≤60 chars) |  |
| department | no | list of string (each ≤20 chars) | Naukri's own department codes (the numbers in its filter URLs, e.g. "5" for Engineering). Any of them matches. Empty = every department. |
| roleCategory | no | list of string (each ≤20 chars) | Naukri's role-category codes, narrower than a department. Empty = all. |
| industry | no | list of string (each ≤20 chars) | Naukri's industry codes. Empty = every industry. |
| companyType | no | list of string (each ≤20 chars) | Naukri's company-type codes (corporate, startup, MNC…). Empty = all. |
| topCompanies | no | list of string (each ≤20 chars) | Naukri's top-company group codes, to keep only well-known employers. Empty = all companies. |
| postedBy | no | list of enum | Who posted the job: the company itself, a consultant, or both when empty. Values: company, consultant. |
| ugCourse | no | list of string (each ≤20 chars) | Naukri's undergraduate-degree codes the posting asks for. Empty = any. |
| pgCourse | no | list of string (each ≤20 chars) | Naukri's postgraduate-degree codes the posting asks for. Empty = any. |
| fetchDetails | no | boolean | Pull each posting's full description and requirements. Slower. |
| limit | no | integer (50-200) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| jobId | string |
| jobUrl | string |
| applyUrl | string |
| jobTitle | string |
| company | string |
| companyId | string |
| companyDetails | any |
| hiringFor | string |
| location | string |
| description | string |
| requirementsSummary | string |
| skills | string |
| role | string |
| roleCategory | string |
| department | string |
| industry | string |
| jobType | string |
| workplaceType | string |
| hybridDetail | string |
| minExperienceYrs | integer |
| maxExperienceYrs | integer |
| salaryMin | number |
| salaryMax | number |
| benchmarkMinCtcLakhs | number |
| benchmarkAvgCtcLakhs | number |
| benchmarkMaxCtcLakhs | number |
| benchmarkRole | string |
| benchmarkSalariesUrl | string |
| educationUg | string |
| educationPg | string |
| posted | string |
| applicants | integer |
| views | integer |
| vacancies | integer |
| appliesOnCompanySite | boolean |
| postedByConsultant | boolean |
| listingSource | string |
| referenceCode | string |
| hasQuestionnaire | boolean |
| walkInJob | boolean |
| walkInStart | string |
| walkInEnd | string |
| walkInVenue | string |
| walkInTiming | string |
| walkInContact | string |
| walkInPhone | string |
| internshipDuration | string |
| diversityTags | string |
| benefits | string |
| employeeReviews | any |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/naukri \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"data scientist","postedWithin":"7d","experience":"3","locations":["Bengaluru"],"limit":50}'
```

Example response rows (real rows, business data; a live row carries every field above):

```json
[
  {
    "jobId": "060926000168",
    "jobUrl": "https://www.naukri.com/job-listings-artificial-intelligence-engineer-bangalore-ai-ml-data-science-shadowfax-technologies-bengaluru-1-to-6-years-060926000168",
    "jobTitle": "Artificial Intelligence Engineer-Bangalore (AI/ ML/ Data Science)",
    "company": "Shadowfax Technologies",
    "companyId": "2449574",
    "companyDetails": {
      "hq": "Bengaluru, India",
      "logo": "https://img.naukimg.com/logo_images/groups/v1/4625023.gif",
      "name": "Shadowfax Technologies",
      "about": "Shadowfax is Indias leading on-demand tech-backed gig marketplace that helps businessesoutsource last mile activities. Shadowfax employs tech-enabled solutions like ML and AI to offersupply that keeps pace with demand in the fast-growing and highly fragmented hyperlocaldistribution ecosystem and ensures a wonderful end-user experience.The Shadowfax app has over two million downloads, and is designed as an immersive platform fordelivery and is a single app that works across multiple platforms. The app is used as a channel forguaranteed earnings across multiple E-com and Hyperlocal platforms. Shadowfax has beenconsistently widening its area of operations by expanding in E-commerce and Hyperlocalsegments and getting into new growth areas like grocery distribution.Shadowfax has extremely friendly people and partnership policies that are designed to be highlyempathetic and are always looking for ways to make the riders lives better, and transform theappeal of delivery and other blue-collar jobs as an attractive career option. Working with theShadowfax platform ensures strong earning potential along with a high degree of flexibility andfreedom along with financial support services like loans, and insurance.In October 2021, Shadowfax launched Indias first delivery SuperApp to accelerate the growth ofdeliverypartners by empowering them to access multiple opportunities via a single platform.Shadowfax was co-founded by Abhishek Bansal, Gaurav Jaithliya, Praharsh Chandra, andVaibhav Khandelwal in 2015. Over the last seven years, it has now grown to a team size of closeto 5000 employeeswith 1.25 Lakhs+daily active users (delivery partners) in more than 1100+ citiesin India, fulfilling 20 millionorders per month across 100+ leading brands in 9500+ pin codesOur clients are present across sectors like e-commerce, food, grocery, FMCG,lectronics,consumer durables, pharma, apparel, auto, BFSI and Insurance etc.We foster a culture that values first principle thinking and problem solving, encouragesconstructive feedback, engagement, inclusion and diversity at all levels. Our core values defineour identity and form the basis of our actions and reflect in everything that we do at Shadowfax.",
      "rating": 3.5,
      "address": "77/A,3RD FLOOR,CYGNUS CHAMBERS,JYOTHI NIVAS COLLEG  , BANGALORE, Karnataka, India",
      "jobsUrl": "https://www.naukri.com/shadowfax-technologies-jobs-careers-1836376",
      "website": "https://www.shadowfax.in",
      "reviewsUrl": "https://www.ambitionbox.com/reviews/shadowfax-technologies-reviews",
      "reviewCount": 2157,
      "naukriFollowers": 105189
    },
    "location": "Bengaluru",
    "description": "Artificial Intelligence Engineer  AI/ML Location: Bengaluru, KarnatakaWork Mode: Full-time, On-siteExperience: 1+ yearsJoining: Immediate joiners preferredRole OverviewWe are looking for an Artificial Intelligence Engineer with 1+ years of experience in AI/ML, Data Science, AI tools, and software development frameworks to join our team in Bengaluru.The ideal candidate should have hands-on experience with Python, SQL, Excel, AI tools, and data analytics, along with an understanding of either frontend or backend development frameworks. The candidate will work on AI-driven business and analytics projects across Supply Chain Management (SCM), Quick Commerce, Logistics, and Network Planning.This role requires someone who can combine technical AI/ML capabilities with business understanding, analyze large datasets, develop analytical solutions, prepare management reports, and translate business problems into technology-driven solutions.Key ResponsibilitiesDevelop and implement AI/ML and data science solutions for real-world business and operational problems.Work on AI-driven use cases across SCM, logistics, quick commerce, network planning, and supply chain analytics.Analyze structured and unstructured data using Python and SQL.Build data pipelines, analytical models, and automation solutions to support business decision-making.Use AI/GenAI tools to improve data analysis, reporting, automation, research, and operational productivity.Develop predictive and analytical models for areas such as demand, capacity, network optimization, manpower, inventory, delivery, and operational performance.Work with frontend or backend frameworks to integrate AI/analytics solutions into business applications.Develop APIs, backend services, dashboards, or analytical interfaces as required.Extract, transform, validate, and analyze data from multiple sources.Prepare MIS reports, analytical reports, dashboards, and management presentations.Build automated reporting solutions using Python, SQL, Excel, and Power BI or similar tools.Perform exploratory data analysis and identify trends, patterns, anomalies, and business opportunities.Collaborate with business, operations, finance, SCM, and technology teams to understand requirements and deliver analytical solutions.Convert business requirements into data-driven and AI-enabled solutions.Conduct model performance analysis and continuously improve analytical solutions.Document methodologies, models, processes, and business insights.Support rapid prototyping and Proof of Concepts (PoCs) using emerging AI technologies.Key Project AreasThe candidate will have the opportunity to work on projects involving:Supply Chain Management (SCM)Supply chain analyticsDemand and capacity planningInventory analyticsSupply-demand matchingOperational optimizationQuick CommerceDark-store / fulfillment analyticsDemand forecastingDelivery and capacity optimizationOrder and customer analyticsInventory and availability analyticsLogisticsRoute and delivery analyticsNetwork optimizationShipment analyticsTransportation planningCost and productivity analyticsNetwork PlanningNetwork design and optimizationCapacity planningLocation and hub analysisNetwork cost optimizationDemand and capacity modelingTechnical SkillsMust HavePython – strong programming and data-analysis skills.SQL – strong understanding of queries, joins, aggregations, CTEs, subqueries, and data manipulation.Practical knowledge of AI/ML and Data Science concepts.Hands-on experience using AI/GenAI tools for analysis, coding, automation, research, or productivity.Strong Excel skills, including Pivot Tables, lookup functions, data analysis, and reporting.Good understanding of data cleaning, transformation, visualization, and exploratory data analysis.Experience in preparing reports, dashboards, and management insights.Frontend / BackendExperience with at least one frontend or backend technology/framework is preferred:FastAPI / Flask / DjangoNode.jsReact / AngularREST APIsBackend application developmentWeb application integrationKnowledge of integrating AI/ML models with applications or APIs will be an advantage.AI / ML SkillsExposure to one or more of the following will be preferred:Machine LearningGenerative AILarge Language Models (LLMs)Prompt EngineeringAI AgentsRAG-based applicationsNLPPredictive AnalyticsRecommendation systemsForecastingOptimization algorithmsModel deployment and APIsAI-assisted automationExperience with tools such as ChatGPT, GitHub Copilot, Gemini, Claude, or similar AI productivity/development tools is desirable.Good to HavePower BI or Tableau.Pandas, NumPy, Scikit-learn.Git/GitHub.Cloud platforms such as AWS, Azure, or GCP.Basic understanding of Docker and APIs.Exposure to optimization, forecasting, or operations research.Experience with SCM, logistics, quick commerce, e-commerce, transportation, or network planning.Understanding of business KPIs and operational metrics.Ideal Candidate ProfileWe are looking for a candidate who:Has a strong problem-solving and analytical mindset.Can understand a business problem and translate it into a data/AI solution.Has good pedagogy and communication skills and can explain technical concepts clearly to business stakeholders.Is comfortable working with both technology and business teams.Can independently analyze data and present actionable insights.Is curious about emerging AI technologies and tools and actively experiments with new solutions.Has strong attention to detail and ownership of deliverables.Can work in a fast-paced environment with multiple projects and stakeholders.Is comfortable preparing reports and presenting findings to management.Is a quick learner and hands-on problem solver.Education & ExperienceBachelor's/Master's degree in Computer Science, Information Technology, Engineering, Data Science, Artificial Intelligence, Statistics, Mathematics, or a related discipline.1+ years of relevant experience in AI/ML, Data Science, Analytics, Software Development, or AI Engineering.Candidates with project experience in SCM, logistics, quick commerce, e-commerce, transportation, or network planning will have an added advantage.Immediate joiners or candidates with a short notice period are strongly preferred.Key Skills good to have.Artificial Intelligence | Machine Learning | Data Science | Generative AI | Python | SQL | Excel | AI Tools | Frontend | Backend | APIs | FastAPI | Flask | Data Analytics | Power BI | Supply Chain | SCM | Quick Commerce | Logistics | Network Planning | Forecasting | Optimization | Automation | Reporting | Business Analytics",
    "requirementsSummary": "1+ years experience in AI/ML, Data Science with strong Python, SQL, AI/GenAI tools skills and knowledge of frontend/backend frameworks|Develop AI/ML solutions for SCM, logistics, quick commerce, and network planning; analyze data; build models, pipelines, and dashboards; integrate AI with applications; prepare reports and presentations",
    "skills": "Predictive Modeling, Artificial Intelligence, Machine Learning, Python, Data Science, Advanced Analytics, Natural Language Processing, Statistical Modeling, Deep Learning, SQL",
    "role": "Data Scientist",
    "roleCategory": "Data Science & Machine Learning",
    "department": "Data Science & Analytics",
    "industry": "Courier / Logistics (Logistics Tech)",
    "jobType": "Full Time",
    "workplaceType": null,
    "minExperienceYrs": 1,
    "maxExperienceYrs": 6,
    "salaryMin": null,
    "salaryMax": null,
    "benchmarkSalariesUrl": "https://www.ambitionbox.com/salaries/shadowfax-technologies-salaries",
    "educationUg": "Any Graduate",
    "posted": "2026-09-05T20:01:45+00:00",
    "applicants": 1103,
    "views": 1347,
    "vacancies": 2,
    "postedByConsultant": false,
    "listingSource": "jp",
    "walkInJob": false,
    "benefits": "Learning & Development Support, Health & Wellness Support, Transport / Travel Support, Free Meal, Performance Bonus, Relocation Assistance",
    "employeeReviews": [
      {
        "url": "https://www.ambitionbox.com/reviews/shadowfax-technologies-reviews?rid=80713252&utm_source=naukri&utm_campaign=jd_reviews",
        "date": "12 Aug 2026",
        "likes": "Salary step and work time soo good",
        "title": "Calling Agent in Jaipur",
        "rating": "5",
        "dislikes": null
      },
      {
        "url": "https://www.ambitionbox.com/reviews/shadowfax-technologies-reviews?rid=80669235&utm_source=naukri&utm_campaign=jd_reviews",
        "date": "09 Aug 2026",
        "likes": "Working experience is cool not di",
        "title": "Accountant&dataentryoperator in Prayagraj",
        "rating": "4",
        "dislikes": null
      },
      {
        "url": "https://www.ambitionbox.com/reviews/shadowfax-technologies-reviews?rid=80657456&utm_source=naukri&utm_campaign=jd_reviews",
        "date": "08 Aug 2026",
        "likes": "Very good i like you shadowfax",
        "title": "Logistics Manager in New Delhi",
        "rating": "5",
        "dislikes": null
      }
    ],
    "details": {}
  },
  {
    "jobId": "050926015054",
    "jobUrl": "https://www.naukri.com/job-listings-software-developer-pragmatechnology-bengaluru-0-to-5-years-050926015054",
    "jobTitle": "Software Developer",
    "company": "Pragmatechnology",
    "companyId": "125779112",
    "companyDetails": {
      "hq": null,
      "logo": "https://img.naukimg.com/logo_images/groups/v1/12489238.gif",
      "name": "Pragmatechnology",
      "about": "We are a tech based startup working from the middle east, We have a large number of remote workers working from India. We are in the pre-seed round and are looking to raise funds by March and want someone to work on the brand image of the company before then.",
      "rating": null,
      "address": "Anand Vihar T C Road Kuthuparamba Kannur Thalassery Kuthuparamba KANNUR Kerala India 670643, KANNUR, Kerala, India",
      "jobsUrl": "https://www.naukri.com/pragmatechnology-jobs-careers-125779112",
      "website": null,
      "reviewsUrl": null,
      "reviewCount": null,
      "naukriFollowers": null
    },
    "location": "Bengaluru",
    "description": "* We're Hiring: Senior Tech Developer (JS/Node/Native)**Are you a passionate full-stack developer ready to make an impact? We're looking for a **Senior Tech Developer** to join our growing team based in India!**About The Role:**We're seeking an experienced developer who excels across our tech stack  building robust backend services, scalable applications, and native mobile experiences. This is a hands-on role where you'll take ownership of technical decisions, mentor junior developers, and directly influence our product direction.**What We're Looking For:** Strong expertise in **JavaScript & Node.js** - comfortable building and optimizing server-side applications Proven experience with **React Native** or native mobile development (iOS/Android) Ability to architect scalable solutions across frontend and backend Experience mentoring team members and leading technical projects Strong understanding of databases, APIs, and system design Problem-solving mindset with attention to code quality and best practices Collaborative spirit and excellent communication skills**Experience & Compensation:** **1-3 years experience:** 60,000/month **3-5 years experience:** Up to 1,00,000/monthCompensation is based on your experience level, portfolio, and demonstrated expertise.**Why Join Us?** Competitive salary aligned with market standards Work on full-stack projects (backend + mobile) Growth and learning opportunities Collaborative, tech-forward environment Opportunity to make an immediate impact**Interested?**Comlete this test https://www.pragmatechnology.in/apply/poisoned#Hiring #JavaScript #NodeJS #ReactNative #TechJobs #SeniorDeveloper #India #FullStack",
    "requirementsSummary": "Expertise in JavaScript, Node.js, and React Native with 1-5 years experience|Build scalable backend services and native mobile apps, mentor juniors, lead technical projects|Salary ₹60,000-₹1,00,000/month based on experience",
    "skills": "ERP, Openerp, ERP Implementation, SAP ERP Implementation",
    "role": "ERP Developer",
    "roleCategory": "Software Development",
    "department": "Engineering - Software & QA",
    "industry": "Emerging Technologies (AI/ML)",
    "jobType": "Full Time",
    "workplaceType": "Remote",
    "minExperienceYrs": 0,
    "maxExperienceYrs": 5,
    "salaryMin": null,
    "salaryMax": null,
    "benchmarkSalariesUrl": null,
    "educationUg": "Any Graduate",
    "posted": "2026-09-05T15:54:00+00:00",
    "applicants": 2395,
    "views": 2803,
    "vacancies": 1,
    "postedByConsultant": false,
    "listingSource": "jp",
    "walkInJob": false,
    "benefits": null,
    "employeeReviews": null,
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=naukri&op=search (sign in first).

### history (free)

Stored applicant/view series of postings already held. Free.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) |  |
| metric | no | enum |  Values: applicants, views, vacancies. |
| days | no | integer (1-730) |  |

Request shape:

```json
{
  "op": "history",
  "subjects": [
    "example"
  ]
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=naukri&op=history (sign in first).

## Notes for the agent

Measured Naukri job data, one operation per call. ops: search (a keyword or a pasted Naukri search URL, with the board's own filters. PostedWithin, sort, experience, workplace, salaryMin/Max in lakhs, locations, and Naukri's coded department/role/industry/company filters; every hit a full posting with skills, experience band, salary or benchmark CTC, applicants and views, walk-in details, company profile; minimum 50 rows per search, which is what it bills), history (stored applicant/view series of postings already held, by job id or URL, free). Fresh fetches are charged per record; your own answer is free while fresh.


---

# Upwork API for agents

> API for Agents · https://apiforagents.dev/platforms/upwork · HTML twin: https://apiforagents.dev/platforms/upwork

Job search from Upwork with its own filters.

Endpoint: `POST https://apiforagents.dev/v1/upwork`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| jobs | $0.0027 |

## Operations

### search

Search Upwork jobs with the marketplace's own filters. Every hit a full posting with budget, client profile and proposal counts.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) |  |
| sort | no | enum |  Values: relevance, newest. |
| includeHourly | no | boolean | Keep hourly-rate jobs. Set both this and includeFixed false and nothing matches. |
| hourlyMin | no | integer (0-) | USD per hour. |
| hourlyMax | no | integer (0-) | USD per hour, the upper bound; only hourly jobs are affected. |
| includeFixed | no | boolean | Keep fixed-price jobs. |
| budgetMin | no | integer (0-) | USD, the fixed-price budget. |
| budgetMax | no | integer (0-) | USD, the fixed-price budget's upper bound; only fixed jobs are affected. |
| experienceLevel | no | list of enum | The level the client asked for. Any listed level matches; empty = all. Values: entry, intermediate, expert. |
| clientHistory | no | list of enum | How many jobs the client has hired for before: none, 1-9, or 10+. Empty = any client. Values: 0, 1-9, 10-. |
| projectLength | no | list of enum | Expected duration: under a week, under a month, 1-6 months, or ongoing (6+). Empty = any length. Values: week, month, semester, ongoing. |
| hoursPerWeek | no | list of enum | Weekly commitment: part-time (under 30 h) or full-time (30 h+). Empty = either. Values: part_time, full_time. |
| clientLocation | no | list of string (each ≤60 chars) | Client countries, as Upwork spells them ("United States"). |
| limit | no | integer (5-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| jobId | string |
| jobUrl | string |
| jobTitle | string |
| jobDescription | string |
| posted | string |
| deadline | string |
| jobType | string |
| projectType | string |
| projectLength | string |
| weeklyWorkload | string |
| hourlyRateMin | number |
| hourlyRateMax | number |
| fixedBudget | number |
| hourlyBudgetSource | string |
| experienceLevel | string |
| englishLevel | string |
| skills | any |
| skillGroups | list of string |
| category | string |
| categoryGroup | string |
| occupation | string |
| applicants | integer |
| interviewing | integer |
| invitesSent | integer |
| unansweredInvites | integer |
| hired | integer |
| positionsToHire | integer |
| jobStatus | string |
| jobAccess | string |
| contractToHire | boolean |
| featuredJob | boolean |
| localMarketJob | boolean |
| locationCheckRequired | boolean |
| risingTalentOk | boolean |
| minJobSuccessScore | number |
| freelancerType | string |
| requiredCountries | string |
| requiredRegions | string |
| requiredTimezones | string |
| requiredLanguages | string |
| client | any |
| clientOtherOpenPostings | any |
| similarJobs | any |
| resultRank | integer |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/upwork \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"shopify developer","sort":"newest","experienceLevel":["expert"],"clientLocation":["United States"],"limit":10}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "jobTitle": "Build a Shopify product feed sync",
    "jobType": "fixed",
    "fixedBudget": 800,
    "experienceLevel": "intermediate",
    "projectLength": "1 to 3 months",
    "skills": [
      "Shopify",
      "Node.js",
      "APIs"
    ],
    "applicants": "10 to 15",
    "posted": "2026-10-15",
    "hourlyRateMin": null,
    "hourlyRateMax": null,
    "jobId": "2355543097",
    "jobUrl": "https://www.upwork.com/build-a-shopify-product-feed-sync-1000",
    "details": {}
  },
  {
    "jobTitle": "Shopify theme speed fixes",
    "jobType": "hourly",
    "fixedBudget": null,
    "experienceLevel": "expert",
    "projectLength": "Less than 1 month",
    "skills": [
      "Shopify",
      "Liquid",
      "Web performance"
    ],
    "applicants": "5 to 10",
    "posted": "2026-10-14",
    "hourlyRateMin": 30,
    "hourlyRateMax": 60,
    "jobId": "2614115498",
    "jobUrl": "https://www.upwork.com/shopify-theme-speed-fixes-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=upwork&op=search (sign in first).

### history (free)

Stored proposal-count series of postings already held. Free.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) |  |
| metric | no | enum |  Values: applicants, interviewing, invites_sent, hired. |
| days | no | integer (1-730) |  |

Request shape:

```json
{
  "op": "history",
  "subjects": [
    "example"
  ]
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=upwork&op=history (sign in first).

## Notes for the agent

Measured Upwork job data, one operation per call. ops: search (a query with Upwork's own filters. Sort, hourly rate and fixed budget bounds, experience level, client hiring history, project length, hours per week, client country; every hit a full posting with budget, skills, the client's profile and spend, and live proposal counts: applicants, interviewing, invites, hired), history (stored proposal-count series of postings already held, by job id or URL, free). Fresh fetches are charged per record; your own answer is free while fresh.


---

# Contacts API for agents

> API for Agents · https://apiforagents.dev/platforms/contacts · HTML twin: https://apiforagents.dev/platforms/contacts

A person's work email and mobile number, by LinkedIn handle.

Endpoint: `POST https://apiforagents.dev/v1/contacts`. One op per call. Quote first with `"estimateOnly": true`.

## Prices

Priced per request; the capabilities endpoint prints the rate and every call can be quoted first.

## Operations

### reveal

Work email and mobile number for up to ten people, by LinkedIn /in/ handle or profile URL. A reveal is the BUYER'S asset: billed per person and per part, owned by your org, never shared with another org. A part you already own is free; only the missing part is bought.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | /in/<slug> handles or profile URLs. |
| reveal | no | list of enum | Which parts to reveal. Both by default. A contact is an email AND a number; a phone is five emails' worth, so ask ["email"] when unneeded. Values: email, phone. |
| verify | no | boolean | Verify each email found before it counts: an address a verifier calls invalid is kept as a fact but does not satisfy the ask, and the next source is tried. A verdict costs a fraction of a cent per address. |
| tryAnotherSource | no | boolean | "What I hold is wrong. Get me another." EVERY part in reveal that your org holds is marked wrong and bought again from a source other than the one that gave it, at that part's price. So list only the part that is wrong. One call is one step: the next source's answer is returned even when it is the same value (flagged); ask again to go one source further. Marking is free and final. A part you do not hold is simply revealed. |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| publicId | string |
| profileUrl | string |
| name | string |
| title | string |
| company | string |
| emails | list of object |
| phones | list of object |
| firstName | string |
| lastName | string |
| headline | string |
| location | object |
| currentCompany | object |
| experience | list of object |
| education | list of object |
| skills | list of string |
| languages | list of object |
| linkedinUrl | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/contacts \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reveal","subjects":["satyanadella"],"reveal":["email"]}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "publicId": "ananya-rao",
    "profileUrl": "https://www.linkedin.com/in/ananya-rao",
    "emails": [
      {
        "value": "ananya.rao@paylane.example",
        "type": "work",
        "status": "verified"
      }
    ],
    "phones": [
      {
        "value": "+91 98450 00000",
        "type": "mobile"
      }
    ],
    "details": {}
  },
  {
    "publicId": "marcus-lee",
    "profileUrl": "https://www.linkedin.com/in/marcus-lee",
    "emails": [
      {
        "value": "marcus@northfold.example",
        "type": "work",
        "status": "verified"
      }
    ],
    "phones": [
      {
        "value": "+44 7700 900123",
        "type": "mobile"
      }
    ],
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=contacts&op=reveal (sign in first).

## Notes for the agent

A person's work email and mobile number, by LinkedIn handle. And the two follow-ups people ask for: • "This number / email is wrong, give me another" → reveal again with tryAnotherSource=true and reveal=[that part ONLY]. Every part listed is marked wrong and bought again from a DIFFERENT source, at that part's price. So a wrong number with reveal=["email","phone"] also throws away a good email. One call is one step: if the next source gives the same value back it is shown flagged and the walk stops (say so again to go one source further); a free miss moves on by itself. • "Give me a verified email" → reveal with verify=true. Every address is checked by a verifier before it counts (status "valid" / "invalid" / "risky"); an invalid one does not satisfy the ask and the next source is tried. A fraction of a cent per address. If no verifier can answer, the address comes back "unverified" and a note says so. One op, reveal: up to ten people by /in/ handle or profile URL; reveal=["email","phone"] by default, ["email"] alone when the number is not needed (a phone costs about five emails' worth). Every answer carries a `trail`. The sources walked, in order, with what each found and cost; a point's `source` is a label within that answer ("1", "2"), never a name. The /in/ handle must come from EVIDENCE: web-search the person, or find them with linkedin searchPeople, and use the /in/ you SAW. A handle typed from a name is charged for and can reveal a DIFFERENT person's number; a member id (ACoAA…/ACwAA…) is not a handle and is refused unspent. A reveal is YOUR org's asset: a part you already own is free, a part with nothing on file is answered once and never bought again, and nothing revealed is ever shared with another org. Batch subjects inside one call; estimate_only=true quotes without spending.


---

# Explore API for agents

> API for Agents · https://apiforagents.dev/platforms/explore · HTML twin: https://apiforagents.dev/platforms/explore

Data sources beyond the named platforms, for the long tail.

Endpoint: `POST https://apiforagents.dev/v1/explore`. One op per call. Quote first with `"estimateOnly": true`.

## Prices

Priced per request; the capabilities endpoint prints the rate and every call can be quoted first.

## Operations

### sources (free)

Search what explore can reach. Free. `query` names the SITE or the DATA in plain words ("quick commerce categories", "who retweeted a post"), never an entity; returns the best-matching sources with what each returns and its price per row. Omit `query` to browse the whole index.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | no | string (≤300 chars) |  |

Request shape:

```json
{
  "op": "sources"
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=explore&op=sources (sign in first).

### schema (free)

One source's live input fields, a sample input and a money estimate. Free. Call it before `run` so the input is built against the source's real, current contract and the cost is known before spending.

| Field | Required | Type | Meaning |
|---|---|---|---|
| source | yes | string (≤120 chars) | A source name from sources. |

Request shape:

```json
{
  "op": "schema",
  "source": "example"
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=explore&op=schema (sign in first).

### run

Fetch rows from one source. `input` is forwarded to the source as `schema` described it; `limit` bounds the rows and the bill. Rows come back raw and unmapped. Billed per row the source actually returns; a run that finds nothing is free.

| Field | Required | Type | Meaning |
|---|---|---|---|
| source | yes | string (≤120 chars) | The source's name exactly as sources listed it. |
| input | no | dict | The source's own input, shaped by schema. |
| limit | no | integer (1-100) | Rows wanted. Every row costs real money, so name the count the question needs; the hard ceiling is 100. |

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/explore \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"run","source":"<source name from sources>","input":{},"limit":10}'
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=explore&op=run (sign in first).

## Notes for the agent

Reach data sources OUTSIDE the measured platform tools. The long tail the catalogue can fetch that no dedicated tool covers yet. Use it only after the platform tools have been ruled out: for anything about an Instagram, LinkedIn, YouTube, X, Reddit, TikTok, Facebook, Amazon, jobs, places or commerce entity, the dedicated tool answers better, cheaper and with provenance. What comes back here is the SOURCE'S OWN rows: raw, unverified, not mapped into a schema and not kept as measured data. Evidence to interpret and cite, never a measurement. ops: sources (free. Search what is reachable with `query` in plain words, naming the SITE or the DATA: "retweeters of a post", "quick commerce category listing"; returns the best few with a per-row price), schema (free. One source's live input fields, a sample input and a money estimate; call it before every run), run (fetch: `source` from sources, `input` shaped by schema, `limit` rows. At most 100, default 10; billed per row the source returns, a run that returns nothing costs nothing). Ops are independent; sources and schema are free.


---

# Google Maps API for agents

> API for Agents · https://apiforagents.dev/platforms/google_maps · HTML twin: https://apiforagents.dev/platforms/google_maps

Places, search and reviews from Google Maps.

Endpoint: `POST https://apiforagents.dev/v1/google_maps`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| reviews | $0.000225 |
| places | $0.0036 |

## Operations

### places

Full cards for up to ten places by Maps URL (place id or cid). Rating and breakdown, review keywords, contact, address, hours, popular times, attributes, socials, owner posts.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Maps URLs carrying a place id or cid, or bare ChIJ… place ids. |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| placeId | string |
| placeUrl | string |
| businessName | string |
| category | string |
| allCategories | list of string |
| categoryId | string |
| placeTags | list of string |
| rating | number |
| reviews | integer |
| reviewBreakdown | any |
| reviewKeywords | any |
| reviewsUrl | string |
| priceRange | string |
| phone | string |
| formattedPhone | string |
| website | string |
| emails | list of string |
| additionalPhones | list of string |
| socials | any |
| directoryProfiles | any |
| address | string |
| neighborhood | string |
| city | string |
| state | string |
| postalCode | string |
| country | string |
| street | string |
| latitude | number |
| longitude | number |
| plusCode | string |
| locatedIn | string |
| floor | string |
| permanentlyClosed | boolean |
| temporarilyClosed | boolean |
| unclaimed | boolean |
| owner | any |
| description | string |
| attributes | any |
| openingHours | any |
| specialHours | any |
| popularTimes | any |
| liveOccupancyPercent | integer |
| liveStatus | string |
| coverPhoto | string |
| photos | any |
| photoCount | integer |
| relatedPlaces | any |
| ownerPosts | any |
| menuUrl | string |
| reserveTableUrl | string |
| reservationLinks | any |
| entranceLocation | any |
| hotelAds | any |
| similarHotels | any |
| hotelType | string |
| hotelDescription | string |
| subTitle | string |
| cid | string |
| fid | string |
| kgmid | string |
| isAdvertisement | boolean |
| language | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/google_maps \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"places","subjects":["ChIJN1t_tDeuEmsRUsoyG83frY4"]}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "businessName": "Brewlab Coffee",
    "category": "Coffee shop",
    "address": "210 Congress Ave, Austin, TX 78701",
    "city": "Austin",
    "country": "US",
    "rating": 4.7,
    "reviews": 1284,
    "priceRange": "$$",
    "phone": "+1 512-555-0142",
    "website": "https://brewlab.example",
    "permanentlyClosed": false,
    "placeId": "2910649290",
    "placeUrl": "https://www.google.com/maps/brewlab-coffee-1000",
    "categoryId": "3644697838",
    "reviewsUrl": "https://www.google.com/maps/brewlab-coffee-1000",
    "menuUrl": "https://www.google.com/maps/brewlab-coffee-1000",
    "reserveTableUrl": "https://www.google.com/maps/brewlab-coffee-1000",
    "cid": "777429974",
    "fid": "615548140",
    "kgmid": "751321537",
    "isAdvertisement": false,
    "details": {}
  },
  {
    "businessName": "Casa Lumen Tacos",
    "category": "Mexican restaurant",
    "address": "88 Harbor Dr, San Diego, CA 92101",
    "city": "San Diego",
    "country": "US",
    "rating": 4.5,
    "reviews": 2310,
    "priceRange": "$",
    "phone": "+1 619-555-0190",
    "website": "https://casalumen.example",
    "permanentlyClosed": false,
    "placeId": "2171364855",
    "placeUrl": "https://www.google.com/maps/casa-lumen-tacos-1001",
    "categoryId": "1221544499",
    "reviewsUrl": "https://www.google.com/maps/casa-lumen-tacos-1001",
    "menuUrl": "https://www.google.com/maps/casa-lumen-tacos-1001",
    "reserveTableUrl": "https://www.google.com/maps/casa-lumen-tacos-1001",
    "cid": "2979685572",
    "fid": "67051873",
    "kgmid": "3876769627",
    "isAdvertisement": false,
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=google_maps&op=places (sign in first).

### search

Places for a keyword in a location. Every hit a full card.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) |  |
| location | yes | string (≤120 chars) |  |
| minRating | no | enum | Google's star scale, in halves. Values: 2, 2.5, 3, 3.5, 4, 4.5. |
| website | no | enum | Keep only places that list a website ("with"), only those that do not ("without". A common lead filter), or both. Values: any, with, without. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| placeId | string |
| placeUrl | string |
| businessName | string |
| category | string |
| allCategories | list of string |
| categoryId | string |
| placeTags | list of string |
| rating | number |
| reviews | integer |
| reviewBreakdown | any |
| reviewKeywords | any |
| reviewsUrl | string |
| priceRange | string |
| phone | string |
| formattedPhone | string |
| website | string |
| emails | list of string |
| additionalPhones | list of string |
| socials | any |
| directoryProfiles | any |
| address | string |
| neighborhood | string |
| city | string |
| state | string |
| postalCode | string |
| country | string |
| street | string |
| latitude | number |
| longitude | number |
| plusCode | string |
| locatedIn | string |
| floor | string |
| permanentlyClosed | boolean |
| temporarilyClosed | boolean |
| unclaimed | boolean |
| owner | any |
| description | string |
| attributes | any |
| openingHours | any |
| specialHours | any |
| popularTimes | any |
| liveOccupancyPercent | integer |
| liveStatus | string |
| coverPhoto | string |
| photos | any |
| photoCount | integer |
| relatedPlaces | any |
| ownerPosts | any |
| menuUrl | string |
| reserveTableUrl | string |
| reservationLinks | any |
| entranceLocation | any |
| hotelAds | any |
| similarHotels | any |
| hotelType | string |
| hotelDescription | string |
| subTitle | string |
| cid | string |
| fid | string |
| kgmid | string |
| isAdvertisement | boolean |
| language | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/google_maps \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"coffee shop","location":"Seattle, WA","minRating":"4.5","limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "businessName": "Third Wave Roasters",
    "category": "Coffee shop",
    "address": "5 Church St, Bengaluru 560001",
    "city": "Bengaluru",
    "country": "IN",
    "rating": 4.6,
    "reviews": 3120,
    "priceRange": "$$",
    "phone": "+91 80 5555 0188",
    "placeId": "1005667376",
    "placeUrl": "https://www.google.com/maps/third-wave-roasters-1000",
    "categoryId": "1413598742",
    "reviewsUrl": "https://www.google.com/maps/third-wave-roasters-1000",
    "menuUrl": "https://www.google.com/maps/third-wave-roasters-1000",
    "reserveTableUrl": "https://www.google.com/maps/third-wave-roasters-1000",
    "cid": "4033895133",
    "fid": "737493188",
    "kgmid": "3492469626",
    "isAdvertisement": false,
    "details": {}
  },
  {
    "businessName": "Brew & Bloom",
    "category": "Cafe",
    "address": "44 Koramangala 5th Block, Bengaluru 560095",
    "city": "Bengaluru",
    "country": "IN",
    "rating": 4.4,
    "reviews": 1860,
    "priceRange": "$$",
    "phone": "+91 80 5555 0141",
    "placeId": "197953318",
    "placeUrl": "https://www.google.com/maps/brew-bloom-1001",
    "categoryId": "3505513993",
    "reviewsUrl": "https://www.google.com/maps/brew-bloom-1001",
    "menuUrl": "https://www.google.com/maps/brew-bloom-1001",
    "reserveTableUrl": "https://www.google.com/maps/brew-bloom-1001",
    "cid": "156300737",
    "fid": "1569078011",
    "kgmid": "3066591407",
    "isAdvertisement": false,
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=google_maps&op=search (sign in first).

### reviews

Reviews for up to ten places. Text, stars, date, reviewer, owner response; sorted newest, most relevant, highest or lowest.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Maps URLs carrying a place id or cid, or bare ChIJ… place ids. |
| sort | no | enum |  Values: newest, relevance, rating_high, rating_low. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| reviewId | string |
| reviewUrl | string |
| reviewText | string |
| stars | number |
| postedAt | string |
| reviewer | string |
| reviewerId | string |
| reviewerUrl | string |
| reviewerPhoto | string |
| reviewerTotalReviews | integer |
| localGuide | boolean |
| reviewLikes | integer |
| originalLanguage | string |
| translatedLanguage | string |
| translatedText | string |
| ownerResponse | string |
| ownerResponseDate | string |
| reviewContext | any |
| reviewImageUrls | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/google_maps \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reviews","subjects":["ChIJN1t_tDeuEmsRUsoyG83frY4"],"sort":"newest","limit":25}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "reviewer": "Ravi K.",
    "stars": 5,
    "reviewText": "Great espresso and fast service.",
    "localGuide": true,
    "reviewerTotalReviews": 214,
    "reviewLikes": 12,
    "postedAt": "2026-10-12",
    "ownerResponse": null,
    "reviewId": "3650111347",
    "reviewUrl": "https://www.google.com/maps/ravi-k-1000",
    "reviewerId": "2639496725",
    "reviewerUrl": "https://www.google.com/maps/ravi-k-1000",
    "ownerResponseDate": "2026-10-03",
    "details": {}
  },
  {
    "reviewer": "Lena M.",
    "stars": 4,
    "reviewText": "Good coffee, few seats.",
    "localGuide": false,
    "reviewerTotalReviews": 9,
    "reviewLikes": 3,
    "postedAt": "2026-10-08",
    "ownerResponse": "Thanks Lena, more seats are on the way!",
    "reviewId": "2122062301",
    "reviewUrl": "https://www.google.com/maps/lena-m-1001",
    "reviewerId": "431987686",
    "reviewerUrl": "https://www.google.com/maps/lena-m-1001",
    "ownerResponseDate": "2026-10-08",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=google_maps&op=reviews (sign in first).

### history (free)

Stored rating/review-count series of places already held. Free.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) |  |
| metric | no | enum |  Values: rating, reviews, live_occupancy_percent. |
| days | no | integer (1-730) |  |

Request shape:

```json
{
  "op": "history",
  "subjects": [
    "example"
  ]
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=google_maps&op=history (sign in first).

## Notes for the agent

Measured Google Maps data, one operation per call. Places are named by a Google Maps URL carrying a place id or cid, or by a bare ChIJ… place id. Every fetch adds rating, review count and live occupancy to the place's history. ops: places (full cards for up to ten places. Rating and star breakdown, review keywords, price range, phone, website, emails and socials, full address and coordinates, opening and special hours, popular times, attributes, owner posts, menu and reservation links, closed/unclaimed flags), search (a query in a location with minRating and website filters; every hit a full card), reviews (reviews for up to ten places. Text, stars, date, reviewer with local-guide flag, owner response; four sort orders), history (stored rating and review-count series for places already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.


---

# Yelp API for agents

> API for Agents · https://apiforagents.dev/platforms/yelp · HTML twin: https://apiforagents.dev/platforms/yelp

Businesses, search and reviews from Yelp.

Endpoint: `POST https://apiforagents.dev/v1/yelp`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| reviews | $0.000225 |
| business | $0.00045 |

## Operations

### businesses

Full profiles for up to ten businesses by URL or slug. Address, phone, website, rating and star breakdown, review insights by topic, popular dishes, attributes, hours, health inspections.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | yelp.com/biz/ URLs or their slugs. |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| businessSlug | string |
| businessName | string |
| businessUrl | string |
| address | any |
| city | string |
| state | string |
| neighborhoods | list of string |
| latitude | number |
| longitude | number |
| phone | string |
| website | string |
| menuUrl | string |
| rating | number |
| totalReviews | integer |
| starBreakdown | any |
| reviewInsights | any |
| reviewHighlights | any |
| popularDishes | any |
| attributes | any |
| specialties | string |
| summary | string |
| yearEstablished | integer |
| history | string |
| photos | list of string |
| healthInspections | any |
| hoursToday | list of string |
| qaCount | integer |
| qaContent | any |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/yelp \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"businesses","subjects":["katzs-delicatessen-new-york"]}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "businessName": "Brewlab Coffee",
    "address": "210 Congress Ave",
    "city": "Austin",
    "state": "TX",
    "phone": "(512) 555-0142",
    "rating": 4.6,
    "totalReviews": 812,
    "yearEstablished": 2018,
    "hoursToday": "7:00 AM - 6:00 PM",
    "businessSlug": "brewlab-coffee",
    "businessUrl": "https://www.yelp.com/brewlab-coffee-1000",
    "menuUrl": "https://www.yelp.com/brewlab-coffee-1000",
    "photos": [
      "https://img.yelp.com/brewlab-coffee.jpg"
    ],
    "details": {}
  },
  {
    "businessName": "Casa Lumen Tacos",
    "address": "88 Harbor Dr",
    "city": "San Diego",
    "state": "CA",
    "phone": "(619) 555-0190",
    "rating": 4.4,
    "totalReviews": 1290,
    "yearEstablished": 2011,
    "hoursToday": "11:00 AM - 10:00 PM",
    "businessSlug": "casa-lumen-tacos",
    "businessUrl": "https://www.yelp.com/casa-lumen-tacos-1001",
    "menuUrl": "https://www.yelp.com/casa-lumen-tacos-1001",
    "photos": [
      "https://img.yelp.com/casa-lumen-tacos.jpg"
    ],
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=yelp&op=businesses (sign in first).

### search

Businesses for a place and keyword, with Yelp's own sort, price levels and feature filters. Every hit a full profile.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) |  |
| location | yes | string (≤120 chars) |  |
| sort | no | enum |  Values: relevance, rating_high, most_reviewed. |
| priceLevels | no | list of enum | Yelp's dollar-sign tiers, "1" ($) to "4" ($$$$). Any listed tier matches; empty = every price level. Values: 1, 2, 3, 4. |
| features | no | list of string (each ≤40 chars) | Yelp's own feature slugs, e.g. "outdoor_seating", "delivery". |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| businessSlug | string |
| businessName | string |
| businessUrl | string |
| address | any |
| city | string |
| state | string |
| neighborhoods | list of string |
| latitude | number |
| longitude | number |
| phone | string |
| website | string |
| menuUrl | string |
| rating | number |
| totalReviews | integer |
| starBreakdown | any |
| reviewInsights | any |
| reviewHighlights | any |
| popularDishes | any |
| attributes | any |
| specialties | string |
| summary | string |
| yearEstablished | integer |
| history | string |
| photos | list of string |
| healthInspections | any |
| hoursToday | list of string |
| qaCount | integer |
| qaContent | any |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/yelp \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"ramen","location":"San Francisco, CA","sort":"rating_high","priceLevels":["1","2"],"limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "businessName": "Taqueria Sol",
    "address": "402 Market St",
    "city": "San Diego",
    "state": "CA",
    "phone": "(619) 555-0133",
    "rating": 4.7,
    "totalReviews": 2210,
    "yearEstablished": 2009,
    "hoursToday": "10:00 AM - 11:00 PM",
    "businessSlug": "taqueria-sol",
    "businessUrl": "https://www.yelp.com/taqueria-sol-1000",
    "menuUrl": "https://www.yelp.com/taqueria-sol-1000",
    "photos": [
      "https://img.yelp.com/taqueria-sol.jpg"
    ],
    "details": {}
  },
  {
    "businessName": "Casa Lumen Tacos",
    "address": "88 Harbor Dr",
    "city": "San Diego",
    "state": "CA",
    "phone": "(619) 555-0190",
    "rating": 4.4,
    "totalReviews": 1290,
    "yearEstablished": 2011,
    "hoursToday": "11:00 AM - 10:00 PM",
    "businessSlug": "casa-lumen-tacos",
    "businessUrl": "https://www.yelp.com/casa-lumen-tacos-1001",
    "menuUrl": "https://www.yelp.com/casa-lumen-tacos-1001",
    "photos": [
      "https://img.yelp.com/casa-lumen-tacos.jpg"
    ],
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=yelp&op=search (sign in first).

### reviews

Reviews for up to ten businesses. Text, rating, date, reactions, reviewer profile, owner reply.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | yelp.com/biz/ URLs or their slugs. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| reviewId | string |
| rating | number |
| reviewText | string |
| reviewDate | string |
| reviewUrl | string |
| language | string |
| translatedText | string |
| publicReply | string |
| photos | list of string |
| photoCaption | any |
| videos | list of string |
| totalReactions | integer |
| reactions | any |
| firstReviewer | boolean |
| reviewer | any |
| reviewerName | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/yelp \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reviews","subjects":["katzs-delicatessen-new-york"],"limit":25}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "reviewerName": "Jess T.",
    "rating": 5,
    "reviewText": "Best cortado in town and the staff remember your name.",
    "reviewDate": "2026-10-11",
    "totalReactions": 14,
    "firstReviewer": false,
    "publicReply": null,
    "reviewId": "3697697196",
    "reviewUrl": "https://www.yelp.com/jess-t-1000",
    "photos": [
      "https://img.yelp.com/jess-t.jpg"
    ],
    "details": {}
  },
  {
    "reviewerName": "Mike R.",
    "rating": 4,
    "reviewText": "Great coffee, seating fills up fast.",
    "reviewDate": "2026-10-04",
    "totalReactions": 6,
    "firstReviewer": false,
    "publicReply": null,
    "reviewId": "4115864571",
    "reviewUrl": "https://www.yelp.com/mike-r-1001",
    "photos": [
      "https://img.yelp.com/mike-r.jpg"
    ],
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=yelp&op=reviews (sign in first).

### history (free)

Stored rating/review-count series of businesses already held. Free.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) |  |
| metric | no | enum |  Values: rating, total_reviews. |
| days | no | integer (1-730) |  |

Request shape:

```json
{
  "op": "history",
  "subjects": [
    "example"
  ]
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=yelp&op=history (sign in first).

## Notes for the agent

Measured Yelp data, one operation per call. Businesses are named by their yelp.com/biz/ URL or its slug. Every fetch adds rating and review count to the business's history. ops: businesses (full profiles for up to ten businesses. Address and coordinates, phone, website, menu, rating with star breakdown, review insights by topic with sentiment, review highlights, popular dishes, attributes, hours today, health inspections, Q&A), search (a query and location with sort, price levels and Yelp feature filters; every hit a full profile), reviews (reviews for up to ten businesses. Text, rating, date, reactions, reviewer profile, owner reply), history (stored rating/review-count series for businesses already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.


---

# Tripadvisor API for agents

> API for Agents · https://apiforagents.dev/platforms/tripadvisor · HTML twin: https://apiforagents.dev/platforms/tripadvisor

Hotels, restaurants, attractions and reviews from Tripadvisor.

Endpoint: `POST https://apiforagents.dev/v1/tripadvisor`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| attractions | $0.0018 |
| hotels | $0.0018 |
| restaurants | $0.0018 |
| reviews | $0.0018 |

## Operations

### hotels

Full cards for up to ten hotels by Tripadvisor URL. Rating breakdown, rank, class, rooms, amenities, price range, OTA offers for the stay.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Tripadvisor place URLs (Hotel_Review / Restaurant_Review / Attraction_Review). |
| language | no | string (BCP-47) |  |
| currency | no | string (ISO 4217) |  |
| stay | no | object |  |
| stay.checkIn | no | string (YYYY-MM-DD) | First night, YYYY-MM-DD. Only read together with checkOut. |
| stay.checkOut | no | string (YYYY-MM-DD) | Departure day, YYYY-MM-DD, after checkIn. Leave both out for a card without prices. |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| taId | string |
| kind | string |
| name | string |
| tripadvisorUrl | string |
| description | string |
| address | any |
| city | string |
| country | string |
| latitude | number |
| longitude | number |
| phone | string |
| email | string |
| website | string |
| rating | number |
| reviews | integer |
| ratingBreakdown | any |
| reviewTags | any |
| rank | integer |
| rankOutOf | integer |
| photos | list of string |
| photoCount | integer |
| subcategories | list of string |
| hotelClass | string |
| rooms | integer |
| priceRange | string |
| priceLevel | string |
| amenities | list of string |
| hotelOffers | any |
| roomTips | any |
| categoryRatingBreakdown | any |
| nearbyTransit | any |
| cuisines | list of string |
| mealTypes | list of string |
| dietaryRestrictions | list of string |
| establishmentTypes | list of string |
| features | list of string |
| popularDishes | list of string |
| menuUrl | string |
| openingHours | any |
| timezone | string |
| neighborhood | any |
| closed | boolean |
| orderOnline | any |
| categoryRatings | any |
| attractionTypes | list of string |
| ticketOffers | any |
| lowestTicketPrice | number |
| bookingUrl | string |
| nearestMetroStations | any |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"hotels","subjects":["https://www.tripadvisor.com/Hotel_Review-<place-id>-Reviews-The_Plaza-New_York_City_New_York.html"],"currency":"USD","stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15"}}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "name": "Hotel Aurel Riverside",
    "kind": "hotel",
    "city": "Prague",
    "country": "Czechia",
    "rating": 4.5,
    "reviews": 2140,
    "rank": 12,
    "rankOutOf": 610,
    "priceRange": "$$$",
    "hotelClass": 4,
    "rooms": 86,
    "taId": "1304212484",
    "tripadvisorUrl": "https://www.tripadvisor.com/hotel-aurel-riverside-1000",
    "photos": [
      "https://img.tripadvisor.com/hotel-aurel-riverside.jpg"
    ],
    "menuUrl": "https://www.tripadvisor.com/hotel-aurel-riverside-1000",
    "bookingUrl": "https://www.tripadvisor.com/hotel-aurel-riverside-1000",
    "details": {}
  },
  {
    "name": "Casa Lumen Rooms",
    "kind": "hotel",
    "city": "Seville",
    "country": "Spain",
    "rating": 4.7,
    "reviews": 864,
    "rank": 8,
    "rankOutOf": 420,
    "priceRange": "$$",
    "hotelClass": 3,
    "rooms": 14,
    "taId": "1920270898",
    "tripadvisorUrl": "https://www.tripadvisor.com/casa-lumen-rooms-1001",
    "photos": [
      "https://img.tripadvisor.com/casa-lumen-rooms.jpg"
    ],
    "menuUrl": "https://www.tripadvisor.com/casa-lumen-rooms-1001",
    "bookingUrl": "https://www.tripadvisor.com/casa-lumen-rooms-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=tripadvisor&op=hotels (sign in first).

### restaurants

Full cards for up to ten restaurants by URL. Cuisines, dishes, hours, menu link, price level, rating breakdown, rank.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Tripadvisor place URLs (Hotel_Review / Restaurant_Review / Attraction_Review). |
| language | no | string (BCP-47) |  |
| currency | no | string (ISO 4217) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| taId | string |
| kind | string |
| name | string |
| tripadvisorUrl | string |
| description | string |
| address | any |
| city | string |
| country | string |
| latitude | number |
| longitude | number |
| phone | string |
| email | string |
| website | string |
| rating | number |
| reviews | integer |
| ratingBreakdown | any |
| reviewTags | any |
| rank | integer |
| rankOutOf | integer |
| photos | list of string |
| photoCount | integer |
| subcategories | list of string |
| hotelClass | string |
| rooms | integer |
| priceRange | string |
| priceLevel | string |
| amenities | list of string |
| hotelOffers | any |
| roomTips | any |
| categoryRatingBreakdown | any |
| nearbyTransit | any |
| cuisines | list of string |
| mealTypes | list of string |
| dietaryRestrictions | list of string |
| establishmentTypes | list of string |
| features | list of string |
| popularDishes | list of string |
| menuUrl | string |
| openingHours | any |
| timezone | string |
| neighborhood | any |
| closed | boolean |
| orderOnline | any |
| categoryRatings | any |
| attractionTypes | list of string |
| ticketOffers | any |
| lowestTicketPrice | number |
| bookingUrl | string |
| nearestMetroStations | any |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"restaurants","subjects":["https://www.tripadvisor.com/Restaurant_Review-<place-id>-Reviews-Katz_s_Delicatessen-New_York_City_New_York.html"]}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "name": "Casa Lumen",
    "kind": "restaurant",
    "city": "Seville",
    "country": "Spain",
    "rating": 4.7,
    "reviews": 864,
    "rank": 8,
    "rankOutOf": 2210,
    "priceRange": "$$",
    "cuisines": [
      "Spanish",
      "Tapas"
    ],
    "taId": "729433221",
    "tripadvisorUrl": "https://www.tripadvisor.com/casa-lumen-1000",
    "photos": [
      "https://img.tripadvisor.com/casa-lumen.jpg"
    ],
    "menuUrl": "https://www.tripadvisor.com/casa-lumen-1000",
    "bookingUrl": "https://www.tripadvisor.com/casa-lumen-1000",
    "details": {}
  },
  {
    "name": "The Copper Pot",
    "kind": "restaurant",
    "city": "Edinburgh",
    "country": "United Kingdom",
    "rating": 4.5,
    "reviews": 1210,
    "rank": 41,
    "rankOutOf": 1980,
    "priceRange": "$$$",
    "cuisines": [
      "British",
      "Seafood"
    ],
    "taId": "3523809370",
    "tripadvisorUrl": "https://www.tripadvisor.com/the-copper-pot-1001",
    "photos": [
      "https://img.tripadvisor.com/the-copper-pot.jpg"
    ],
    "menuUrl": "https://www.tripadvisor.com/the-copper-pot-1001",
    "bookingUrl": "https://www.tripadvisor.com/the-copper-pot-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=tripadvisor&op=restaurants (sign in first).

### attractions

Full cards for up to ten attractions by URL. Types, ticket offers, booking links, rating breakdown, rank.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Tripadvisor place URLs (Hotel_Review / Restaurant_Review / Attraction_Review). |
| language | no | string (BCP-47) |  |
| currency | no | string (ISO 4217) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| taId | string |
| kind | string |
| name | string |
| tripadvisorUrl | string |
| description | string |
| address | any |
| city | string |
| country | string |
| latitude | number |
| longitude | number |
| phone | string |
| email | string |
| website | string |
| rating | number |
| reviews | integer |
| ratingBreakdown | any |
| reviewTags | any |
| rank | integer |
| rankOutOf | integer |
| photos | list of string |
| photoCount | integer |
| subcategories | list of string |
| hotelClass | string |
| rooms | integer |
| priceRange | string |
| priceLevel | string |
| amenities | list of string |
| hotelOffers | any |
| roomTips | any |
| categoryRatingBreakdown | any |
| nearbyTransit | any |
| cuisines | list of string |
| mealTypes | list of string |
| dietaryRestrictions | list of string |
| establishmentTypes | list of string |
| features | list of string |
| popularDishes | list of string |
| menuUrl | string |
| openingHours | any |
| timezone | string |
| neighborhood | any |
| closed | boolean |
| orderOnline | any |
| categoryRatings | any |
| attractionTypes | list of string |
| ticketOffers | any |
| lowestTicketPrice | number |
| bookingUrl | string |
| nearestMetroStations | any |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"attractions","subjects":["https://www.tripadvisor.com/Attraction_Review-<place-id>-Reviews-Statue_of_Liberty-New_York_City_New_York.html"]}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "name": "Old Town Walking Tour",
    "kind": "attraction",
    "city": "Lisbon",
    "country": "Portugal",
    "rating": 4.9,
    "reviews": 3120,
    "rank": 3,
    "rankOutOf": 640,
    "priceRange": "$",
    "lowestTicketPrice": 25,
    "taId": "3543572718",
    "tripadvisorUrl": "https://www.tripadvisor.com/old-town-walking-tour-1000",
    "photos": [
      "https://img.tripadvisor.com/old-town-walking-tour.jpg"
    ],
    "menuUrl": "https://www.tripadvisor.com/old-town-walking-tour-1000",
    "bookingUrl": "https://www.tripadvisor.com/old-town-walking-tour-1000",
    "details": {}
  },
  {
    "name": "Castle Hill Gardens",
    "kind": "attraction",
    "city": "Prague",
    "country": "Czechia",
    "rating": 4.6,
    "reviews": 5420,
    "rank": 11,
    "rankOutOf": 720,
    "priceRange": null,
    "lowestTicketPrice": null,
    "taId": "2312642660",
    "tripadvisorUrl": "https://www.tripadvisor.com/castle-hill-gardens-1001",
    "photos": [
      "https://img.tripadvisor.com/castle-hill-gardens.jpg"
    ],
    "menuUrl": "https://www.tripadvisor.com/castle-hill-gardens-1001",
    "bookingUrl": "https://www.tripadvisor.com/castle-hill-gardens-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=tripadvisor&op=attractions (sign in first).

### searchHotels

Hotels for a destination. Every hit a full card, priced for the stay when dates are given.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) | A destination, or a dish for restaurants. |
| language | no | string (BCP-47) |  |
| currency | no | string (ISO 4217) |  |
| limit | no | integer (1-100) |  |
| stay | no | object |  |
| stay.checkIn | no | string (YYYY-MM-DD) | First night, YYYY-MM-DD. Only read together with checkOut. |
| stay.checkOut | no | string (YYYY-MM-DD) | Departure day, YYYY-MM-DD, after checkIn. Leave both out for a card without prices. |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| taId | string |
| kind | string |
| name | string |
| tripadvisorUrl | string |
| description | string |
| address | any |
| city | string |
| country | string |
| latitude | number |
| longitude | number |
| phone | string |
| email | string |
| website | string |
| rating | number |
| reviews | integer |
| ratingBreakdown | any |
| reviewTags | any |
| rank | integer |
| rankOutOf | integer |
| photos | list of string |
| photoCount | integer |
| subcategories | list of string |
| hotelClass | string |
| rooms | integer |
| priceRange | string |
| priceLevel | string |
| amenities | list of string |
| hotelOffers | any |
| roomTips | any |
| categoryRatingBreakdown | any |
| nearbyTransit | any |
| cuisines | list of string |
| mealTypes | list of string |
| dietaryRestrictions | list of string |
| establishmentTypes | list of string |
| features | list of string |
| popularDishes | list of string |
| menuUrl | string |
| openingHours | any |
| timezone | string |
| neighborhood | any |
| closed | boolean |
| orderOnline | any |
| categoryRatings | any |
| attractionTypes | list of string |
| ticketOffers | any |
| lowestTicketPrice | number |
| bookingUrl | string |
| nearestMetroStations | any |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchHotels","query":"Lisbon","currency":"EUR","limit":20,"stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15"}}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "name": "Hotel Alfama View",
    "kind": "hotel",
    "city": "Lisbon",
    "country": "Portugal",
    "rating": 4.6,
    "reviews": 1840,
    "rank": 9,
    "rankOutOf": 540,
    "priceRange": "$$$",
    "hotelClass": 4,
    "rooms": 64,
    "taId": "241348951",
    "tripadvisorUrl": "https://www.tripadvisor.com/hotel-alfama-view-1000",
    "photos": [
      "https://img.tripadvisor.com/hotel-alfama-view.jpg"
    ],
    "menuUrl": "https://www.tripadvisor.com/hotel-alfama-view-1000",
    "bookingUrl": "https://www.tripadvisor.com/hotel-alfama-view-1000",
    "details": {}
  },
  {
    "name": "Baixa Boutique Inn",
    "kind": "hotel",
    "city": "Lisbon",
    "country": "Portugal",
    "rating": 4.4,
    "reviews": 960,
    "rank": 22,
    "rankOutOf": 540,
    "priceRange": "$$",
    "hotelClass": 3,
    "rooms": 18,
    "taId": "2808829158",
    "tripadvisorUrl": "https://www.tripadvisor.com/baixa-boutique-inn-1001",
    "photos": [
      "https://img.tripadvisor.com/baixa-boutique-inn.jpg"
    ],
    "menuUrl": "https://www.tripadvisor.com/baixa-boutique-inn-1001",
    "bookingUrl": "https://www.tripadvisor.com/baixa-boutique-inn-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=tripadvisor&op=searchHotels (sign in first).

### searchRestaurants

Restaurants for a destination or dish. Every hit a full card.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) | A destination, or a dish for restaurants. |
| language | no | string (BCP-47) |  |
| currency | no | string (ISO 4217) |  |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| taId | string |
| kind | string |
| name | string |
| tripadvisorUrl | string |
| description | string |
| address | any |
| city | string |
| country | string |
| latitude | number |
| longitude | number |
| phone | string |
| email | string |
| website | string |
| rating | number |
| reviews | integer |
| ratingBreakdown | any |
| reviewTags | any |
| rank | integer |
| rankOutOf | integer |
| photos | list of string |
| photoCount | integer |
| subcategories | list of string |
| hotelClass | string |
| rooms | integer |
| priceRange | string |
| priceLevel | string |
| amenities | list of string |
| hotelOffers | any |
| roomTips | any |
| categoryRatingBreakdown | any |
| nearbyTransit | any |
| cuisines | list of string |
| mealTypes | list of string |
| dietaryRestrictions | list of string |
| establishmentTypes | list of string |
| features | list of string |
| popularDishes | list of string |
| menuUrl | string |
| openingHours | any |
| timezone | string |
| neighborhood | any |
| closed | boolean |
| orderOnline | any |
| categoryRatings | any |
| attractionTypes | list of string |
| ticketOffers | any |
| lowestTicketPrice | number |
| bookingUrl | string |
| nearestMetroStations | any |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchRestaurants","query":"Rome","limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "name": "Taberna do Rio",
    "kind": "restaurant",
    "city": "Lisbon",
    "country": "Portugal",
    "rating": 4.7,
    "reviews": 2310,
    "rank": 6,
    "rankOutOf": 4800,
    "priceRange": "$$",
    "cuisines": [
      "Portuguese",
      "Seafood"
    ],
    "taId": "1280646348",
    "tripadvisorUrl": "https://www.tripadvisor.com/taberna-do-rio-1000",
    "photos": [
      "https://img.tripadvisor.com/taberna-do-rio.jpg"
    ],
    "menuUrl": "https://www.tripadvisor.com/taberna-do-rio-1000",
    "bookingUrl": "https://www.tripadvisor.com/taberna-do-rio-1000",
    "details": {}
  },
  {
    "name": "Pasteis & Co",
    "kind": "restaurant",
    "city": "Lisbon",
    "country": "Portugal",
    "rating": 4.5,
    "reviews": 1520,
    "rank": 28,
    "rankOutOf": 4800,
    "priceRange": "$",
    "cuisines": [
      "Bakery",
      "Cafe"
    ],
    "taId": "1383105578",
    "tripadvisorUrl": "https://www.tripadvisor.com/pasteis-co-1001",
    "photos": [
      "https://img.tripadvisor.com/pasteis-co.jpg"
    ],
    "menuUrl": "https://www.tripadvisor.com/pasteis-co-1001",
    "bookingUrl": "https://www.tripadvisor.com/pasteis-co-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=tripadvisor&op=searchRestaurants (sign in first).

### searchAttractions

Things to do for a destination. Every hit a full card.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) | A destination, or a dish for restaurants. |
| language | no | string (BCP-47) |  |
| currency | no | string (ISO 4217) |  |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| taId | string |
| kind | string |
| name | string |
| tripadvisorUrl | string |
| description | string |
| address | any |
| city | string |
| country | string |
| latitude | number |
| longitude | number |
| phone | string |
| email | string |
| website | string |
| rating | number |
| reviews | integer |
| ratingBreakdown | any |
| reviewTags | any |
| rank | integer |
| rankOutOf | integer |
| photos | list of string |
| photoCount | integer |
| subcategories | list of string |
| hotelClass | string |
| rooms | integer |
| priceRange | string |
| priceLevel | string |
| amenities | list of string |
| hotelOffers | any |
| roomTips | any |
| categoryRatingBreakdown | any |
| nearbyTransit | any |
| cuisines | list of string |
| mealTypes | list of string |
| dietaryRestrictions | list of string |
| establishmentTypes | list of string |
| features | list of string |
| popularDishes | list of string |
| menuUrl | string |
| openingHours | any |
| timezone | string |
| neighborhood | any |
| closed | boolean |
| orderOnline | any |
| categoryRatings | any |
| attractionTypes | list of string |
| ticketOffers | any |
| lowestTicketPrice | number |
| bookingUrl | string |
| nearestMetroStations | any |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchAttractions","query":"Kyoto","limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "name": "Tram 28 Heritage Ride",
    "kind": "attraction",
    "city": "Lisbon",
    "country": "Portugal",
    "rating": 4.3,
    "reviews": 9840,
    "rank": 14,
    "rankOutOf": 640,
    "priceRange": "$",
    "lowestTicketPrice": 3,
    "taId": "3617795509",
    "tripadvisorUrl": "https://www.tripadvisor.com/tram-28-heritage-ride-1000",
    "photos": [
      "https://img.tripadvisor.com/tram-28-heritage-ride.jpg"
    ],
    "menuUrl": "https://www.tripadvisor.com/tram-28-heritage-ride-1000",
    "bookingUrl": "https://www.tripadvisor.com/tram-28-heritage-ride-1000",
    "details": {}
  },
  {
    "name": "Belém Tower",
    "kind": "attraction",
    "city": "Lisbon",
    "country": "Portugal",
    "rating": 4.6,
    "reviews": 41200,
    "rank": 2,
    "rankOutOf": 640,
    "priceRange": "$",
    "lowestTicketPrice": 10,
    "taId": "997333992",
    "tripadvisorUrl": "https://www.tripadvisor.com/bel-m-tower-1001",
    "photos": [
      "https://img.tripadvisor.com/bel-m-tower.jpg"
    ],
    "menuUrl": "https://www.tripadvisor.com/bel-m-tower-1001",
    "bookingUrl": "https://www.tripadvisor.com/bel-m-tower-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=tripadvisor&op=searchAttractions (sign in first).

### reviews

Reviews for up to ten places of any kind. Text, rating, dates, trip type, sub-ratings, owner response, reviewer.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Tripadvisor place URLs of any kind. |
| since | no | string (YYYY-MM-DD) |  |
| ratings | no | list of integer (each 1-5) | Star values to keep, 1-5. |
| languages | no | list of string (each BCP-47) | Keep reviews written in these languages (BCP-47 codes, "en", "fr"). Empty = every language. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| reviewId | string |
| reviewUrl | string |
| reviewTitle | string |
| reviewText | string |
| rating | number |
| postedDate | string |
| travelDate | string |
| tripType | string |
| language | string |
| helpfulVotes | integer |
| subratings | any |
| photos | list of string |
| ownerResponse | any |
| reviewerName | string |
| reviewerProfile | string |
| reviewerLocation | string |
| reviewerContributions | integer |
| reviewerAvatar | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reviews","subjects":["https://www.tripadvisor.com/Attraction_Review-<place-id>-Reviews-Statue_of_Liberty-New_York_City_New_York.html"],"since":"2026-01-01","languages":["en"],"limit":25}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "reviewerName": "Hannah W.",
    "reviewerLocation": "Berlin, Germany",
    "rating": 5,
    "reviewTitle": "Worth every penny",
    "reviewText": "River view rooms are stunning. Ask for floor 5.",
    "tripType": "Couples",
    "travelDate": "2026-09",
    "postedDate": "2026-10-02",
    "helpfulVotes": 12,
    "reviewId": "2801231053",
    "reviewUrl": "https://www.tripadvisor.com/worth-every-penny-1000",
    "photos": [
      "https://img.tripadvisor.com/worth-every-penny.jpg"
    ],
    "details": {}
  },
  {
    "reviewerName": "Arjun S.",
    "reviewerLocation": "Pune, India",
    "rating": 4,
    "reviewTitle": "Great breakfast, slow check-in",
    "reviewText": "Breakfast was excellent; check-in took 40 minutes.",
    "tripType": "Friends",
    "travelDate": "2026-09",
    "postedDate": "2026-09-28",
    "helpfulVotes": 4,
    "reviewId": "1539881488",
    "reviewUrl": "https://www.tripadvisor.com/great-breakfast-slow-check-in-1001",
    "photos": [
      "https://img.tripadvisor.com/great-breakfast-slow-check-in.jpg"
    ],
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=tripadvisor&op=reviews (sign in first).

### history (free)

Stored rating/review-count/rank series of places already held. Free.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) |  |
| metric | no | enum |  Values: rating, reviews, rank. |
| days | no | integer (1-730) |  |

Request shape:

```json
{
  "op": "history",
  "subjects": [
    "example"
  ]
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=tripadvisor&op=history (sign in first).

## Notes for the agent

Measured Tripadvisor data, one operation per call. Places are named by their Tripadvisor URL (Hotel_Review / Restaurant_ Review / Attraction_Review). Every fetch adds rating, review count and rank to the place's history. ops: hotels, restaurants, attractions (full cards for up to ten places of that kind. Contact, address and coordinates, rating with breakdown and review tags, rank out of, photos count; hotels add class, rooms, amenities, price range and OTA offers for a stay; restaurants add cuisines, dishes, hours, menu, price level; attractions add types, ticket offers, booking links), searchHotels, searchRestaurants, searchAttractions (a destination or dish, every hit a full card), reviews (reviews for up to ten places of any kind. Text, rating, dates, trip type, sub-ratings, owner response; filter by minimum date, ratings, languages), history (stored rating/review-count/rank series for places already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.


---

# Airbnb API for agents

> API for Agents · https://apiforagents.dev/platforms/airbnb · HTML twin: https://apiforagents.dev/platforms/airbnb

Listings, prices for a stay and reviews from Airbnb.

Endpoint: `POST https://apiforagents.dev/v1/airbnb`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| listings | $0.0018 |
| reviews | $0.0018 |

## Operations

### listings

Full cards for up to ten listings by URL or room id, priced for a stay. Nightly and total price, availability, ratings by category, amenities, house rules, cancellation policy, host.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Listing URLs or room ids. |
| stay | no | object |  |
| stay.checkIn | no | string (YYYY-MM-DD) | First night, YYYY-MM-DD. Only read together with checkOut. |
| stay.checkOut | no | string (YYYY-MM-DD) | Departure day, YYYY-MM-DD, after checkIn. |
| stay.adults | no | integer (1-16) | Guests aged 13+; the nightly price depends on the party. |
| stay.children | no | integer (0-10) | Guests aged 2-12. |
| stay.infants | no | integer (0-5) | Guests under 2; usually not counted toward the listing's capacity. |
| stay.pets | no | integer (0-5) | Pets, where the listing allows them; adds the pet fee to the total. |
| stay.currency | no | string (ISO 4217) | ISO 4217 code the prices come back in ("USD", "INR", "EUR"). |
| stay.locale | no | string (≤10 chars) | Language tag for titles and descriptions ("en-US", "fr-FR"). |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| listingId | string |
| listingUrl | string |
| title | string |
| propertyType | string |
| roomType | string |
| capacity | integer |
| summaryDetails | list of string |
| description | string |
| location | string |
| locationSubtitle | string |
| locationPath | string |
| latitude | number |
| longitude | number |
| neighborhoodNotes | any |
| ratings | any |
| ratingOverall | number |
| reviewsCount | integer |
| highlights | any |
| amenities | any |
| houseRules | any |
| cancellationPolicy | string |
| available | boolean |
| stay | string |
| currency | string |
| totalPriceText | string |
| pricePerNightText | string |
| baseSubtotalText | string |
| priceQualifier | string |
| totalPrice | number |
| pricePerNight | number |
| host | any |
| hostName | string |
| hostIsSuperhost | boolean |
| coHosts | any |
| images | any |
| thumbnail | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/airbnb \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"listings","subjects":["https://www.airbnb.com/rooms/<room-id>"],"stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15","adults":2,"currency":"USD"}}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "title": "Sunny loft near the old town",
    "propertyType": "Entire loft",
    "roomType": "Entire home",
    "capacity": 3,
    "location": "Lisbon, Portugal",
    "ratingOverall": 4.92,
    "reviewsCount": 214,
    "pricePerNight": 118,
    "currency": "USD",
    "hostName": "Inês",
    "hostIsSuperhost": true,
    "amenities": [
      "Wifi",
      "Kitchen",
      "Washer"
    ],
    "listingId": "4266698829",
    "listingUrl": "https://www.airbnb.com/sunny-loft-near-the-old-town-1000",
    "details": {}
  },
  {
    "title": "Quiet garden studio",
    "propertyType": "Entire guest suite",
    "roomType": "Entire home",
    "capacity": 2,
    "location": "Bengaluru, India",
    "ratingOverall": 4.85,
    "reviewsCount": 96,
    "pricePerNight": 42,
    "currency": "USD",
    "hostName": "Meera",
    "hostIsSuperhost": false,
    "amenities": [
      "Wifi",
      "Air conditioning"
    ],
    "listingId": "4179722422",
    "listingUrl": "https://www.airbnb.com/quiet-garden-studio-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=airbnb&op=listings (sign in first).

### reviews

Reviews for up to ten listings. Text, rating, date, host response.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | Listing URLs or room ids. |
| locale | no | string (≤10 chars) | Language tag the review text is returned in ("en-US"); reviews in other languages come translated. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| reviewId | string |
| reviewText | string |
| translatedText | string |
| originalLanguage | string |
| rating | number |
| postedDate | string |
| highlight | string |
| highlightType | string |
| hostResponse | string |
| hostId | string |
| hostName | string |
| hostProfileUrl | string |
| reviewerUserId | string |
| reviewerName | string |
| reviewerProfile | string |
| reviewerAvatar | string |
| reviewerLocation | string |
| reviewerTenure | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/airbnb \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reviews","subjects":["https://www.airbnb.com/rooms/<room-id>"],"locale":"en-US","limit":25}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "reviewerName": "Hannah",
    "reviewerLocation": "Berlin, Germany",
    "rating": 5,
    "reviewText": "Spotless, bright and a 2-minute walk to everything.",
    "postedDate": "2026-10-08",
    "hostName": "Inês",
    "hostResponse": null,
    "reviewId": "3422556718",
    "hostId": "84440075",
    "hostProfileUrl": "https://www.airbnb.com/hannah-1000",
    "reviewerUserId": "1660453336",
    "details": {}
  },
  {
    "reviewerName": "Arjun",
    "reviewerLocation": "Pune, India",
    "rating": 5,
    "reviewText": "Host replied in minutes. Would stay again.",
    "postedDate": "2026-09-30",
    "hostName": "Inês",
    "hostResponse": null,
    "reviewId": "3672073992",
    "hostId": "558151567",
    "hostProfileUrl": "https://www.airbnb.com/arjun-1001",
    "reviewerUserId": "598161622",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=airbnb&op=reviews (sign in first).

### history (free)

Stored price/rating series of listings already held. Free.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) |  |
| metric | no | enum |  Values: price_per_night, total_price, rating_overall, reviews_count. |
| days | no | integer (1-730) |  |

Request shape:

```json
{
  "op": "history",
  "subjects": [
    "example"
  ]
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=airbnb&op=history (sign in first).

## Notes for the agent

Measured Airbnb data, one operation per call. Listings are named by URL or room id. A `stay` (checkIn, checkOut, adults, children, infants, pets, currency) is part of every price. Without dates a card comes back unpriced. And every priced fetch adds a point to the listing's history tagged with that stay. ops: listings (full cards for up to ten listings. Nightly and total price, availability, overall and per-category ratings, review count, amenities, house rules, cancellation policy, host with superhost flag), reviews (reviews for up to ten listings. Text, rating, date, host response), history (stored price/rating series for listings already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.


---

# Booking.com API for agents

> API for Agents · https://apiforagents.dev/platforms/booking · HTML twin: https://apiforagents.dev/platforms/booking

Properties, search, prices for a stay and reviews from Booking.com.

Endpoint: `POST https://apiforagents.dev/v1/booking`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| listings | $0.0018 |
| reviews | $0.0018 |

## Operations

### properties

Full cards for up to ten properties by URL. Price from, guest score and category scores, rooms with availability and price, facilities, policies, location.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | booking.com/hotel/<country>/<name> URLs. |
| stay | no | object |  |
| stay.checkIn | no | string (YYYY-MM-DD) | First night, YYYY-MM-DD. Only read together with checkOut; without dates a property has no price to show. |
| stay.checkOut | no | string (YYYY-MM-DD) | Departure day, YYYY-MM-DD, after checkIn. |
| stay.currency | no | string (ISO 4217) | ISO 4217 code the prices come back in ("USD", "INR", "EUR"). |
| stay.language | no | string (BCP-47) | BCP-47 tag for names and descriptions ("en-GB", "de-DE"). |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| propertySlug | string |
| propertyId | string |
| propertyUrl | string |
| propertyName | string |
| propertyType | string |
| starRating | number |
| city | string |
| country | string |
| fullAddress | string |
| latitude | number |
| longitude | number |
| guestScore | number |
| scoreLabel | string |
| reviewCount | integer |
| categoryScores | any |
| stay | string |
| priceFrom | number |
| currency | string |
| rooms | any |
| roomTypes | any |
| mainImage | string |
| images | list of string |
| facilities | any |
| description | string |
| highlights | any |
| checkInTime | string |
| checkOutTime | string |
| policies | any |
| finePrint | string |
| surroundings | any |
| traderInfo | any |
| licenseNumbers | list of string |
| host | any |
| mapUrl | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/booking \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"properties","subjects":["https://www.booking.com/hotel/gb/<hotel-name>.html"],"stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15","currency":"GBP"}}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "propertyName": "Hotel Aurel Riverside",
    "propertyType": "Hotel",
    "city": "Prague",
    "country": "Czechia",
    "starRating": 4,
    "guestScore": 8.9,
    "scoreLabel": "Excellent",
    "reviewCount": 2140,
    "priceFrom": 132,
    "currency": "EUR",
    "checkInTime": "15:00",
    "checkOutTime": "11:00",
    "propertySlug": "hotel-aurel-riverside",
    "propertyId": "2374999302",
    "propertyUrl": "https://www.booking.com/hotel-aurel-riverside-1000",
    "images": [
      "https://img.booking.com/hotel-aurel-riverside.jpg"
    ],
    "mapUrl": "https://www.booking.com/hotel-aurel-riverside-1000",
    "details": {}
  },
  {
    "propertyName": "Casa Lumen",
    "propertyType": "Guest house",
    "city": "Seville",
    "country": "Spain",
    "starRating": 3,
    "guestScore": 9.3,
    "scoreLabel": "Wonderful",
    "reviewCount": 612,
    "priceFrom": 88,
    "currency": "EUR",
    "checkInTime": "14:00",
    "checkOutTime": "11:00",
    "propertySlug": "casa-lumen",
    "propertyId": "3605674781",
    "propertyUrl": "https://www.booking.com/casa-lumen-1001",
    "images": [
      "https://img.booking.com/casa-lumen.jpg"
    ],
    "mapUrl": "https://www.booking.com/casa-lumen-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=booking&op=properties (sign in first).

### search

Properties for a destination and a stay, with Booking's own filters.

| Field | Required | Type | Meaning |
|---|---|---|---|
| location | yes | string (≤120 chars) |  |
| stay | no | object |  |
| stay.checkIn | no | string (YYYY-MM-DD) | First night, YYYY-MM-DD. Only read together with checkOut; without dates a property has no price to show. |
| stay.checkOut | no | string (YYYY-MM-DD) | Departure day, YYYY-MM-DD, after checkIn. |
| stay.currency | no | string (ISO 4217) | ISO 4217 code the prices come back in ("USD", "INR", "EUR"). |
| stay.language | no | string (BCP-47) | BCP-47 tag for names and descriptions ("en-GB", "de-DE"). |
| propertyType | no | string (≤40 chars) | Booking's own words: hotel, apartment, hostel, resort, villa… |
| minStars | no | integer (1-5) | Official star class, at least this many. |
| minRating | no | number (0-10) | Guest score on Booking's 0-10 scale. |
| priceMin | no | integer (0-) | For the stay, in the stay's currency. |
| priceMax | no | integer (0-) | Upper bound for the whole stay, in the stay's currency. |
| sort | no | enum |  Values: relevance, price_low, rating_high, distance. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| propertySlug | string |
| propertyId | string |
| propertyUrl | string |
| propertyName | string |
| propertyType | string |
| starRating | number |
| city | string |
| country | string |
| fullAddress | string |
| latitude | number |
| longitude | number |
| guestScore | number |
| scoreLabel | string |
| reviewCount | integer |
| categoryScores | any |
| stay | string |
| priceFrom | number |
| currency | string |
| rooms | any |
| roomTypes | any |
| mainImage | string |
| images | list of string |
| facilities | any |
| description | string |
| highlights | any |
| checkInTime | string |
| checkOutTime | string |
| policies | any |
| finePrint | string |
| surroundings | any |
| traderInfo | any |
| licenseNumbers | list of string |
| host | any |
| mapUrl | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/booking \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","location":"Barcelona","stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15","currency":"EUR"},"minRating":8,"sort":"price_low","limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "propertyName": "Hotel Alfama View",
    "propertyType": "Hotel",
    "city": "Lisbon",
    "country": "Portugal",
    "starRating": 4,
    "guestScore": 8.8,
    "scoreLabel": "Excellent",
    "reviewCount": 1840,
    "priceFrom": 142,
    "currency": "EUR",
    "propertySlug": "hotel-alfama-view",
    "propertyId": "2544813253",
    "propertyUrl": "https://www.booking.com/hotel-alfama-view-1000",
    "images": [
      "https://img.booking.com/hotel-alfama-view.jpg"
    ],
    "mapUrl": "https://www.booking.com/hotel-alfama-view-1000",
    "details": {}
  },
  {
    "propertyName": "Rio Tejo Apartments",
    "propertyType": "Apartment",
    "city": "Lisbon",
    "country": "Portugal",
    "starRating": null,
    "guestScore": 9.1,
    "scoreLabel": "Wonderful",
    "reviewCount": 420,
    "priceFrom": 110,
    "currency": "EUR",
    "propertySlug": "rio-tejo-apartments",
    "propertyId": "3318819671",
    "propertyUrl": "https://www.booking.com/rio-tejo-apartments-1001",
    "images": [
      "https://img.booking.com/rio-tejo-apartments.jpg"
    ],
    "mapUrl": "https://www.booking.com/rio-tejo-apartments-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=booking&op=search (sign in first).

### reviews

Guest reviews for up to ten properties. Liked/disliked text, score, date, traveler type, room, property response.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) | booking.com/hotel/<country>/<name> URLs. |
| sort | no | enum |  Values: relevance, newest, oldest, rating_high, rating_low. |
| since | no | string (YYYY-MM-DD) | Stop at this date; applies with newest or oldest. |
| scoreBands | no | list of enum | Booking's own 10-point score bands: superb 9+, good 7-9, average 5-7, poor <5. Not ratings. That name is a star filter elsewhere. Values: superb, good, average, poor. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| reviewId | string |
| reviewTitle | string |
| liked | string |
| disliked | string |
| rating | number |
| postedDate | string |
| language | string |
| travelerType | string |
| room | string |
| checkIn | string |
| checkOut | string |
| helpfulVotes | integer |
| photos | list of string |
| propertyResponse | string |
| reviewerName | string |
| reviewerLocation | string |
| reviewerAvatar | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/booking \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reviews","subjects":["https://www.booking.com/hotel/gb/<hotel-name>.html"],"sort":"newest","scoreBands":["average","poor"],"limit":25}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "reviewerName": "Emma",
    "reviewerLocation": "Netherlands",
    "rating": 9,
    "reviewTitle": "Great location, friendly staff",
    "liked": "Five minutes from the old town.",
    "disliked": "Coffee at breakfast.",
    "travelerType": "Couple",
    "room": "Double Room with River View",
    "postedDate": "2026-10-10",
    "reviewId": "2742165313",
    "photos": [
      "https://img.booking.com/great-location-friendly-staff.jpg"
    ],
    "details": {}
  },
  {
    "reviewerName": "Daniel",
    "reviewerLocation": "United States",
    "rating": 7.5,
    "reviewTitle": "Good value, small rooms",
    "liked": "Clean and quiet.",
    "disliked": "Tiny bathroom.",
    "travelerType": "Solo traveller",
    "room": "Standard Single Room",
    "postedDate": "2026-10-06",
    "reviewId": "3690182538",
    "photos": [
      "https://img.booking.com/good-value-small-rooms.jpg"
    ],
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=booking&op=reviews (sign in first).

### history (free)

Stored price/score series of properties already held. Free.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) |  |
| metric | no | enum |  Values: price_from, guest_score, review_count. |
| days | no | integer (1-730) |  |

Request shape:

```json
{
  "op": "history",
  "subjects": [
    "example"
  ]
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=booking&op=history (sign in first).

## Notes for the agent

Measured Booking.com data, one operation per call. Properties are named by their booking.com/hotel/<country>/<name> URL. A `stay` (checkIn, checkOut, currency, language) is part of every price and every priced fetch adds a point to the property's history tagged with that stay. ops: properties (full cards for up to ten properties. Price from, guest score and label, category scores, review count, rooms with availability and price, facilities, policies, check-in times, address and coordinates), search (properties for a destination and stay with propertyType, minStars, minRating, priceMin/Max and sort), reviews (guest reviews for up to ten properties. Liked/disliked, score, date, traveler type, room, property response; sort, since, scoreBands), history (stored price/score series for properties already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.


---

# Google API for agents

> API for Agents · https://apiforagents.dev/platforms/google · HTML twin: https://apiforagents.dev/platforms/google

Web search, news, images, shopping and Play Store reviews from Google.

Endpoint: `POST https://apiforagents.dev/v1/google`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| play reviews | $0.00009 |
| images | $0.0009 |
| search | $0.0009 |
| news | $0.0018 |
| shopping | $0.0027 |

## Operations

### search

Google web results. Organic links with titles, snippets and rank; supports operators (site:, intitle:, OR). Billed per page of about ten results.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) |  |
| pages | no | integer (1-5) | Billed per page of ~10 results. The one op counted in pages. |
| country | no | string (ISO alpha-2) | Country to search from. |
| language | no | string (BCP-47) |  |
| site | no | string (≤120 chars) | Only results from this domain ("linkedin.com/in", "reddit.com"). The same as writing site: in the query. |
| relatedToSite | no | string (≤120 chars) | Sites Google considers similar to this domain, instead of the query's own matches. |
| since | no | string (YYYY-MM-DD) |  |
| until | no | string (YYYY-MM-DD) |  |
| fileTypes | no | list of string (each ≤8 chars) | Only documents of these types, as extensions ("pdf", "xlsx", "ppt"). Empty = any page. |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| link | string |
| title | string |
| snippet | string |
| domain | string |
| source | string |
| publishedDate | string |
| rank | integer |
| relatedQuestions | any |
| relatedSearches | any |
| aiAnswer | string |
| aiAnswerSources | any |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/google \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"best CRM for startups","pages":1,"country":"US","language":"en"}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "rank": 1,
    "title": "How to price a B2B SaaS product (2026 guide)",
    "domain": "northfold.example",
    "snippet": "A step-by-step way to set your first price, with worked examples.",
    "publishedDate": "2026-08-12",
    "link": "https://www.google.com/how-to-price-a-b2b-saas-product-2026-gui-1000",
    "details": {}
  },
  {
    "rank": 2,
    "title": "SaaS pricing models compared",
    "domain": "ledgerly.example",
    "snippet": "Per seat, usage-based and flat fees, side by side.",
    "publishedDate": "2026-06-30",
    "link": "https://www.google.com/saas-pricing-models-compared-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=google&op=search (sign in first).

### news

Google News articles for a query. Headline, publisher, date, link.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) |  |
| postedWithin | no | enum |  Values: 1h, 1d, 7d, 1y, any. |
| country | no | string (ISO alpha-2) | The Google News market and its language. |
| language | no | string (BCP-47) |  |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| articleUrl | string |
| title | string |
| source | string |
| publishedAt | string |
| publishedTimestamp | integer |
| imageUrl | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/google \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"news","query":"electric vehicles","postedWithin":"7d","country":"US","language":"en","limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "title": "Kitebank opens its first branch in Europe",
    "source": "Daily Ledger",
    "publishedAt": "2026-10-15T08:00:00Z",
    "articleUrl": "https://www.google.com/kitebank-opens-its-first-branch-in-europ-1000",
    "imageUrl": "https://img.google.com/kitebank-opens-its-first-branch-in-europ.jpg",
    "details": {}
  },
  {
    "title": "Northfold raises $40M to automate finance teams",
    "source": "Tech Wire",
    "publishedAt": "2026-10-13T14:30:00Z",
    "articleUrl": "https://www.google.com/northfold-raises-40m-to-automate-finance-1001",
    "imageUrl": "https://img.google.com/northfold-raises-40m-to-automate-finance.jpg",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=google&op=news (sign in first).

### images

Google Images for a query. URL, source page, dimensions, thumbnail.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) |  |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| imageUrl | string |
| title | string |
| sourceDomain | string |
| sourcePageUrl | string |
| thumbnailUrl | string |
| imageType | string |
| imageWidth | integer |
| imageHeight | integer |
| megapixels | number |
| orientation | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/google \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"images","query":"Eiffel Tower at night","limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "title": "Minimal home office setup",
    "sourceDomain": "northfold.example",
    "imageType": "photo",
    "imageWidth": 1600,
    "imageHeight": 1067,
    "megapixels": 1.7,
    "orientation": "landscape",
    "imageUrl": "https://img.google.com/minimal-home-office-setup.jpg",
    "sourcePageUrl": "https://www.google.com/minimal-home-office-setup-1000",
    "thumbnailUrl": "https://img.google.com/minimal-home-office-setup.jpg",
    "details": {}
  },
  {
    "title": "Home office with plants",
    "sourceDomain": "interiors.example",
    "imageType": "photo",
    "imageWidth": 1080,
    "imageHeight": 1350,
    "megapixels": 1.5,
    "orientation": "portrait",
    "imageUrl": "https://img.google.com/home-office-with-plants.jpg",
    "sourcePageUrl": "https://www.google.com/home-office-with-plants-1001",
    "thumbnailUrl": "https://img.google.com/home-office-with-plants.jpg",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=google&op=images (sign in first).

### shopping

Google Shopping offers for a query. Title, merchant, price, rating.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) |  |
| country | no | string (ISO alpha-2) |  |
| language | no | string (BCP-47) |  |
| postedWithin | no | enum |  Values: 1h, 1d, 7d, 30d, any. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| productId | string |
| productUrl | string |
| title | string |
| merchant | string |
| price | string |
| priceValue | number |
| rating | number |
| reviewCount | integer |
| position | integer |
| image | string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/google \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"shopping","query":"Sony WH-1000XM5","country":"US","language":"en","limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "title": "Sonora Buds Pro, Noise Cancelling",
    "merchant": "Sonora Store",
    "price": "$79.00",
    "priceValue": 79,
    "rating": 4.4,
    "reviewCount": 2310,
    "position": 1,
    "productId": "1059897925",
    "productUrl": "https://www.google.com/sonora-buds-pro-noise-cancelling-1000",
    "details": {}
  },
  {
    "title": "Sonora Buds Pro, Noise Cancelling",
    "merchant": "GadgetHub",
    "price": "$84.99",
    "priceValue": 84.99,
    "rating": 4.4,
    "reviewCount": 2310,
    "position": 2,
    "productId": "2615731860",
    "productUrl": "https://www.google.com/sonora-buds-pro-noise-cancelling-1001",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=google&op=shopping (sign in first).

### playReviews

Play Store reviews for up to five apps, by package id or store URL.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-5 items) | Package ids or Play Store URLs. |
| country | no | string (ISO alpha-2) |  |
| language | no | string (BCP-47) |  |
| sort | no | enum |  Values: newest, rating_high, helpful. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| reviewId | string |
| reviewUrl | string |
| reviewer | string |
| reviewerPhoto | string |
| rating | number |
| reviewText | string |
| posted | string |
| appVersion | string |
| helpfulVotes | integer |
| developerReply | string |
| replyDate | string |
| subratings | any |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/google \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"playReviews","subjects":["com.spotify.music"],"country":"US","language":"en","sort":"newest","limit":50}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "reviewer": "Ravi K.",
    "rating": 5,
    "reviewText": "Fast and simple. Exactly what I needed.",
    "appVersion": "4.12.0",
    "helpfulVotes": 38,
    "posted": "2026-10-14",
    "developerReply": "Thanks Ravi!",
    "reviewId": "4228410525",
    "reviewUrl": "https://www.google.com/ravi-k-1000",
    "replyDate": "2026-10-02",
    "details": {}
  },
  {
    "reviewer": "Lena M.",
    "rating": 2,
    "reviewText": "Keeps logging me out after the update.",
    "appVersion": "4.12.0",
    "helpfulVotes": 104,
    "posted": "2026-10-13",
    "developerReply": "Sorry! A fix ships in 4.12.1.",
    "reviewId": "2870120323",
    "reviewUrl": "https://www.google.com/lena-m-1001",
    "replyDate": "2026-10-07",
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=google&op=playReviews (sign in first).

## Notes for the agent

Measured Google data, one operation per call. Five surfaces. ops: search (web results for a query: link, title, snippet, domain, rank, related questions and searches; supports site:, intitle:, OR; country/language/site/since/until filters; billed per page of ~10), news (Google News articles: headline, publisher, date, link; postedWithin, country and language), images (Google Images: URL, source page, dimensions), shopping (Shopping offers: title, merchant, price, rating, review count; country, language, postedWithin), playReviews (Play Store reviews for up to five apps by package id or URL. Text, rating, date, app version, developer reply, sub-ratings; country, language, sort). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.


---

# LinkedIn Profile API. Pay per record.

> LinkedIn profile data as JSON: headline, company, location, skills and work history. $0.004 per profile, pay as you go, $0.10 free.

Canonical: https://apiforagents.dev/platforms/linkedin/profile-api · Updated 2026-10-21

Turn a LinkedIn profile URL or handle into clean JSON: name, headline, about, location, followers, connections, skills and work history. Up to ten people per call, priced per profile, with a quote before you spend.

- Price: $0.004 / profile
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/linkedin

## What people build with the LinkedIn Profile API

- **Enrich a lead list.** Paste in the profile URLs from a CRM or a spreadsheet and get back the current title, company and location for each person.
- **Research before a call.** Give your agent a name's profile and let it read the headline, the about section and recent posts before a meeting.
- **Screen candidates.** Pull skills and positions for a shortlist and compare them side by side, with the date each profile was measured.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profiles","subjects":["satyanadella"],"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profiles","subjects":["satyanadella"]}'
```

## Inputs

Everything you can send in one profiles call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | /in/<slug> handles or profile URLs. 1-10 items |
| fields | enum list | What each card carries: "profile" is the card itself (always), "positions" adds the person's work history. Omit for the card alone. |
| include.posts.limit | integer | Recent posts to fetch per person, newest first; 1-50. |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| publicId | string |
| urn | string |
| name | string |
| firstName | string |
| lastName | string |
| headline | string |
| about | string |
| location | string |
| city | string |
| state | string |
| country | string |
| profileUrl | string |
| avatarUrl | string |
| coverUrl | string |
| followers | integer |
| connections | integer |
| isPremium | boolean |
| isOpenToWork | boolean |
| isHiring | boolean |
| isVerified | boolean |
| isCreator | boolean |
| isInfluencer | boolean |
| isOpenProfile | boolean |
| skills | list of string |
| companyName | string |
| positions | list of object |
| education | list of object |
| certifications | list of object |
| languages | list of object |
| projects | list of object |
| publications | list of object |
| courses | list of object |
| honors | list of object |
| volunteering | list of object |
| recommendations | list of object |
| causes | list of string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| publicId | name | headline | companyName | location | followers |
|---|---|---|---|---|---|
| ananya-rao | Ananya Rao | Head of Marketing at Paylane | Paylane | Bengaluru, Karnataka, India | 8421 |
| marcus-lee | Marcus Lee | VP Sales, EMEA \| B2B SaaS | Northfold | London, England, United Kingdom | 15230 |
| sofia-ortiz | Sofia Ortiz | Data Engineer · Python, dbt, Airflow | Kitebank | Austin, Texas, United States | 2104 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One profile | 1 | $0.004 |
| 10 profiles | 10 | $0.04 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the LinkedIn Profile API in the playground](https://apiforagents.dev/dashboard/run?platform=linkedin&op=profiles): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no LinkedIn account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Questions

### What does the LinkedIn Profile API return?

One row per person: publicId, name, headline, about, location, followers, connections, whether the account is Premium, open to work or hiring, skills, and positions with company, title and start date. Ask for include.posts to get each person's recent posts in the same call.

### How much does a LinkedIn profile lookup cost?

$0.004 per profile, pay as you go. A profile that does not come back is refunded, and a profile your account already fetched today is served again for free. Quotes are always free: add "estimateOnly": true to any call.

### Can I look up a profile by URL instead of handle?

Yes. A full linkedin.com/in/... URL is accepted and reduced to its handle. Up to ten people per call.

### Does it return email addresses or phone numbers?

No. The profile API returns what is public on the profile page. For a person's work email or mobile number, send the same LinkedIn handle to the contacts endpoint, priced separately.

### Can an AI agent use it without me creating an account?

Yes. An agent registers itself with one POST request, gets $0.10 free and can run calls straight away. You claim it later with a six-digit code to top up. The recipe is at https://apiforagents.dev/auth.md.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=linkedin&op=profiles (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn Posts API. Pay per record.

> Read anyone's recent LinkedIn posts with likes, comments and reposts, by API. $0.002 per post, pay as you go. Quote free before every call.

Canonical: https://apiforagents.dev/platforms/linkedin/posts-api · Updated 2026-10-21

Get a person's recent LinkedIn posts with engagement: the text, the type, when it was posted, the permalink, the media and the like, comment and repost counts. Priced per post returned.

- Price: $0.002 / post
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/linkedin

## What people build with the LinkedIn Posts API

- **Personalise outreach.** Read what a prospect posted this month and open with something they actually said.
- **Monitor thought leaders.** Follow a list of voices in your market and see which posts got the most engagement.
- **Feed an agent's memory.** Give your agent the last fifty posts from an account before it writes about that person or company.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"posts","subject":"satyanadella","limit":10,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"posts","subject":"satyanadella","limit":10}'
```

## Inputs

Everything you can send in one posts call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subject * | string | One /in/<slug> handle or profile URL. ≤400 chars |
| limit | integer | 1-50 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| urn | string |
| body | string |
| kind | string |
| postedAt | string |
| permalink | string |
| mediaUrl | string |
| mediaType | string |
| likes | integer |
| comments | integer |
| reposts | integer |
| author | object |
| mentions | list of object |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| author | body | kind | postedAt | likes | comments |
|---|---|---|---|---|---|
| {"handle":"ananya-rao","type":"person"} | We cut onboarding from 14 days to 3. Here is what changed… | text | 2026-10-14T09:12:00Z | 1284 | 96 |
| {"handle":"ananya-rao","type":"person"} | We're hiring two product marketers in Bengaluru. DM me. | image | 2026-10-08T06:40:00Z | 412 | 58 |
| {"handle":"ananya-rao","type":"person"} | Our 2026 brand playbook, free to download (12 pages). | document | 2026-09-30T11:05:00Z | 2210 | 187 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One post | 1 | $0.002 |
| 10 posts | 10 | $0.02 |
| A full page | 50 | $0.1 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the LinkedIn Posts API in the playground](https://apiforagents.dev/dashboard/run?platform=linkedin&op=posts): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no LinkedIn account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Questions

### What does the LinkedIn Posts API return?

One row per post: urn, body text, kind, postedAt, permalink, media URL, and counts of likes, comments and reposts.

### How much does it cost?

$0.002 per post returned, up to fifty per call. You set the limit and you are charged only for the posts that come back.

### Does it work for company pages?

Not yet. It reads a person's posts today. A company-page request is declined with a reason, never guessed at.

### Can I search posts by keyword?

Yes, with the post search operation: find posts by keyword, mention, content type and date.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=linkedin&op=posts (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn Company API. Pay per record.

> LinkedIn company data as JSON: industry, size, employees, website and HQ. $0.004 per company, pay as you go, no subscription.

Canonical: https://apiforagents.dev/platforms/linkedin/company-api · Updated 2026-10-21

Turn a LinkedIn company page into structured data: industry, size, employee count, followers, website, headquarters, founding year and specialities. Up to ten companies per call, priced per company.

- Price: $0.004 / company
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/linkedin

## What people build with the LinkedIn Company API

- **Firmographics for a CRM.** Fill in industry, size and headquarters for every account in a list, from the company's own LinkedIn page.
- **Qualify accounts.** Let an agent check employee count and industry before it adds a company to an outbound sequence.
- **Track competitors.** Read follower counts and specialities over time, each measured with a date you can trust.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"companies","subjects":["microsoft"],"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"companies","subjects":["microsoft"]}'
```

## Inputs

Everything you can send in one companies call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | /company/<slug> handles or URLs. 1-10 items |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| universalName | string |
| urn | string |
| name | string |
| industry | string |
| sizeBucket | string |
| employeesCount | integer |
| followers | integer |
| website | string |
| linkedinUrl | string |
| hqLocation | string |
| hqStreet | string |
| hqCity | string |
| hqState | string |
| hqPostalCode | string |
| hqCountry | string |
| about | string |
| founded | integer |
| specialities | list of string |
| logoUrl | string |
| pageType | string |
| isVerified | boolean |
| isActive | boolean |
| jobsUrl | string |
| callToActionUrl | string |
| locations | list of object |
| employeesByLocation | list of object |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| universalName | name | industry | sizeBucket | employeesCount | followers |
|---|---|---|---|---|---|
| paylane | Paylane | Financial Services | 201-500 | 342 | 48210 |
| northfold | Northfold | Software Development | 51-200 | 128 | 15904 |
| kitebank | Kitebank | Banking | 1001-5000 | 2410 | 210388 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One company | 1 | $0.004 |
| 10 companies | 10 | $0.04 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the LinkedIn Company API in the playground](https://apiforagents.dev/dashboard/run?platform=linkedin&op=companies): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no LinkedIn account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Questions

### What does the LinkedIn Company API return?

One row per company: universalName, name, industry, size bucket, employee count, followers, website, headquarters location, about, founding year and specialities.

### How much does it cost?

$0.004 per company, pay as you go, with a free quote before every call and a refund for any company that does not come back.

### How do I identify a company?

By its /company/<slug> handle or the full LinkedIn company URL. Up to ten per call.

### Can I search for companies instead of looking one up?

Yes. The company search operation finds companies by keyword, location, size and industry, and returns the same fields.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=linkedin&op=companies (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn People Search API. Pay per record.

> Search LinkedIn people by title, company, seniority, location and more. Full profiles at $0.004 each, pay as you go.

Canonical: https://apiforagents.dev/platforms/linkedin/people-search-api · Updated 2026-10-21

Find people on LinkedIn by title, company, seniority, function, location, school and more, or list the people at one company. Returns full profile rows, priced per profile found.

- Price: $0.004 / profile
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/linkedin

## What people build with the LinkedIn People Search API

- **Build an ICP list.** Founders of fintech companies in Berlin, heads of data at Series B startups: describe the person and get the profiles.
- **Map a buying committee.** List the people at one company filtered by function and seniority, then enrich the ones that matter.
- **Source candidates.** Search by past titles, schools and years of experience to find people for a role.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchPeople","company":"stripe","titles":["Head of Data"],"limit":10,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchPeople","company":"stripe","titles":["Head of Data"],"limit":10}'
```

## Inputs

Everything you can send in one searchPeople call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| company | string | A /company/<slug> handle or company URL: search only that company's people. Omit for a global search (then give query and/or titles). ≤400 chars |
| query | string | ≤300 chars |
| titles | text list | Current job titles, free text ("Founder", "Head of Marketing"); any match. |
| pastTitles | text list | Titles the person held before, free text. Global search only. |
| pastCompanies | text list | Company names the person worked at before. Global search only. |
| schools | text list | School or university names the person attended. Global search only. |
| locations | text list |  |
| industries | text list | Leaf names or " > " paths. Validated against LinkedIn's 434-node taxonomy. |
| companySizes | enum list | Headcount bands of the person's current employer: 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+. Global search only. |
| seniority | enum list | Seniority bands: cxo, owner_partner, vice_president, director, experienced_manager, entry_manager, strategic, senior, entry, in_training. Any match. |
| functions | enum list | Job functions: marketing, sales, engineering, finance, operations, product_management, human_resources … Any match. |
| yearsAtCompany | enum list | Tenure at the current company, in bands: lt_1y, 1_2y, 3_5y, 6_10y, gt_10y. |
| yearsOfExperience | enum list | Total career length, the same bands as yearsAtCompany. |
| recentlyChangedJobs | boolean | true: only people who started a new role recently. |
| recentlyPosted | boolean | true: only people who posted on LinkedIn recently. Global search only. |
| personNames | text list | Person-name / current employer / HQ / language filters (global search honours all). |
| currentCompanies | text list | Names of the person's current employer(s). Global search only. |
| companyHqLocations | text list | Where the current employer is headquartered. Cities, regions or countries as written on LinkedIn ("Bengaluru", "United States"). |
| profileLanguages | text list | Languages listed on the profile, by name ("English", "Hindi"). |
| limit | integer | 1-50 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| publicId | string |
| urn | string |
| name | string |
| firstName | string |
| lastName | string |
| headline | string |
| about | string |
| location | string |
| city | string |
| state | string |
| country | string |
| profileUrl | string |
| avatarUrl | string |
| coverUrl | string |
| followers | integer |
| connections | integer |
| isPremium | boolean |
| isOpenToWork | boolean |
| isHiring | boolean |
| isVerified | boolean |
| isCreator | boolean |
| isInfluencer | boolean |
| isOpenProfile | boolean |
| skills | list of string |
| companyName | string |
| positions | list of object |
| education | list of object |
| certifications | list of object |
| languages | list of object |
| projects | list of object |
| publications | list of object |
| courses | list of object |
| honors | list of object |
| volunteering | list of object |
| recommendations | list of object |
| causes | list of string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| publicId | name | headline | companyName | location | followers |
|---|---|---|---|---|---|
| priya-nair | Priya Nair | Head of Marketing · Ledgerly | Ledgerly | Bengaluru, Karnataka, India | 5120 |
| arjun-mehta | Arjun Mehta | Marketing Director at Coinmint | Coinmint | Bengaluru, Karnataka, India | 3380 |
| kavya-iyer | Kavya Iyer | Head of Growth Marketing, Paylane | Paylane | Bengaluru, Karnataka, India | 2750 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One profile | 1 | $0.004 |
| 10 profiles | 10 | $0.04 |
| A full page | 50 | $0.2 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the LinkedIn People Search API in the playground](https://apiforagents.dev/dashboard/run?platform=linkedin&op=searchPeople): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no LinkedIn account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Questions

### What filters does the LinkedIn people search support?

Keyword query, current and past titles, current and past companies, schools, locations, industries, company size, company headquarters, seniority, function, years at company, years of experience, recently changed jobs, recently posted, names and profile language.

### How much does a people search cost?

$0.004 per profile returned. A global search (no company given) is priced by the page of 25 profiles even when you ask for fewer, so quote first with "estimateOnly": true: the quote is the most the call can cost.

### Can I list everyone at a company?

Yes. Pass the company and narrow by title, seniority or function to get the people who matter.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=linkedin&op=searchPeople (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn Company Search API. Pay per record.

> Search LinkedIn companies by keyword, location, size and industry. Full company rows, pay per record, $5 to start.

Canonical: https://apiforagents.dev/platforms/linkedin/company-search-api · Updated 2026-10-21

Find companies on LinkedIn by keyword, location, size and industry. Each result is a full company row with industry, employee count, website and headquarters.

- Price: $0.004 / company
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/linkedin

## What people build with the LinkedIn Company Search API

- **Build an account list.** All 51 to 200 person software companies in London, with their websites, in one call.
- **Market mapping.** Count and compare the companies in a niche before you build or sell into it.
- **Feed people search.** Find the companies first, then list the decision makers at each one.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchCompanies","query":"fintech","locations":["London"],"limit":10,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchCompanies","query":"fintech","locations":["London"],"limit":10}'
```

## Inputs

Everything you can send in one searchCompanies call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query | string | ≤300 chars |
| locations | text list |  |
| companySizes | enum list | Headcount bands: 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+; any match. |
| industries | text list | Industry names, leaf or " > " path, from LinkedIn's own taxonomy. |
| limit | integer | 1-50 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| universalName | string |
| urn | string |
| name | string |
| industry | string |
| sizeBucket | string |
| employeesCount | integer |
| followers | integer |
| website | string |
| linkedinUrl | string |
| hqLocation | string |
| hqStreet | string |
| hqCity | string |
| hqState | string |
| hqPostalCode | string |
| hqCountry | string |
| about | string |
| founded | integer |
| specialities | list of string |
| logoUrl | string |
| pageType | string |
| isVerified | boolean |
| isActive | boolean |
| jobsUrl | string |
| callToActionUrl | string |
| locations | list of object |
| employeesByLocation | list of object |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| universalName | name | industry | sizeBucket | employeesCount | followers |
|---|---|---|---|---|---|
| ledgerly | Ledgerly | Software Development | 11-50 | 38 | 4120 |
| coinmint | Coinmint | Financial Services | 51-200 | 96 | 12800 |
| taxwise | Taxwise | Software Development | 11-50 | 24 | 2050 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One company | 1 | $0.004 |
| 10 companies | 10 | $0.04 |
| A full page | 50 | $0.2 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the LinkedIn Company Search API in the playground](https://apiforagents.dev/dashboard/run?platform=linkedin&op=searchCompanies): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no LinkedIn account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Questions

### What can I filter companies by?

Keyword, locations, company sizes and industries, with a limit of up to fifty results per call.

### How much does it cost?

Priced per company returned, with a free quote first. See the pricing page for the current rate.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=linkedin&op=searchCompanies (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn Jobs API. Pay per record.

> Search LinkedIn job listings by title, location, salary and date, with descriptions and apply links. $0.001 per job.

Canonical: https://apiforagents.dev/platforms/linkedin/jobs-api · Updated 2026-10-21

Search LinkedIn job listings by title, location, company, industry, workplace type, seniority, salary and date posted. Each listing comes back with its description, salary text and apply link.

- Price: $0.001 / job
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/linkedin

## What people build with the LinkedIn Jobs API

- **Hiring signals for sales.** A company hiring three data engineers this week is a company with a data problem. Find them by job title.
- **Job boards and alerts.** Build a niche job board or an alert bot from fresh listings, filtered exactly as you need.
- **Labour market research.** Track which roles, salaries and locations are rising in a market, listing by listing.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"jobs","query":"data engineer","locations":["Berlin"],"postedWithin":"7d","limit":10,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"jobs","query":"data engineer","locations":["Berlin"],"postedWithin":"7d","limit":10}'
```

## Inputs

Everything you can send in one jobs call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | ≤300 chars |
| locations | text list |  |
| companies | text list | Hiring company names, as written on LinkedIn; any match. |
| industries | text list | Industry names, leaf or " > " path, from LinkedIn's own taxonomy. |
| workplace | enum list |  |
| employmentType | enum list |  |
| experienceLevel | enum list | Levels: internship, entry, associate, mid_senior, director, executive. |
| postedWithin | enum |  |
| salaryMin | integer | Thousands of USD a year, 40 and up; filtered in LinkedIn's $20k bands. 40-1000 |
| easyApply | boolean | true: only listings that take applications on LinkedIn itself. |
| under10Applicants | boolean | true: only listings with fewer than ten applicants so far. |
| sort | enum | Unset = the platform's default order. |
| limit | integer | 1-50 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| jobId | string |
| title | string |
| companyName | string |
| location | string |
| city | string |
| state | string |
| country | string |
| employmentType | string |
| workplaceType | string |
| isRemoteAllowed | boolean |
| experienceLevel | string |
| industries | list of string |
| functions | list of string |
| salaryText | string |
| listedAt | string |
| expiresAt | string |
| applicants | integer |
| url | string |
| applyUrl | string |
| applicantTrackingSystem | string |
| description | string |
| descriptionHtml | string |
| companyUrn | string |
| companySlug | string |
| companyUrl | string |
| companyLogoUrl | string |
| companyWebsite | string |
| companyDescription | string |
| companyEmployees | integer |
| companyFollowers | integer |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Real rows from an earlier run, business data only.

| jobId | title | companyName | location | employmentType | listedAt |
|---|---|---|---|---|---|
| 4430707116 | Product Manager (Manufacturing) - Hybrid | MacLean Power Systems | Manteca, California, United States | full_time | 2026-08-22T15:42:18+00:00 |
| 4419567749 | Sr. Engineering and Product Manager | Justrite Safety Group | Broomfield, Colorado, United States | full_time | 2026-08-22T15:22:45+00:00 |
| 4457833155 | Integrated Services Analytics Product Manager | Ford Motor Company | United States | full_time | 2026-08-22T15:46:18+00:00 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One job | 1 | $0.001 |
| 10 jobs | 10 | $0.01 |
| A full page | 50 | $0.05 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the LinkedIn Jobs API in the playground](https://apiforagents.dev/dashboard/run?platform=linkedin&op=jobs): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no LinkedIn account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Questions

### What does the LinkedIn Jobs API return?

One row per listing: jobId, title, company name, location, employment type, salary text, listed date, apply URL, the full description and when we first saw it.

### How much does it cost?

$0.001 per job listing at the list price. A search can carry a small minimum per call, so quote first with "estimateOnly": true: the free quote is the most the call can cost.

### Which filters are supported?

Title keyword, locations, companies, industries, workplace (remote, hybrid, on-site), employment type, experience level, posted within, minimum salary, Easy Apply, under ten applicants and sort order.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=linkedin&op=jobs (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn Post Search API. Pay per record.

> Search LinkedIn posts by keyword, mention and date for social listening. $0.002 per post, pay as you go.

Canonical: https://apiforagents.dev/platforms/linkedin/post-search-api · Updated 2026-10-21

Search LinkedIn posts by keyword: what people are saying about a topic, a product or a company. Narrow by who is mentioned, the content type and how recent, sorted by relevance or date.

- Price: $0.002 / post
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/linkedin

## What people build with the LinkedIn Post Search API

- **Social listening.** Every post this week that mentions your product, your competitor or a pain you solve.
- **Find warm leads.** People posting about the exact problem you fix are the people to talk to first.
- **Content research.** See which posts on a topic get the most engagement before you write your own.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchPosts","query":"AI agents","postedWithin":"7d","limit":10,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchPosts","query":"AI agents","postedWithin":"7d","limit":10}'
```

## Inputs

Everything you can send in one searchPosts call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | Words the posts must contain. Always needed, even with mentioning (a mention-only ask is refused, verified 2026-09-23): to list all that tags a company or person, use their name as the query. ≤300 chars |
| mentioning | text list | Only posts that tag these people or companies: /in/<slug> or /company/<slug> handles, or their URLs. |
| contentType | enum | What kind of post: videos, images, jobs, live_videos, documents, collaborative_articles. Omit or "all" for every kind. |
| postedWithin | enum |  |
| sort | enum |  |
| includeReposts | boolean | true: reposts of other people's posts count as hits too. |
| includeQuotePosts | boolean | true: posts that quote another post count as hits too. |
| limit | integer | 1-50 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| urn | string |
| body | string |
| kind | string |
| postedAt | string |
| permalink | string |
| mediaUrl | string |
| mediaType | string |
| likes | integer |
| comments | integer |
| reposts | integer |
| author | object |
| mentions | list of object |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| author | body | kind | postedAt | likes | comments |
|---|---|---|---|---|---|
| {"handle":"marcus-lee","type":"person"} | Layoffs in fintech this quarter: what I'm hearing from 40… | text | 2026-10-15T08:00:00Z | 3120 | 402 |
| {"handle":"leila-haddad","type":"person"} | If you were part of the fintech layoffs, I'm sharing 25 o… | text | 2026-10-13T15:30:00Z | 1840 | 233 |
| {"handle":"592070160","type":"person"} | An update on our team changes, from our CEO. | article | 2026-10-10T12:00:00Z | 950 | 310 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One post | 1 | $0.002 |
| 10 posts | 10 | $0.02 |
| A full page | 50 | $0.1 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the LinkedIn Post Search API in the playground](https://apiforagents.dev/dashboard/run?platform=linkedin&op=searchPosts): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no LinkedIn account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Questions

### How is post search different from the posts API?

The posts API reads one person's recent posts. Post search finds posts across LinkedIn by keyword, from anyone.

### How much does it cost?

$0.002 per post returned, up to fifty per call, with a free quote first.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=linkedin&op=searchPosts (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn Comments API. Pay per record.

> Every comment on a LinkedIn post, with the commenter's name, headline and followers. $0.002 per comment.

Canonical: https://apiforagents.dev/platforms/linkedin/comments-api · Updated 2026-10-21

Get the comments on any LinkedIn post: who commented, their headline and follower count, what they wrote, when, and the likes and replies on each comment. Up to ten posts per call.

- Price: $0.002 / comment
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/linkedin

## What people build with the LinkedIn Comments API

- **Engaged leads from a post.** The people who commented on a competitor's launch post are telling you they care. List them.
- **Measure a campaign.** Read every comment on your own posts, with who said it and how many people agreed.
- **Community research.** See who shows up in the comments of the voices in your market.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"postComments","subjects":["https://www.linkedin.com/posts/<post-id>"],"limit":25,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"postComments","subjects":["https://www.linkedin.com/posts/<post-id>"],"limit":25}'
```

## Inputs

Everything you can send in one postComments call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Post URLs. 1-10 items |
| includeReplies | boolean | true: nested replies come back under their parent comment, not only top-level comments. |
| postedWithin | enum |  |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| commentId | string |
| commentUrl | string |
| postUrl | string |
| postUrn | string |
| commenterProfileId | string |
| commenterHandle | string |
| commenterName | string |
| commenterHeadline | string |
| commenterUrl | string |
| commenterAvatarUrl | string |
| commenterType | string |
| commenterFollowers | integer |
| isAuthor | boolean |
| edited | boolean |
| likes | integer |
| replies | integer |
| reactions | list of object |
| body | string |
| commentedAt | string |
| mentions | list of string |
| postAuthor | string |
| postAuthorHandle | string |
| postAuthorUrl | string |
| postAuthorHeadline | string |
| postAuthorAvatarUrl | string |
| postAuthorProfileId | string |
| postAuthorType | string |
| postText | string |
| postPostedAt | string |
| postMediaUrl | string |
| postLikes | integer |
| postComments | integer |
| postReposts | integer |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| commenterHandle | commenterName | commenterHeadline | body | likes | replies |
|---|---|---|---|---|---|
| priya-nair | Priya Nair | Product Lead at Ledgerly | This matches what we saw. Did churn move too? | 34 | 3 |
| tom-becker | Tom Becker | Founder, Brightdesk | Saving this for our next planning week. | 12 | 0 |
| ananya-rao | Ananya Rao | Head of Marketing at Paylane | @Priya Nair yes, churn in month one fell by a third. | 21 | 0 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One comment | 1 | $0.002 |
| 10 comments | 10 | $0.02 |
| A full page | 100 | $0.2 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the LinkedIn Comments API in the playground](https://apiforagents.dev/dashboard/run?platform=linkedin&op=postComments): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no LinkedIn account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Questions

### What does the LinkedIn Comments API return?

One row per comment: comment id and URL, the post URL, the commenter's handle, name, headline, profile URL and follower count, whether they are the author, whether it was edited, likes, replies, the text and when it was posted.

### Can I get replies too?

Yes, set includeReplies to pull nested replies.

### How much does it cost?

$0.002 per comment returned, up to a hundred per call.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=linkedin&op=postComments (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn Profile Comments API. Pay per record.

> What a person comments on across LinkedIn, newest first, with the post each comment was on. $0.002 per comment.

Canonical: https://apiforagents.dev/platforms/linkedin/profile-comments-api · Updated 2026-10-21

See what a person comments on across LinkedIn: every comment they left, newest first, with the post it was on. A sharper signal of what someone cares about than what they post.

- Price: $0.002 / comment
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/linkedin

## What people build with the LinkedIn Profile Comments API

- **Know what a buyer engages with.** The posts a prospect comments on tell you their priorities better than their profile does.
- **Find shared ground.** Spot the creators and topics a person interacts with before you reach out.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profileComments","subjects":["satyanadella"],"limit":25,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profileComments","subjects":["satyanadella"],"limit":25}'
```

## Inputs

Everything you can send in one profileComments call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | /in/<slug> handles or profile URLs. 1-10 items |
| postedWithin | enum |  |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| commentId | string |
| commentUrl | string |
| postUrl | string |
| postUrn | string |
| commenterProfileId | string |
| commenterHandle | string |
| commenterName | string |
| commenterHeadline | string |
| commenterUrl | string |
| commenterAvatarUrl | string |
| commenterType | string |
| commenterFollowers | integer |
| isAuthor | boolean |
| edited | boolean |
| likes | integer |
| replies | integer |
| reactions | list of object |
| body | string |
| commentedAt | string |
| mentions | list of string |
| postAuthor | string |
| postAuthorHandle | string |
| postAuthorUrl | string |
| postAuthorHeadline | string |
| postAuthorAvatarUrl | string |
| postAuthorProfileId | string |
| postAuthorType | string |
| postText | string |
| postPostedAt | string |
| postMediaUrl | string |
| postLikes | integer |
| postComments | integer |
| postReposts | integer |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| commenterHandle | commenterName | commenterHeadline | body | likes | replies |
|---|---|---|---|---|---|
| marcus-lee | Marcus Lee | VP Sales, EMEA \| B2B SaaS | Strong take. Discovery calls are where most deals are lost. | 48 | 5 |
| marcus-lee | Marcus Lee | VP Sales, EMEA \| B2B SaaS | Congrats on the launch, team! | 9 | 1 |
| marcus-lee | Marcus Lee | VP Sales, EMEA \| B2B SaaS | We're hiring too, happy to share notes. | 17 | 2 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One comment | 1 | $0.002 |
| 10 comments | 10 | $0.02 |
| A full page | 100 | $0.2 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the LinkedIn Profile Comments API in the playground](https://apiforagents.dev/dashboard/run?platform=linkedin&op=profileComments): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no LinkedIn account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Questions

### What does it return?

The same comment rows as the comments API: comment, post URL, text, likes, replies and when, for comments the person left anywhere on LinkedIn.

### How much does it cost?

$0.002 per comment returned.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=linkedin&op=profileComments (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn Reactions API. Pay per record.

> Everyone who liked or reacted to a LinkedIn post, with name, headline and reaction type. $0.002 per reaction.

Canonical: https://apiforagents.dev/platforms/linkedin/reactions-api · Updated 2026-10-21

Get everyone who reacted to a LinkedIn post: their name, headline, profile URL, location and the reaction they chose. Filter by reaction type, up to ten posts per call.

- Price: $0.002 / reaction
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/linkedin

## What people build with the LinkedIn Reactions API

- **Turn likes into leads.** The hundreds of people who liked a post in your niche are a warm list. Get their names and headlines.
- **Audit engagement.** See who actually reacts to a creator's posts before you sponsor them.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"postReactions","subjects":["https://www.linkedin.com/posts/<post-id>"],"reactionTypes":["like"],"limit":25,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"postReactions","subjects":["https://www.linkedin.com/posts/<post-id>"],"reactionTypes":["like"],"limit":25}'
```

## Inputs

Everything you can send in one postReactions call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Post URLs. 1-10 items |
| reactionTypes | enum list | Keep only these reactions: like, celebrate, support, love, insightful, funny. Omit for all of them. |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| reactorProfileId | string |
| reactorHandle | string |
| reactorName | string |
| reactorHeadline | string |
| reactorUrl | string |
| reactorAvatarUrl | string |
| reactorLocation | string |
| reactionType | string |
| postUrn | string |
| postUrl | string |
| postAuthor | string |
| postAuthorHandle | string |
| postAuthorUrl | string |
| postAuthorHeadline | string |
| postAuthorProfileId | string |
| postAuthorType | string |
| postText | string |
| postPostedAt | string |
| postMediaUrl | string |
| postLikes | integer |
| postComments | integer |
| postReposts | integer |
| reactedAt | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| reactorHandle | reactorName | reactorHeadline | reactorLocation | reactionType | postAuthor |
|---|---|---|---|---|---|
| priya-nair | Priya Nair | Product Lead at Ledgerly | Mumbai, India | LIKE | Ananya Rao |
| daniel-kim | Daniel Kim | Engineering Manager at Kitebank | Seoul, South Korea | PRAISE | Ananya Rao |
| emma-novak | Emma Novak | Head of People at Northfold | Prague, Czechia | INTEREST | Ananya Rao |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One reaction | 1 | $0.002 |
| 10 reactions | 10 | $0.02 |
| A full page | 100 | $0.2 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the LinkedIn Reactions API in the playground](https://apiforagents.dev/dashboard/run?platform=linkedin&op=postReactions): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no LinkedIn account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Questions

### What does the LinkedIn Reactions API return?

One row per reaction: the reactor's handle, name, headline, profile URL and location, the reaction type, and the post's URL, author and text.

### Can I filter by reaction type?

Yes: like, celebrate, support, love, insightful or funny.

### How much does it cost?

$0.002 per reaction returned, up to a hundred per call.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=linkedin&op=postReactions (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn Profile Reactions API. Pay per record.

> The LinkedIn posts a person reacted to, newest first, with each post's author and text. $0.002 per reaction.

Canonical: https://apiforagents.dev/platforms/linkedin/profile-reactions-api · Updated 2026-10-21

See what a person reacts to across LinkedIn: the posts they liked or celebrated, newest first, with each post's author and text.

- Price: $0.002 / reaction
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/linkedin

## What people build with the LinkedIn Profile Reactions API

- **Read intent.** What someone likes this week says what they are thinking about. Use it to time and tailor outreach.
- **Map influence.** Find the voices a group of buyers keeps reacting to.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profileReactions","subjects":["satyanadella"],"limit":25,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profileReactions","subjects":["satyanadella"],"limit":25}'
```

## Inputs

Everything you can send in one profileReactions call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | /in/<slug> handles or profile URLs. 1-10 items |
| postedWithin | enum |  |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| reactorProfileId | string |
| reactorHandle | string |
| reactorName | string |
| reactorHeadline | string |
| reactorUrl | string |
| reactorAvatarUrl | string |
| reactorLocation | string |
| reactionType | string |
| postUrn | string |
| postUrl | string |
| postAuthor | string |
| postAuthorHandle | string |
| postAuthorUrl | string |
| postAuthorHeadline | string |
| postAuthorProfileId | string |
| postAuthorType | string |
| postText | string |
| postPostedAt | string |
| postMediaUrl | string |
| postLikes | integer |
| postComments | integer |
| postReposts | integer |
| reactedAt | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| reactorHandle | reactorName | reactorHeadline | reactorLocation | reactionType | postAuthor |
|---|---|---|---|---|---|
| sofia-ortiz | Sofia Ortiz | Data Engineer · Python, dbt, Airflow | Austin, Texas, United States | LIKE | Tom Becker |
| sofia-ortiz | Sofia Ortiz | Data Engineer · Python, dbt, Airflow | Austin, Texas, United States | EMPATHY | Leila Haddad |
| sofia-ortiz | Sofia Ortiz | Data Engineer · Python, dbt, Airflow | Austin, Texas, United States | INTEREST | Kitebank |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One reaction | 1 | $0.002 |
| 10 reactions | 10 | $0.02 |
| A full page | 100 | $0.2 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the LinkedIn Profile Reactions API in the playground](https://apiforagents.dev/dashboard/run?platform=linkedin&op=profileReactions): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no LinkedIn account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Questions

### What does it return?

Reaction rows: the reaction type, the post URL, author and text, and when, for reactions the person left anywhere on LinkedIn.

### How much does it cost?

$0.002 per reaction returned.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=linkedin&op=profileReactions (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn Ad Library API. Pay per record.

> A company's ads from the LinkedIn Ad Library: copy, format, media, landing page and dates. $0.002 per ad.

Canonical: https://apiforagents.dev/platforms/linkedin/ads-library-api · Updated 2026-10-21

Read a company's ads from the LinkedIn Ad Library: headline, body, format, media, click-through URL, who paid, targeting location, impressions where shown, and when each ad ran.

- Price: $0.002 / ad
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/linkedin

## What people build with the LinkedIn Ad Library API

- **Competitive ad research.** Every ad a competitor is running on LinkedIn right now, with the copy and the landing page.
- **Messaging research.** See how a market talks to its buyers before you write your own campaigns.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"adsLibrary","subject":"https://www.linkedin.com/ad-library/search?companyIds=<company-id>","limit":10,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/linkedin \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"adsLibrary","subject":"https://www.linkedin.com/ad-library/search?companyIds=<company-id>","limit":10}'
```

## Inputs

Everything you can send in one adsLibrary call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subject * | string | An Ad Library URL. An advertiser page or one ad's detail page. ≤400 chars |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| adId | string |
| adUrl | string |
| advertiserUrl | string |
| paidBy | string |
| headline | string |
| body | string |
| format | string |
| mediaType | string |
| mediaUrl | string |
| clickUrl | string |
| impressions | integer |
| targetingLocation | string |
| started | string |
| ended | string |
| daysActive | integer |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| paidBy | headline | body | format | mediaType | impressions |
|---|---|---|---|---|---|
| Northfold | Close your books 3x faster | Finance teams at 400+ companies close in 2 days. | SINGLE_IMAGE | image | 10k-50k |
| Northfold | The 2026 finance team benchmark | Download the report: 1,200 teams surveyed. | DOCUMENT | document | 50k-100k |
| Northfold | See it in 90 seconds | A quick tour of month-end close, start to finish. | VIDEO | video | 1k-5k |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One ad | 1 | $0.002 |
| 10 ads | 10 | $0.02 |
| A full page | 100 | $0.2 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the LinkedIn Ad Library API in the playground](https://apiforagents.dev/dashboard/run?platform=linkedin&op=adsLibrary): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no LinkedIn account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Questions

### What does the LinkedIn Ad Library API return?

One row per ad: ad id and URL, advertiser URL, who paid, headline, body, format, media type and URL, click URL, impressions where LinkedIn shows them, targeting location, and start and end dates.

### What do I pass in?

A LinkedIn Ad Library URL: an advertiser's page (all their live ads) or a single ad's detail page.

### How much does it cost?

$0.002 per ad returned, up to a hundred per call.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=linkedin&op=adsLibrary (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Instagram Profile API. Pay per record.

> Instagram profile data as JSON: bio, followers, posts count, engagement rate and category. From $0.0018 per profile, pay as you go.

Canonical: https://apiforagents.dev/platforms/instagram/profile-api · Updated 2026-10-21

Turn an Instagram username or profile URL into clean JSON: name, bio, category, followers, following, post count, engagement rate and when the account last posted. Up to ten accounts per call, priced per profile.

- Price: $0.0018 / profile
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/instagram

## What people build with the Instagram Profile API

- **Vet influencers.** Check followers, engagement rate and how recently an account posted before you offer a deal.
- **Enrich a creator list.** Paste in a list of handles and get back the bio, category, website and size of each account.
- **Research before outreach.** Let your agent read a brand's bio, link and recent posts before it writes the first message.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/instagram \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profiles","subjects":["natgeo","nike"],"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/instagram \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profiles","subjects":["natgeo","nike"]}'
```

## Inputs

Everything you can send in one profiles call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Usernames or profile URLs. 1-10 items |
| fields | enum list | 'contact' adds the business email/phone fields to the answer; the fetch is the same either way, so this shapes the RESPONSE, not the bill. |
| include.posts.limit | integer | Recent posts to fetch per account, newest first; 1-48. |
| include.posts.tab | enum | Which tab to read: the grid ("posts") or Reels ("reels"). |
| include.posts.since | string | Only posts on or after this day (YYYY-MM-DD). Omit for the newest. |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| username | string |
| igUserId | string |
| fullName | string |
| biography | string |
| avatarUrl | string |
| profileUrl | string |
| externalUrl | string |
| bioLinks | list of object |
| category | string |
| isVerified | boolean |
| isPrivate | boolean |
| isBusiness | boolean |
| followers | integer |
| following | integer |
| mediaCount | integer |
| highlightReelCount | integer |
| engagementRate | number |
| contactEmail | string |
| contactPhone | string |
| location | string |
| businessStreet | string |
| businessZip | string |
| businessCityId | string |
| businessLatitude | number |
| businessLongitude | number |
| facebookPage | object |
| lastPostedAt | string |
| recentPosts | list of object |
| relatedAccounts | list of object |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| username | fullName | biography | category | isVerified | isBusiness |
|---|---|---|---|---|---|
| brewlab.coffee | Brewlab Coffee | Small-batch roasters · Austin, TX | Coffee shop | false | true |
| mira.moves | Mira \| Pilates | Pilates for busy people · new class every Monday | Fitness trainer | true | true |
| northfold.studio | Northfold Studio | Brand and product design | Design studio | false | true |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One profile | 1 | $0.0018 |
| 10 profiles | 10 | $0.018 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Instagram Profile API in the playground](https://apiforagents.dev/dashboard/run?platform=instagram&op=profiles): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Instagram account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Instagram in n8n](https://apiforagents.dev/integrations/n8n/instagram)
- [Instagram in Make](https://apiforagents.dev/integrations/make/instagram)
- [Instagram in Zapier](https://apiforagents.dev/integrations/zapier/instagram)
- [Instagram in Python](https://apiforagents.dev/integrations/python/instagram)
- [Instagram in LangChain](https://apiforagents.dev/integrations/langchain/instagram)
- [Instagram in Claude Code](https://apiforagents.dev/integrations/claude-code/instagram)

## Questions

### What does the Instagram Profile API return?

One row per account: username, full name, biography, category, whether it is verified, a business or private, followers, following, media count, engagement rate, location, user id, avatar URL, external link and the date of the last post. Ask for the contact field to add the business email and phone fields to the answer.

### What do I pass in?

Up to ten usernames or profile URLs in subjects. Add include.posts to get each account's recent posts (up to 48 per account, grid or Reels) in the same call.

### How much does an Instagram profile lookup cost?

$0.0018 per profile at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

### Can it read private accounts?

No. It reads what is public on the profile page. A private account comes back flagged as private.

### Can an AI agent use it without me creating an account?

Yes. An agent registers itself with one POST request, gets $0.10 free and can run calls straight away. The recipe is at https://apiforagents.dev/auth.md.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=instagram&op=profiles (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Instagram Posts API. Pay per record.

> An Instagram account's recent posts or Reels as JSON: caption, likes, comments, views and hashtags. From $0.0018 per post.

Canonical: https://apiforagents.dev/platforms/instagram/posts-api · Updated 2026-10-21

Get one Instagram account's recent posts, newest first, from the grid or the Reels tab: caption, type, date, likes, comments, views, hashtags and permalink. The author's profile card comes in the same answer.

- Price: $0.0018 / post
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/instagram

## What people build with the Instagram Posts API

- **Track a competitor's content.** See what a brand posted this month and which posts got the most likes and comments.
- **Audit a creator.** Read the last 48 posts of an account, spot paid partnerships and check real engagement per post.
- **Feed an agent.** Give your agent an account's recent captions and hashtags before it writes about that brand.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/instagram \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"posts","subject":"natgeo","limit":12,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/instagram \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"posts","subject":"natgeo","limit":12}'
```

## Inputs

Everything you can send in one posts call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subject * | string | One username or profile URL. ≤400 chars |
| limit | integer | 1-48 |
| tab | enum | 'reels' pulls the Reels tab instead of the grid. Non-default tabs and date floors always fetch fresh (they never touch the grid's cache markers) and are served fresh from a source that has them. |
| since | string | YYYY-MM-DD |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| shortCode | string |
| igMediaId | string |
| caption | string |
| kind | string |
| productType | string |
| postedAt | string |
| permalink | string |
| mediaUrl | string |
| videoUrl | string |
| images | list of string |
| media | list of object |
| width | integer |
| height | integer |
| likes | integer |
| comments | integer |
| views | integer |
| plays | integer |
| saves | integer |
| shares | integer |
| videoDuration | number |
| language | string |
| likesHidden | boolean |
| isPinned | boolean |
| isPaidPartnership | boolean |
| hashtags | list of string |
| mentions | list of string |
| owner | object |
| taggedUsers | list of object |
| coauthors | list of object |
| sponsors | list of object |
| locationName | string |
| locationId | string |
| music | object |
| firstComment | string |
| recentComments | list of object |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| owner | caption | kind | postedAt | likes | comments |
|---|---|---|---|---|---|
| {"username":"brewlab.coffee"} | New single origin from Chikmagalur ☕ #specialtycoffee | image | 2026-10-15T08:00:00Z | 2140 | 88 |
| {"username":"brewlab.coffee"} | How we dial in espresso every morning | reel | 2026-10-12T07:30:00Z | 5310 | 142 |
| {"username":"brewlab.coffee"} | Autumn menu, swipe for all 6 drinks | carousel | 2026-10-05T10:15:00Z | 3020 | 97 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One post | 1 | $0.0018 |
| 10 posts | 10 | $0.018 |
| A full page | 48 | $0.086 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Instagram Posts API in the playground](https://apiforagents.dev/dashboard/run?platform=instagram&op=posts): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Instagram account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Instagram in n8n](https://apiforagents.dev/integrations/n8n/instagram)
- [Instagram in Make](https://apiforagents.dev/integrations/make/instagram)
- [Instagram in Zapier](https://apiforagents.dev/integrations/zapier/instagram)
- [Instagram in Python](https://apiforagents.dev/integrations/python/instagram)
- [Instagram in LangChain](https://apiforagents.dev/integrations/langchain/instagram)
- [Instagram in Claude Code](https://apiforagents.dev/integrations/claude-code/instagram)

## Questions

### What does the Instagram Posts API return?

One row per post: author username, caption, kind, posted date, likes, comments, hashtags, views and duration for video, media id, permalink, media URL, whether it is pinned and whether it is marked as a paid partnership.

### What do I pass in?

One username or profile URL in subject, a limit from 1 to 48, tab set to posts or reels, and an optional since date (YYYY-MM-DD) to stop at a given day.

### How much does it cost?

$0.0018 per post at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=instagram&op=posts (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Instagram Similar Accounts API. Pay per record.

> Instagram accounts related to one account, with username, name and followers, as JSON. From $0.00045 per account found.

Canonical: https://apiforagents.dev/platforms/instagram/similar-accounts-api · Updated 2026-10-21

Give one Instagram account and get back the accounts related to it: username, full name and followers for each. A quick way to find more accounts like one you already know.

- Price: $0.00045 / account
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/instagram

## What people build with the Instagram Similar Accounts API

- **Find more creators.** Start from one creator who fits your brand and get a list of similar accounts to vet next.
- **Map a niche.** Walk out from a few known accounts to see who else sits in the same space.
- **Competitor discovery.** Find brands Instagram itself places next to yours.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/instagram \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"similar","subject":"natgeo","limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/instagram \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"similar","subject":"natgeo","limit":20}'
```

## Inputs

Everything you can send in one similar call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subject * | string | One username or profile URL. ≤400 chars |
| limit | integer | 1-50 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| username | string |
| fullName | string |
| igUserId | string |
| isVerified | boolean |
| isPrivate | boolean |
| avatarUrl | string |
| profileUrl | string |
| followers | integer |
| profile | object |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| username | fullName | followers | details |
|---|---|---|---|
| roastery.co | Roastery Co. | 61200 | {} |
| dailygrind.cafe | Daily Grind | 23400 | {} |
| beanbar | Bean Bar | 12800 | {} |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One account | 1 | $0.00045 |
| 10 accounts | 10 | $0.0045 |
| A full page | 50 | $0.022 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Instagram Similar Accounts API in the playground](https://apiforagents.dev/dashboard/run?platform=instagram&op=similar): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Instagram account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Instagram in n8n](https://apiforagents.dev/integrations/n8n/instagram)
- [Instagram in Make](https://apiforagents.dev/integrations/make/instagram)
- [Instagram in Zapier](https://apiforagents.dev/integrations/zapier/instagram)
- [Instagram in Python](https://apiforagents.dev/integrations/python/instagram)
- [Instagram in LangChain](https://apiforagents.dev/integrations/langchain/instagram)
- [Instagram in Claude Code](https://apiforagents.dev/integrations/claude-code/instagram)

## Questions

### What does it return?

One row per related account: username, full name and follower count. Send the usernames to the profile operation for the full card.

### What do I pass in?

One username or profile URL in subject and a limit from 1 to 50.

### How much does it cost?

$0.00045 per account at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=instagram&op=similar (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Instagram Hashtag API. Pay per record.

> Instagram posts tagged with a hashtag, top or newest, with caption, likes, comments and views as JSON. From $0.00045 per post.

Canonical: https://apiforagents.dev/platforms/instagram/hashtag-api · Updated 2026-10-21

Get the posts tagged with an Instagram hashtag, either the top ranked ones or the newest first. Each post comes with its author, caption, likes, comments, views and permalink.

- Price: $0.00045 / post
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/instagram

## What people build with the Instagram Hashtag API

- **Social listening.** Watch a campaign or product hashtag and see who is posting and how it lands.
- **Find creators by topic.** The accounts posting top content under a niche hashtag are a ready list to vet.
- **Trend research.** Read the newest posts under a tag to see what people are making about a topic this week.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/instagram \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"hashtag","hashtag":"streetphotography","sort":"top","limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/instagram \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"hashtag","hashtag":"streetphotography","sort":"top","limit":20}'
```

## Inputs

Everything you can send in one hashtag call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| hashtag * | string | ≤150 chars |
| sort | enum |  |
| limit | integer | 1-50 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| shortCode | string |
| igMediaId | string |
| caption | string |
| kind | string |
| productType | string |
| postedAt | string |
| permalink | string |
| mediaUrl | string |
| videoUrl | string |
| images | list of string |
| media | list of object |
| width | integer |
| height | integer |
| likes | integer |
| comments | integer |
| views | integer |
| plays | integer |
| saves | integer |
| shares | integer |
| videoDuration | number |
| language | string |
| likesHidden | boolean |
| isPinned | boolean |
| isPaidPartnership | boolean |
| hashtags | list of string |
| mentions | list of string |
| owner | object |
| taggedUsers | list of object |
| coauthors | list of object |
| sponsors | list of object |
| locationName | string |
| locationId | string |
| music | object |
| firstComment | string |
| recentComments | list of object |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| owner | caption | kind | postedAt | likes | comments |
|---|---|---|---|---|---|
| {"username":"mira.moves"} | 10-minute core flow, save it for later #pilates | reel | 2026-10-13T06:00:00Z | 18250 | 412 |
| {"username":"studio.flow"} | Reformer basics for week one #pilates | reel | 2026-10-12T17:20:00Z | 6400 | 120 |
| {"username":"corewithkai"} | My morning mat routine #pilates #wellness | carousel | 2026-10-11T05:45:00Z | 2980 | 64 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One post | 1 | $0.00045 |
| 10 posts | 10 | $0.0045 |
| A full page | 50 | $0.022 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Instagram Hashtag API in the playground](https://apiforagents.dev/dashboard/run?platform=instagram&op=hashtag): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Instagram account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Instagram in n8n](https://apiforagents.dev/integrations/n8n/instagram)
- [Instagram in Make](https://apiforagents.dev/integrations/make/instagram)
- [Instagram in Zapier](https://apiforagents.dev/integrations/zapier/instagram)
- [Instagram in Python](https://apiforagents.dev/integrations/python/instagram)
- [Instagram in LangChain](https://apiforagents.dev/integrations/langchain/instagram)
- [Instagram in Claude Code](https://apiforagents.dev/integrations/claude-code/instagram)

## Questions

### What does the Instagram Hashtag API return?

One row per post: author username, caption, kind, posted date, likes, comments, views and duration for video, hashtags, media id, permalink, media URL, and whether it is pinned or a paid partnership.

### What do I pass in?

The hashtag, a sort of top (the ranked timeline) or newest (chronological), and a limit from 1 to 50.

### How much does it cost?

$0.00045 per post at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=instagram&op=hashtag (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Instagram Account Search API. Pay per record.

> Find Instagram accounts by name or keyword, with username, name and followers as JSON. From $0.00045 per account found.

Canonical: https://apiforagents.dev/platforms/instagram/account-search-api · Updated 2026-10-21

Search Instagram accounts by name or keyword, the way Instagram's own search does. Each hit comes back with its username, full name and follower count.

- Price: $0.00045 / account
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/instagram

## What people build with the Instagram Account Search API

- **Find the right handle.** Turn a brand or a topic into real usernames before you look anything else up.
- **Build a creator list.** Search a niche keyword and get the accounts to vet, with their size.
- **Ground an agent.** Let your agent find the handle from a search instead of guessing it from a name.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/instagram \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"coffee roasters","limit":10,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/instagram \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"coffee roasters","limit":10}'
```

## Inputs

Everything you can send in one search call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | ≤300 chars |
| limit | integer | 1-25 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| username | string |
| fullName | string |
| igUserId | string |
| isVerified | boolean |
| isPrivate | boolean |
| avatarUrl | string |
| profileUrl | string |
| followers | integer |
| profile | object |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| username | fullName | followers | details |
|---|---|---|---|
| mira.moves | Mira \| Pilates | 182400 | {} |
| corewithkai | Kai Tan | 96300 | {} |
| studio.flow | Studio Flow | 41250 | {} |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One account | 1 | $0.00045 |
| 10 accounts | 10 | $0.0045 |
| A full page | 25 | $0.011 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Instagram Account Search API in the playground](https://apiforagents.dev/dashboard/run?platform=instagram&op=search): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Instagram account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Instagram in n8n](https://apiforagents.dev/integrations/n8n/instagram)
- [Instagram in Make](https://apiforagents.dev/integrations/make/instagram)
- [Instagram in Zapier](https://apiforagents.dev/integrations/zapier/instagram)
- [Instagram in Python](https://apiforagents.dev/integrations/python/instagram)
- [Instagram in LangChain](https://apiforagents.dev/integrations/langchain/instagram)
- [Instagram in Claude Code](https://apiforagents.dev/integrations/claude-code/instagram)

## Questions

### What does it return?

One row per account: username, full name, follower count, and whether the account is already known to us.

### What do I pass in?

A query (a name or keyword, up to 300 characters) and a limit from 1 to 25.

### How much does it cost?

$0.00045 per account at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=instagram&op=search (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Instagram Comments API. Pay per record.

> Top comments on Instagram posts and Reels by URL, with author, text, likes and date as JSON. From $0.00045 per comment.

Canonical: https://apiforagents.dev/platforms/instagram/comments-api · Updated 2026-10-21

Get the top comments on any public Instagram post or Reel by URL: who commented, what they wrote, how many likes it got and when. Up to ten posts per call.

- Price: $0.00045 / comment
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/instagram

## What people build with the Instagram Comments API

- **Read the reaction.** See what people actually said under a launch post, yours or a competitor's.
- **Sentiment analysis.** Feed real comments into a model to score how an audience feels about a product.
- **Check engagement quality.** Before you hire a creator, read whether their comments look like real people.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/instagram \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"comments","subjects":["https://www.instagram.com/p/<shortcode>/"],"limit":50,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/instagram \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"comments","subjects":["https://www.instagram.com/p/<shortcode>/"],"limit":50}'
```

## Inputs

Everything you can send in one comments call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Post URLs (/p/ or /reel/) or bare shortcodes. 1-10 items |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| igCommentId | string |
| author | string |
| body | string |
| score | integer |
| commentedAt | string |
| commenter | object |
| replyCount | integer |
| commentUrl | string |
| postUrl | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| author | body | score | commentedAt | igCommentId | details |
|---|---|---|---|---|---|
| ravi.k | Tried this today, so good! | 42 | 2026-10-15T09:10:00Z | 1406279790 | {} |
| lena_m | Which beans do you use? | 18 | 2026-10-15T09:44:00Z | 3977780793 | {} |
| joe.cafe | Need this in Pune 🙏 | 9 | 2026-10-16T04:12:00Z | 1979359272 | {} |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One comment | 1 | $0.00045 |
| 10 comments | 10 | $0.0045 |
| A full page | 100 | $0.045 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Instagram Comments API in the playground](https://apiforagents.dev/dashboard/run?platform=instagram&op=comments): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Instagram account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Instagram in n8n](https://apiforagents.dev/integrations/n8n/instagram)
- [Instagram in Make](https://apiforagents.dev/integrations/make/instagram)
- [Instagram in Zapier](https://apiforagents.dev/integrations/zapier/instagram)
- [Instagram in Python](https://apiforagents.dev/integrations/python/instagram)
- [Instagram in LangChain](https://apiforagents.dev/integrations/langchain/instagram)
- [Instagram in Claude Code](https://apiforagents.dev/integrations/claude-code/instagram)

## Questions

### What does the Instagram Comments API return?

One row per comment: the author's username, the comment text, its like count, when it was posted and the comment id.

### What do I pass in?

Up to ten post URLs (/p/ or /reel/) or bare shortcodes in subjects, and a limit from 1 to 100.

### How much does it cost?

$0.00045 per comment at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=instagram&op=comments (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Instagram Followers API. Pay per record.

> The followers or following list of public Instagram accounts, with username, name and followers as JSON. From $0.000675 per account.

Canonical: https://apiforagents.dev/platforms/instagram/followers-api · Updated 2026-10-21

Get the followers or the following list of up to ten public Instagram accounts. Each row is an account with its username, full name and follower count.

- Price: $0.000675 / account
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/instagram

## What people build with the Instagram Followers API

- **Audience research.** See who follows a brand in your market and what kind of accounts they are.
- **Find partners.** The accounts a well known brand follows are often the creators and partners it works with.
- **Grow a creator list.** Walk out from one account's following list to find more people to vet.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/instagram \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"followers","subjects":["natgeo"],"direction":"following","limit":50,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/instagram \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"followers","subjects":["natgeo"],"direction":"following","limit":50}'
```

## Inputs

Everything you can send in one followers call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Usernames or profile URLs. 1-10 items |
| direction | enum |  |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| username | string |
| fullName | string |
| igUserId | string |
| isVerified | boolean |
| isPrivate | boolean |
| avatarUrl | string |
| profileUrl | string |
| followers | integer |
| profile | object |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| username | fullName | followers | details |
|---|---|---|---|
| ravi.k | Ravi Kumar | 412 | {} |
| lena_m | Lena M. | 2100 | {} |
| sam.runs | Sam Taylor | 96 | {} |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One account | 1 | $0.000675 |
| 10 accounts | 10 | $0.0068 |
| A full page | 100 | $0.068 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Instagram Followers API in the playground](https://apiforagents.dev/dashboard/run?platform=instagram&op=followers): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Instagram account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Instagram in n8n](https://apiforagents.dev/integrations/n8n/instagram)
- [Instagram in Make](https://apiforagents.dev/integrations/make/instagram)
- [Instagram in Zapier](https://apiforagents.dev/integrations/zapier/instagram)
- [Instagram in Python](https://apiforagents.dev/integrations/python/instagram)
- [Instagram in LangChain](https://apiforagents.dev/integrations/langchain/instagram)
- [Instagram in Claude Code](https://apiforagents.dev/integrations/claude-code/instagram)

## Questions

### What does the Instagram Followers API return?

One row per account in the list: username, full name, follower count and whether the account is already known to us.

### What do I pass in?

Up to ten usernames or profile URLs in subjects, direction set to followers or following, and a limit from 1 to 100.

### How much does it cost?

$0.000675 per account at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

### Does it work on private accounts?

No. It reads the lists of public accounts only.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=instagram&op=followers (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# YouTube Channel API. Pay per record.

> YouTube channel data as JSON: subscribers, total views, video count, country and description. From $0.00045 per channel.

Canonical: https://apiforagents.dev/platforms/youtube/channel-api · Updated 2026-10-21

Turn a YouTube @handle, channel id or channel URL into clean JSON: name, description, country, subscribers, total videos, total views and the date the channel joined. Up to ten channels per call, priced per channel.

- Price: $0.00045 / channel
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/youtube

## What people build with the YouTube Channel API

- **Vet creators.** Check subscribers, total views and video count before you sponsor a channel.
- **Enrich a channel list.** Paste in a list of handles and get back the size and country of each channel.
- **Track competitors.** Measure a rival channel's subscribers and views over time, each row dated.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/youtube \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"channels","subjects":["@mkbhd"],"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/youtube \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"channels","subjects":["@mkbhd"]}'
```

## Inputs

Everything you can send in one channels call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | @handles, UC… ids or channel URLs. 1-10 items |
| include.videos.limit | integer | Recent videos to fetch per channel, newest first; 1-50. |
| include.videos.since | string | Only videos published on or after this day (YYYY-MM-DD). |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| handle | string |
| channelId | string |
| name | string |
| description | string |
| avatarUrl | string |
| bannerUrl | string |
| country | string |
| isVerified | boolean |
| joinedOn | string |
| links | list of string |
| subscribers | integer |
| totalVideos | integer |
| totalViews | integer |
| channelUrl | string |
| canonicalHandle | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| handle | name | description | country | isVerified | joinedOn |
|---|---|---|---|---|---|
| @mirapilates | Mira Pilates | Short pilates classes you can do at home. | IN | true | 2019-03-11 |
| @northfoldhq | Northfold | Finance, made calmer. | GB | false | 2020-07-02 |
| @cookwithkai | Cook with Kai | Weeknight recipes in under 30 minutes. | SG | true | 2016-11-20 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One channel | 1 | $0.00045 |
| 10 channels | 10 | $0.0045 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the YouTube Channel API in the playground](https://apiforagents.dev/dashboard/run?platform=youtube&op=channels): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no YouTube account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [YouTube in n8n](https://apiforagents.dev/integrations/n8n/youtube)
- [YouTube in Make](https://apiforagents.dev/integrations/make/youtube)
- [YouTube in Zapier](https://apiforagents.dev/integrations/zapier/youtube)
- [YouTube in Python](https://apiforagents.dev/integrations/python/youtube)
- [YouTube in LangChain](https://apiforagents.dev/integrations/langchain/youtube)
- [YouTube in Claude Code](https://apiforagents.dev/integrations/claude-code/youtube)

## Questions

### What does the YouTube Channel API return?

One row per channel: handle, name, description, country, whether it is verified, the date it joined, subscribers, total videos, total views, channel id, avatar URL and banner URL.

### What do I pass in?

Up to ten @handles, channel ids (starting with UC) or channel URLs in subjects. Add include.videos to get each channel's recent videos (up to 50, with an optional since date) in the same call.

### How much does a YouTube channel lookup cost?

$0.00045 per channel at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

### Can an AI agent use it without me creating an account?

Yes. An agent registers itself with one POST request, gets $0.10 free and can run calls straight away. The recipe is at https://apiforagents.dev/auth.md.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=youtube&op=channels (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# YouTube Videos API. Pay per record.

> A YouTube channel's recent videos as JSON: title, views, likes, comments, duration and publish date. From $0.00045 per video.

Canonical: https://apiforagents.dev/platforms/youtube/videos-api · Updated 2026-10-21

Get one YouTube channel's recent videos with their numbers: title, type, publish date, duration, category, views, likes, comments and keywords. The channel card comes in the same answer when we hold it.

- Price: $0.00045 / video
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/youtube

## What people build with the YouTube Videos API

- **Content research.** See which videos on a channel got the most views and comments, and what they were about.
- **Sponsor due diligence.** Check the views a creator's last ten videos actually got, not the subscriber count.
- **Feed an agent.** Give your agent a channel's recent titles and keywords before it writes a pitch or a brief.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/youtube \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"videos","subject":"@mkbhd","limit":10,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/youtube \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"videos","subject":"@mkbhd","limit":10}'
```

## Inputs

Everything you can send in one videos call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subject * | string | One @handle, UC… id or channel URL. ≤400 chars |
| limit | integer | 1-50 |
| since | string | YYYY-MM-DD |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| videoId | string |
| title | string |
| description | string |
| kind | string |
| publishedAt | string |
| durationS | integer |
| category | string |
| keywords | list of string |
| isLive | boolean |
| thumbnailUrl | string |
| permalink | string |
| views | integer |
| likes | integer |
| comments | integer |
| channelHandle | string |
| channelNativeId | string |
| channelName | string |
| channelUrl | string |
| channelSubscribers | string |
| channelBadges | list of string |
| captions | list of object |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| channelHandle | title | kind | publishedAt | durationS | category |
|---|---|---|---|---|---|
| @cookwithkai | One-pan laksa in 25 minutes | video | 2026-10-09 | 902 | Howto & Style |
| @cookwithkai | Crispy rice, 3 ways | short | 2026-10-06 | 48 | Howto & Style |
| @cookwithkai | Sunday live: your questions answered | live | 2026-10-04 | 3720 | Howto & Style |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One video | 1 | $0.00045 |
| 10 videos | 10 | $0.0045 |
| A full page | 50 | $0.022 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the YouTube Videos API in the playground](https://apiforagents.dev/dashboard/run?platform=youtube&op=videos): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no YouTube account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [YouTube in n8n](https://apiforagents.dev/integrations/n8n/youtube)
- [YouTube in Make](https://apiforagents.dev/integrations/make/youtube)
- [YouTube in Zapier](https://apiforagents.dev/integrations/zapier/youtube)
- [YouTube in Python](https://apiforagents.dev/integrations/python/youtube)
- [YouTube in LangChain](https://apiforagents.dev/integrations/langchain/youtube)
- [YouTube in Claude Code](https://apiforagents.dev/integrations/claude-code/youtube)

## Questions

### What does the YouTube Videos API return?

One row per video: channel handle, title, kind, published date, duration in seconds, category, views, likes, comments, keywords, video id, whether it is live, thumbnail URL and permalink.

### What do I pass in?

One @handle, channel id or channel URL in subject, a limit from 1 to 50, and an optional since date (YYYY-MM-DD) for videos published on or after that day.

### How much does it cost?

$0.00045 per video at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=youtube&op=videos (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# YouTube Comments API. Pay per record.

> Top comments on YouTube videos and Shorts by URL or id, with author, text, likes and replies as JSON. From $0.00045 per comment.

Canonical: https://apiforagents.dev/platforms/youtube/comments-api · Updated 2026-10-21

Get the top comments on any public YouTube video or Short: who commented, what they wrote, likes, replies, when, and whether the channel owner wrote it. Up to ten videos per call.

- Price: $0.00045 / comment
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/youtube

## What people build with the YouTube Comments API

- **Audience research.** Read what viewers ask and complain about under the videos in your niche.
- **Product feedback.** Pull every top comment on a review of your product, or a competitor's, and sort out the themes.
- **Sentiment analysis.** Feed real comments into a model to score how a launch or a video landed.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/youtube \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"comments","subjects":["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"limit":50,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/youtube \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"comments","subjects":["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"limit":50}'
```

## Inputs

Everything you can send in one comments call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Watch/shorts URLs or bare video ids. 1-10 items |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| commentId | string |
| author | string |
| authorChannelId | string |
| body | string |
| likes | integer |
| replies | integer |
| postedAt | string |
| isOwner | boolean |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| author | body | likes | replies | postedAt | isOwner |
|---|---|---|---|---|---|
| @ravi_k | Made this last night, the whole family loved it. | 812 | 14 | 2026-10-10 | false |
| @lena.m | Can I use coconut cream instead of milk? | 236 | 3 | 2026-10-10 | false |
| @cookwithkai | @lena.m yes! Use a little less, it's thicker. | 410 | 0 | 2026-10-10 | true |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One comment | 1 | $0.00045 |
| 10 comments | 10 | $0.0045 |
| A full page | 100 | $0.045 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the YouTube Comments API in the playground](https://apiforagents.dev/dashboard/run?platform=youtube&op=comments): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no YouTube account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [YouTube in n8n](https://apiforagents.dev/integrations/n8n/youtube)
- [YouTube in Make](https://apiforagents.dev/integrations/make/youtube)
- [YouTube in Zapier](https://apiforagents.dev/integrations/zapier/youtube)
- [YouTube in Python](https://apiforagents.dev/integrations/python/youtube)
- [YouTube in LangChain](https://apiforagents.dev/integrations/langchain/youtube)
- [YouTube in Claude Code](https://apiforagents.dev/integrations/claude-code/youtube)

## Questions

### What does the YouTube Comments API return?

One row per comment: author, text, likes, reply count, posted date, whether the author is the channel owner, comment id and the author's channel id.

### What do I pass in?

Up to ten watch URLs, Shorts URLs or bare video ids in subjects, and a limit from 1 to 100.

### How much does it cost?

$0.00045 per comment at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=youtube&op=comments (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# X Profile API. Pay per record.

> X (Twitter) profile data as JSON: bio, followers, following, post count, location and join date. From $0.000225 per profile.

Canonical: https://apiforagents.dev/platforms/x_twitter/profile-api · Updated 2026-10-21

Turn an X (Twitter) @handle or profile URL into clean JSON: display name, bio, location, account type, join date, followers, following and post count. Up to ten accounts per call, priced per profile.

- Price: $0.000225 / profile
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/x_twitter

## What people build with the X Profile API

- **Enrich a lead list.** Add the bio, location and audience size to every X handle in a CRM or a spreadsheet.
- **Vet accounts.** Check followers, post count and join date before you partner with or reply to an account.
- **Research before a call.** Let your agent read a person's or a company's X bio and recent posts before a meeting.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/x_twitter \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profiles","subjects":["@NASA"],"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/x_twitter \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profiles","subjects":["@NASA"]}'
```

## Inputs

Everything you can send in one profiles call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | @handles or profile URLs. 1-10 items |
| include.posts.limit | integer | Recent posts to fetch per account, newest first; 1-50. |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| username | string |
| accountId | string |
| displayName | string |
| bio | string |
| location | string |
| website | string |
| avatarUrl | string |
| bannerUrl | string |
| isProtected | boolean |
| isBlueVerified | boolean |
| verifiedType | string |
| accountType | string |
| joinedAt | string |
| pinnedPostUrl | string |
| followers | integer |
| following | integer |
| postsCount | integer |
| mediaCount | integer |
| likesGiven | integer |
| canonicalUsername | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| username | displayName | bio | location | isBlueVerified | accountType |
|---|---|---|---|---|---|
| northfoldhq | Northfold | Close your books in days, not weeks. | London | true | business |
| ananya_builds | Ananya Rao | Marketing @paylane. Notes on growth. | Bengaluru | false | person |
| kitebank | Kitebank | Business banking that keeps up. | Austin, TX | true | business |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One profile | 1 | $0.000225 |
| 10 profiles | 10 | $0.0022 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the X Profile API in the playground](https://apiforagents.dev/dashboard/run?platform=x_twitter&op=profiles): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no X / Twitter account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [X / Twitter in n8n](https://apiforagents.dev/integrations/n8n/x_twitter)
- [X / Twitter in Make](https://apiforagents.dev/integrations/make/x_twitter)
- [X / Twitter in Zapier](https://apiforagents.dev/integrations/zapier/x_twitter)
- [X / Twitter in Python](https://apiforagents.dev/integrations/python/x_twitter)
- [X / Twitter in LangChain](https://apiforagents.dev/integrations/langchain/x_twitter)
- [X / Twitter in Claude Code](https://apiforagents.dev/integrations/claude-code/x_twitter)

## Questions

### What does the X Profile API return?

One row per account: username, display name, bio, location, whether it has the paid blue badge, account type, join date, followers, following, post count, account id, avatar and banner URLs, whether it is protected, and the pinned post URL.

### What do I pass in?

Up to ten @handles or profile URLs in subjects. Add include.posts to get each account's recent posts (up to 50 per account) in the same call.

### How much does an X profile lookup cost?

$0.000225 per profile at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

### Is the blue badge reported as verified?

No. The blue badge is a paid subscription, so it is reported as isBlueVerified and never as identity verification.

### Can an AI agent use it without me creating an account?

Yes. An agent registers itself with one POST request, gets $0.10 free and can run calls straight away. The recipe is at https://apiforagents.dev/auth.md.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=x_twitter&op=profiles (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# X Posts API. Pay per record.

> An X (Twitter) account's recent posts as JSON: text, views, likes, reposts, replies and quotes. From $0.000225 per post.

Canonical: https://apiforagents.dev/platforms/x_twitter/posts-api · Updated 2026-10-21

Get one X (Twitter) account's recent posts with engagement: the text, when it was posted, views, likes, reposts, replies and quotes, plus what each post replied to or quoted. The author's card comes in the same answer when we hold it.

- Price: $0.000225 / post
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/x_twitter

## What people build with the X Posts API

- **Monitor accounts.** Follow a list of founders, analysts or competitors and see what they posted and how it did.
- **Personalise outreach.** Read what a prospect posted this week and open with something they actually said.
- **Feed an agent.** Give your agent an account's last fifty posts before it writes about that person or company.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/x_twitter \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"posts","subject":"@NASA","limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/x_twitter \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"posts","subject":"@NASA","limit":20}'
```

## Inputs

Everything you can send in one posts call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subject * | string | One @handle or profile URL. ≤400 chars |
| limit | integer | 1-50 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| postId | string |
| body | string |
| kind | string |
| postedAt | string |
| permalink | string |
| language | string |
| mediaUrl | string |
| likes | integer |
| replies | integer |
| reposts | integer |
| quotes | integer |
| views | integer |
| bookmarks | integer |
| isReply | boolean |
| isQuote | boolean |
| isPinned | boolean |
| replyToHandle | string |
| quotedPostUrl | string |
| repostedPostUrl | string |
| hashtags | list of string |
| mentions | list of string |
| authorUsername | string |
| authorId | string |
| author | object |
| conversationId | string |
| media | list of object |
| outboundLinks | list of string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| authorUsername | body | kind | postedAt | views | likes |
|---|---|---|---|---|---|
| northfoldhq | Month-end close in 2 days, not 10. Here's how teams do it ↓ | post | 2026-10-14T13:00:00Z | 84200 | 1210 |
| northfoldhq | We're at Finance Leaders London next week. Come say hi! | post | 2026-10-10T09:00:00Z | 12100 | 140 |
| northfoldhq | @kitebank thanks for having us on the panel! | reply | 2026-10-08T17:30:00Z | 3200 | 48 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One post | 1 | $0.000225 |
| 10 posts | 10 | $0.0022 |
| A full page | 50 | $0.011 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the X Posts API in the playground](https://apiforagents.dev/dashboard/run?platform=x_twitter&op=posts): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no X / Twitter account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [X / Twitter in n8n](https://apiforagents.dev/integrations/n8n/x_twitter)
- [X / Twitter in Make](https://apiforagents.dev/integrations/make/x_twitter)
- [X / Twitter in Zapier](https://apiforagents.dev/integrations/zapier/x_twitter)
- [X / Twitter in Python](https://apiforagents.dev/integrations/python/x_twitter)
- [X / Twitter in LangChain](https://apiforagents.dev/integrations/langchain/x_twitter)
- [X / Twitter in Claude Code](https://apiforagents.dev/integrations/claude-code/x_twitter)

## Questions

### What does the X Posts API return?

One row per post: author username, text, kind, posted time, views, likes, reposts, replies, quotes, whether it is a reply and to whom, whether it is a quote or pinned, the quoted or reposted post URL, post id, permalink, media URL and author id.

### What do I pass in?

One @handle or profile URL in subject and a limit from 1 to 50.

### How much does it cost?

$0.000225 per post at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=x_twitter&op=posts (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# X Account Search API. Pay per record.

> Find X (Twitter) accounts by name, topic or bio phrase, each a full profile card as JSON. From $0.000225 per account found.

Canonical: https://apiforagents.dev/platforms/x_twitter/account-search-api · Updated 2026-10-21

Search X (Twitter) accounts by keyword: a name, a topic or a phrase from a bio. Each hit comes back as a full profile card with followers, bio and location.

- Price: $0.000225 / profile
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/x_twitter

## What people build with the X Account Search API

- **Find the right handle.** Turn a company or a topic into real X handles before you look anything else up.
- **Build a voice list.** Find the accounts that describe themselves as working in your niche, with their audience size.
- **Prospect by bio.** Search a phrase like a job title and get the accounts that use it.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/x_twitter \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"climate scientist","limit":10,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/x_twitter \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"climate scientist","limit":10}'
```

## Inputs

Everything you can send in one search call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | ≤300 chars |
| limit | integer | 1-25 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| username | string |
| accountId | string |
| displayName | string |
| bio | string |
| location | string |
| website | string |
| avatarUrl | string |
| bannerUrl | string |
| isProtected | boolean |
| isBlueVerified | boolean |
| verifiedType | string |
| accountType | string |
| joinedAt | string |
| pinnedPostUrl | string |
| followers | integer |
| following | integer |
| postsCount | integer |
| mediaCount | integer |
| likesGiven | integer |
| canonicalUsername | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| username | displayName | bio | location | isBlueVerified | accountType |
|---|---|---|---|---|---|
| pilates_daily | Pilates Daily | One pilates tip a day. | Sydney | false | person |
| mira_moves | Mira \| Pilates | Classes on YouTube, links below. | Mumbai | true | person |
| coreclub | Core Club | Pilates studios in 4 cities. | London | true | business |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One profile | 1 | $0.000225 |
| 10 profiles | 10 | $0.0022 |
| A full page | 25 | $0.0056 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the X Account Search API in the playground](https://apiforagents.dev/dashboard/run?platform=x_twitter&op=search): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no X / Twitter account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [X / Twitter in n8n](https://apiforagents.dev/integrations/n8n/x_twitter)
- [X / Twitter in Make](https://apiforagents.dev/integrations/make/x_twitter)
- [X / Twitter in Zapier](https://apiforagents.dev/integrations/zapier/x_twitter)
- [X / Twitter in Python](https://apiforagents.dev/integrations/python/x_twitter)
- [X / Twitter in LangChain](https://apiforagents.dev/integrations/langchain/x_twitter)
- [X / Twitter in Claude Code](https://apiforagents.dev/integrations/claude-code/x_twitter)

## Questions

### What does it return?

The same rows as the profile API: username, display name, bio, location, blue badge, account type, join date, followers, following, post count, account id, avatar and banner URLs, protected flag and pinned post URL.

### What do I pass in?

A query (up to 300 characters) and a limit from 1 to 25.

### How much does it cost?

$0.000225 per account at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=x_twitter&op=search (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# X Post Search API. Pay per record.

> Search X (Twitter) posts by keyword across all authors, with views, likes and reposts as JSON. From $0.000225 per post.

Canonical: https://apiforagents.dev/platforms/x_twitter/post-search-api · Updated 2026-10-21

Search X (Twitter) posts by keyword: what people are saying about a topic, a product or a company, across all authors. Each post comes with its author, text, views, likes, reposts, replies and quotes.

- Price: $0.000225 / post
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/x_twitter

## What people build with the X Post Search API

- **Social listening.** Every recent post that mentions your product, a competitor or a pain you solve.
- **Find warm leads.** People posting about the exact problem you fix are the people to talk to first.
- **Track a launch.** Search the launch name and read how it is landing, post by post.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/x_twitter \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchPosts","query":"electric cars","limit":25,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/x_twitter \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchPosts","query":"electric cars","limit":25}'
```

## Inputs

Everything you can send in one searchPosts call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | ≤300 chars |
| limit | integer | 1-50 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| postId | string |
| body | string |
| kind | string |
| postedAt | string |
| permalink | string |
| language | string |
| mediaUrl | string |
| likes | integer |
| replies | integer |
| reposts | integer |
| quotes | integer |
| views | integer |
| bookmarks | integer |
| isReply | boolean |
| isQuote | boolean |
| isPinned | boolean |
| replyToHandle | string |
| quotedPostUrl | string |
| repostedPostUrl | string |
| hashtags | list of string |
| mentions | list of string |
| authorUsername | string |
| authorId | string |
| author | object |
| conversationId | string |
| media | list of object |
| outboundLinks | list of string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| authorUsername | body | kind | postedAt | views | likes |
|---|---|---|---|---|---|
| fintech_weekly | Three fintechs raised $100M+ this week. Thread 🧵 | post | 2026-10-15T11:00:00Z | 210000 | 3400 |
| marcus_sells | Fintech funding is back, but only for revenue. | post | 2026-10-14T08:20:00Z | 41000 | 920 |
| ledgerlyhq | We just closed our Series A to build fintech for freelanc… | post | 2026-10-13T15:45:00Z | 58000 | 1500 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One post | 1 | $0.000225 |
| 10 posts | 10 | $0.0022 |
| A full page | 50 | $0.011 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the X Post Search API in the playground](https://apiforagents.dev/dashboard/run?platform=x_twitter&op=searchPosts): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no X / Twitter account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [X / Twitter in n8n](https://apiforagents.dev/integrations/n8n/x_twitter)
- [X / Twitter in Make](https://apiforagents.dev/integrations/make/x_twitter)
- [X / Twitter in Zapier](https://apiforagents.dev/integrations/zapier/x_twitter)
- [X / Twitter in Python](https://apiforagents.dev/integrations/python/x_twitter)
- [X / Twitter in LangChain](https://apiforagents.dev/integrations/langchain/x_twitter)
- [X / Twitter in Claude Code](https://apiforagents.dev/integrations/claude-code/x_twitter)

## Questions

### How is post search different from the posts API?

The posts API reads one account's recent posts. Post search finds posts by keyword across all of X, from anyone.

### What does it return?

One row per post: author username, text, kind, posted time, views, likes, reposts, replies, quotes, post id, permalink, media URL, whether it is a reply, quote or pinned, the quoted or reposted post URL, and author id.

### What do I pass in?

A query (up to 300 characters) and a limit from 1 to 50.

### How much does it cost?

$0.000225 per post at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=x_twitter&op=searchPosts (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Reddit User Posts API. Pay per record.

> A Reddit user's recent submissions as JSON: title, subreddit, score, comments and upvote ratio. From $0.0045 per post.

Canonical: https://apiforagents.dev/platforms/reddit/user-posts-api · Updated 2026-10-21

Get one Reddit user's recent submissions: the title, the subreddit, the kind of post, score, upvote ratio and comment count for each. Reddit has no profile card to measure, so the posts are the record.

- Price: $0.0045 / post
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/reddit

## What people build with the Reddit User Posts API

- **Understand a voice.** See where an active poster in your niche shares, and which of their posts land.
- **Check an account.** Read a user's recent submissions before you reply to them or quote them.
- **Track a brand account.** Follow what a company's own Reddit account posts and how each post scores.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/reddit \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"posts","subject":"u/spez","limit":25,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/reddit \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"posts","subject":"u/spez","limit":25}'
```

## Inputs

Everything you can send in one posts call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subject * | string | One u/username or profile URL. ≤400 chars |
| limit | integer | 1-50 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| postId | string |
| author | string |
| subreddit | string |
| title | string |
| body | string |
| kind | string |
| flair | string |
| isNsfw | boolean |
| permalink | string |
| externalUrl | string |
| mediaUrl | string |
| thumbnailUrl | string |
| postedAt | string |
| editedAt | string |
| score | integer |
| upvoteRatio | number |
| commentsCount | integer |
| subredditSubscribers | integer |
| fullname | string |
| gallery | list of string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| author | subreddit | title | kind | score | upvoteRatio |
|---|---|---|---|---|---|
| u/quietbuilder | r/startups | What we learned pricing our first B2B product | text | 1240 | 0.96 |
| u/quietbuilder | r/SaaS | Our churn halved after one onboarding change | text | 860 | 0.94 |
| u/quietbuilder | r/Entrepreneur | Year 2 revenue: honest numbers | image | 2310 | 0.91 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One post | 1 | $0.0045 |
| 10 posts | 10 | $0.045 |
| A full page | 50 | $0.225 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Reddit User Posts API in the playground](https://apiforagents.dev/dashboard/run?platform=reddit&op=posts): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Reddit account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Reddit in n8n](https://apiforagents.dev/integrations/n8n/reddit)
- [Reddit in Make](https://apiforagents.dev/integrations/make/reddit)
- [Reddit in Zapier](https://apiforagents.dev/integrations/zapier/reddit)
- [Reddit in Python](https://apiforagents.dev/integrations/python/reddit)
- [Reddit in LangChain](https://apiforagents.dev/integrations/langchain/reddit)
- [Reddit in Claude Code](https://apiforagents.dev/integrations/claude-code/reddit)

## Questions

### What does the Reddit User Posts API return?

One row per post: author, subreddit, title, kind, score, upvote ratio, comment count, posted time, post id, NSFW flag, permalink, external link, media and thumbnail URLs, and when it was edited.

### What do I pass in?

One u/username or profile URL in subject and a limit from 1 to 50.

### Does it return a user profile with karma?

No. Reddit publishes no profile card we can measure. The user's posts are what comes back.

### How much does it cost?

$0.0045 per post at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=reddit&op=posts (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Reddit Subreddit API. Pay per record.

> A subreddit's posts as JSON, sorted hot, newest, top or rising, with score, comments and flair. From $0.0045 per post.

Canonical: https://apiforagents.dev/platforms/reddit/subreddit-api · Updated 2026-10-21

Read a subreddit's listing under one sort: hot, newest, top or rising. Each post comes back with its title, author, flair, score, upvote ratio, comment count and the subreddit's subscriber count.

- Price: $0.0045 / post
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/reddit

## What people build with the Reddit Subreddit API

- **Watch a community.** Pull the top posts of the week from the subreddits your customers read.
- **Content ideas.** See which questions and topics get the most upvotes and comments in a niche.
- **Early signals.** Read the rising listing to spot what a community is starting to talk about.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/reddit \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"subreddit","subject":"r/technology","sort":"top","postedWithin":"7d","limit":25,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/reddit \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"subreddit","subject":"r/technology","sort":"top","postedWithin":"7d","limit":25}'
```

## Inputs

Everything you can send in one subreddit call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subject * | string | One r/name or subreddit URL. ≤400 chars |
| sort | enum |  |
| postedWithin | enum |  |
| limit | integer | 1-50 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| postId | string |
| author | string |
| subreddit | string |
| title | string |
| body | string |
| kind | string |
| flair | string |
| isNsfw | boolean |
| permalink | string |
| externalUrl | string |
| mediaUrl | string |
| thumbnailUrl | string |
| postedAt | string |
| editedAt | string |
| score | integer |
| upvoteRatio | number |
| commentsCount | integer |
| subredditSubscribers | integer |
| fullname | string |
| gallery | list of string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| author | subreddit | title | kind | flair | score |
|---|---|---|---|---|---|
| u/brew_nerd | r/coffee | Best grinder under $200 in 2026? | text | Gear | 286 |
| u/latteart_lou | r/coffee | My first decent heart after 3 months! | image | Latte art | 1920 |
| u/cold_brew_carl | r/coffee | Cold brew ratio cheat sheet | link | Guide | 740 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One post | 1 | $0.0045 |
| 10 posts | 10 | $0.045 |
| A full page | 50 | $0.225 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Reddit Subreddit API in the playground](https://apiforagents.dev/dashboard/run?platform=reddit&op=subreddit): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Reddit account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Reddit in n8n](https://apiforagents.dev/integrations/n8n/reddit)
- [Reddit in Make](https://apiforagents.dev/integrations/make/reddit)
- [Reddit in Zapier](https://apiforagents.dev/integrations/zapier/reddit)
- [Reddit in Python](https://apiforagents.dev/integrations/python/reddit)
- [Reddit in LangChain](https://apiforagents.dev/integrations/langchain/reddit)
- [Reddit in Claude Code](https://apiforagents.dev/integrations/claude-code/reddit)

## Questions

### What does the Reddit Subreddit API return?

One row per post: author, subreddit, title, kind, flair, score, upvote ratio, comment count, posted time, subreddit subscribers, post id, NSFW flag, permalink, external link, media and thumbnail URLs, and when it was edited.

### What do I pass in?

One r/name or subreddit URL in subject, a sort of hot, newest, top or rising, and a limit from 1 to 50. postedWithin (1h, 1d, 7d, 30d, 1y or any) applies to top only, Reddit ignores it for every other sort.

### How much does it cost?

$0.0045 per post at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=reddit&op=subreddit (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Reddit Comments API. Pay per record.

> Top comments on Reddit posts by permalink, with author, text, score and depth as JSON. From $0.0045 per comment.

Canonical: https://apiforagents.dev/platforms/reddit/comments-api · Updated 2026-10-21

Get the top comments on any Reddit post by permalink or post id: who wrote each one, the text, its score, how deep it sits in the thread and whether the author is the original poster. Up to ten posts per call.

- Price: $0.0045 / comment
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/reddit

## What people build with the Reddit Comments API

- **Read the real answer.** On Reddit the useful part is often in the comments. Pull them for any thread your agent finds.
- **Voice of the customer.** Collect what people say about a product in long threads and sort out the themes.
- **Sentiment analysis.** Score how a community reacted to a launch, a price change or an announcement.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/reddit \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"comments","subjects":["https://www.reddit.com/r/technology/comments/<post-id>/"],"limit":50,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/reddit \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"comments","subjects":["https://www.reddit.com/r/technology/comments/<post-id>/"],"limit":50}'
```

## Inputs

Everything you can send in one comments call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Post permalinks or bare post ids. 1-10 items |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| commentId | string |
| parentId | string |
| author | string |
| body | string |
| score | integer |
| depth | integer |
| postedAt | string |
| isOp | boolean |
| permalink | string |
| parentFullname | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| author | body | score | depth | isOp | postedAt |
|---|---|---|---|---|---|
| u/kai_dev | Charge more than feels comfortable. Then talk to every ch… | 412 | 0 | false | 2026-10-14T10:30:00Z |
| u/quietbuilder | This. We doubled price and lost only 4% of signups. | 128 | 1 | true | 2026-10-14T10:52:00Z |
| u/ops_lena | Annual plans saved our cash flow. | 64 | 0 | false | 2026-10-14T12:05:00Z |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One comment | 1 | $0.0045 |
| 10 comments | 10 | $0.045 |
| A full page | 100 | $0.45 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Reddit Comments API in the playground](https://apiforagents.dev/dashboard/run?platform=reddit&op=comments): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Reddit account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Reddit in n8n](https://apiforagents.dev/integrations/n8n/reddit)
- [Reddit in Make](https://apiforagents.dev/integrations/make/reddit)
- [Reddit in Zapier](https://apiforagents.dev/integrations/zapier/reddit)
- [Reddit in Python](https://apiforagents.dev/integrations/python/reddit)
- [Reddit in LangChain](https://apiforagents.dev/integrations/langchain/reddit)
- [Reddit in Claude Code](https://apiforagents.dev/integrations/claude-code/reddit)

## Questions

### What does the Reddit Comments API return?

One row per comment: author, text, score, depth in the thread, whether the author is the original poster, posted time, comment id, parent id and permalink.

### What do I pass in?

Up to ten post permalinks or bare post ids in subjects, and a limit from 1 to 100.

### How much does it cost?

$0.0045 per comment at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=reddit&op=comments (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Reddit Search API. Pay per record.

> Search Reddit posts by keyword across every subreddit, with score, comments and upvote ratio as JSON. From $0.0045 per post.

Canonical: https://apiforagents.dev/platforms/reddit/search-api · Updated 2026-10-21

Search posts across all of Reddit by keyword: what people are saying about a product, a brand or a problem. Sort by relevance, hot, top, newest or most commented, and each post comes back with its score, comment count and permalink.

- Price: $0.0045 / post
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/reddit

## What people build with the Reddit Search API

- **Social listening.** Every thread this month that mentions your product, a competitor or the pain you solve.
- **Product research.** Find the posts where people ask for a tool like yours, and read how they describe the problem.
- **Give an agent real opinions.** Let your agent read what Reddit says about a topic before it answers or recommends.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/reddit \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"electric cars","sort":"top","postedWithin":"30d","limit":25,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/reddit \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"electric cars","sort":"top","postedWithin":"30d","limit":25}'
```

## Inputs

Everything you can send in one search call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | ≤300 chars |
| sort | enum |  |
| postedWithin | enum |  |
| limit | integer | 1-50 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| postId | string |
| author | string |
| subreddit | string |
| title | string |
| body | string |
| kind | string |
| flair | string |
| isNsfw | boolean |
| permalink | string |
| externalUrl | string |
| mediaUrl | string |
| thumbnailUrl | string |
| postedAt | string |
| editedAt | string |
| score | integer |
| upvoteRatio | number |
| commentsCount | integer |
| subredditSubscribers | integer |
| fullname | string |
| gallery | list of string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| author | subreddit | title | kind | score | upvoteRatio |
|---|---|---|---|---|---|
| u/dataops_dan | r/dataengineering | dbt vs plain SQL for a 3-person team? | text | 412 | 0.93 |
| u/sofia_codes | r/analytics | Is dbt worth it for small data? | text | 198 | 0.9 |
| u/pipeline_pete | r/dataengineering | We dropped dbt. Here's why (and what we use now) | text | 1020 | 0.88 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One post | 1 | $0.0045 |
| 10 posts | 10 | $0.045 |
| A full page | 50 | $0.225 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Reddit Search API in the playground](https://apiforagents.dev/dashboard/run?platform=reddit&op=search): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Reddit account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Reddit in n8n](https://apiforagents.dev/integrations/n8n/reddit)
- [Reddit in Make](https://apiforagents.dev/integrations/make/reddit)
- [Reddit in Zapier](https://apiforagents.dev/integrations/zapier/reddit)
- [Reddit in Python](https://apiforagents.dev/integrations/python/reddit)
- [Reddit in LangChain](https://apiforagents.dev/integrations/langchain/reddit)
- [Reddit in Claude Code](https://apiforagents.dev/integrations/claude-code/reddit)

## Questions

### What does the Reddit Search API return?

One row per post: author, subreddit, title, kind, score, upvote ratio, comment count, posted time, post id, whether it is NSFW, permalink, external link, media and thumbnail URLs, and when it was edited.

### What do I pass in?

A query (up to 300 characters), a sort of relevance, hot, top, newest or most_commented, and a limit from 1 to 50. postedWithin (1h, 1d, 7d, 30d, 1y or any) narrows the top sort only.

### How much does it cost?

$0.0045 per post at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

### Can an AI agent use it without me creating an account?

Yes. An agent registers itself with one POST request, gets $0.10 free and can run calls straight away. The recipe is at https://apiforagents.dev/auth.md.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=reddit&op=search (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# TikTok Profile API. Pay per record.

> TikTok profile data as JSON: followers, following, total likes, video count, bio and verification. From $0.0022 per profile.

Canonical: https://apiforagents.dev/platforms/tiktok/profile-api · Updated 2026-10-21

Turn a TikTok @handle or profile URL into clean JSON: display name, bio, verification, business flags, followers, following, total likes and video count. Up to ten accounts per call, priced per profile.

- Price: $0.0022 / profile
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/tiktok

## What people build with the TikTok Profile API

- **Vet creators.** Check followers, total likes and video count before you send a brief or an offer.
- **Enrich a creator list.** Paste in a list of handles and get back the size, bio and link of each account.
- **Track competitors.** Measure a brand's TikTok audience over time, each row dated.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/tiktok \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profiles","subjects":["@nba","@natgeo"],"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/tiktok \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profiles","subjects":["@nba","@natgeo"]}'
```

## Inputs

Everything you can send in one profiles call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | @handles or profile URLs. 1-10 items |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| handle | string |
| tiktokId | string |
| displayName | string |
| profileUrl | string |
| avatar | string |
| bio | string |
| bioLink | string |
| verified | boolean |
| private | boolean |
| businessAccount | boolean |
| businessCategory | string |
| tiktokSeller | boolean |
| followers | integer |
| following | integer |
| totalLikes | integer |
| likesGiven | integer |
| videos | integer |
| mutualFollows | integer |
| accountCreated | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| handle | displayName | bio | verified | businessAccount | businessCategory |
|---|---|---|---|---|---|
| @mira.moves | Mira \| Pilates | New class every Monday 🧘 | true | true | Fitness |
| @cookwithkai | Cook with Kai | Dinner in 30 minutes or less | true | false |  |
| @brewlab | Brewlab Coffee | Coffee nerds from Austin | false | true | Food & Drink |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One profile | 1 | $0.0022 |
| 10 profiles | 10 | $0.022 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the TikTok Profile API in the playground](https://apiforagents.dev/dashboard/run?platform=tiktok&op=profiles): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no TikTok account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [TikTok in n8n](https://apiforagents.dev/integrations/n8n/tiktok)
- [TikTok in Make](https://apiforagents.dev/integrations/make/tiktok)
- [TikTok in Zapier](https://apiforagents.dev/integrations/zapier/tiktok)
- [TikTok in Python](https://apiforagents.dev/integrations/python/tiktok)
- [TikTok in LangChain](https://apiforagents.dev/integrations/langchain/tiktok)
- [TikTok in Claude Code](https://apiforagents.dev/integrations/claude-code/tiktok)

## Questions

### What does the TikTok Profile API return?

One row per account: handle, display name, bio, whether it is verified, whether it is a business account and its category, followers, following, total likes, video count, TikTok id, profile URL, bio link and account creation date.

### What do I pass in?

Up to ten @handles or profile URLs in subjects.

### How much does a TikTok profile lookup cost?

$0.0022 per profile at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

### Can an AI agent use it without me creating an account?

Yes. An agent registers itself with one POST request, gets $0.10 free and can run calls straight away. The recipe is at https://apiforagents.dev/auth.md.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tiktok&op=profiles (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# TikTok Posts API. Pay per record.

> A TikTok account's recent posts as JSON: views, likes, comments, shares, saves and hashtags. From $0.0018 per post.

Canonical: https://apiforagents.dev/platforms/tiktok/posts-api · Updated 2026-10-21

Get one TikTok account's recent posts with their numbers: caption, date, views, likes, comments, shares, saves, duration and hashtags. The author's card comes in the same answer when we hold it.

- Price: $0.0018 / post
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/tiktok

## What people build with the TikTok Posts API

- **Audit a creator.** See the real views on a creator's last twenty posts, and which ones were sponsored.
- **Track a competitor.** Watch what a brand posts on TikTok and which posts get shared and saved.
- **Content research.** Find the formats and hashtags that work for an account before you copy the idea.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/tiktok \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"posts","subject":"@nba","limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/tiktok \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"posts","subject":"@nba","limit":20}'
```

## Inputs

Everything you can send in one posts call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subject * | string | One @handle or profile URL. ≤400 chars |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| postId | string |
| postUrl | string |
| authorHandle | string |
| caption | string |
| postedDate | string |
| views | integer |
| likes | integer |
| comments | integer |
| shares | integer |
| saves | integer |
| durationS | integer |
| language | string |
| isSlideshow | boolean |
| isSponsored | boolean |
| isAd | boolean |
| hashtags | list of string |
| mentions | list of string |
| sound | any |
| location | string |
| locationAddress | string |
| country | string |
| thumbnail | string |
| resolution | string |
| effects | list of string |
| slideshowImages | any |
| hashtagViews | integer |
| sourceQuery | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| authorHandle | caption | postedDate | views | likes | comments |
|---|---|---|---|---|---|
| @mira.moves | 60-second core burner #pilates | 2026-10-14 | 2410000 | 312000 | 2100 |
| @mira.moves | Pilates for back pain, gentle version | 2026-10-11 | 980000 | 104000 | 1320 |
| @mira.moves | What I eat after class | 2026-10-08 | 410000 | 38000 | 640 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One post | 1 | $0.0018 |
| 10 posts | 10 | $0.018 |
| A full page | 100 | $0.18 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the TikTok Posts API in the playground](https://apiforagents.dev/dashboard/run?platform=tiktok&op=posts): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no TikTok account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [TikTok in n8n](https://apiforagents.dev/integrations/n8n/tiktok)
- [TikTok in Make](https://apiforagents.dev/integrations/make/tiktok)
- [TikTok in Zapier](https://apiforagents.dev/integrations/zapier/tiktok)
- [TikTok in Python](https://apiforagents.dev/integrations/python/tiktok)
- [TikTok in LangChain](https://apiforagents.dev/integrations/langchain/tiktok)
- [TikTok in Claude Code](https://apiforagents.dev/integrations/claude-code/tiktok)

## Questions

### What does the TikTok Posts API return?

One row per post: author handle, caption, posted date, views, likes, comments, shares, saves, duration in seconds, hashtags, post id, post URL, and whether it is a slideshow, sponsored or an ad.

### What do I pass in?

One @handle or profile URL in subject and a limit from 1 to 100.

### How much does it cost?

$0.0018 per post at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tiktok&op=posts (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# TikTok Video API. Pay per record.

> Full cards for TikTok videos and photo posts by URL: views, likes, comments, shares and saves as JSON. From $0.00045 per video.

Canonical: https://apiforagents.dev/platforms/tiktok/video-api · Updated 2026-10-21

Look up TikTok videos or photo posts by URL and get the full card for each: caption, date, views, likes, comments, shares, saves, duration and hashtags. Up to ten posts per call.

- Price: $0.00045 / video
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/tiktok

## What people build with the TikTok Video API

- **Report on a campaign.** Paste in the URLs of the posts you paid for and get their current numbers.
- **Check a viral post.** Your agent finds a link, then reads the real views and shares behind it.
- **Enrich a link list.** Turn a spreadsheet of TikTok links into rows you can sort and chart.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/tiktok \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"videos","subjects":["https://www.tiktok.com/@nba/video/<video-id>"],"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/tiktok \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"videos","subjects":["https://www.tiktok.com/@nba/video/<video-id>"]}'
```

## Inputs

Everything you can send in one videos call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Video or photo URLs. 1-10 items |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| postId | string |
| postUrl | string |
| authorHandle | string |
| caption | string |
| postedDate | string |
| views | integer |
| likes | integer |
| comments | integer |
| shares | integer |
| saves | integer |
| durationS | integer |
| language | string |
| isSlideshow | boolean |
| isSponsored | boolean |
| isAd | boolean |
| hashtags | list of string |
| mentions | list of string |
| sound | any |
| location | string |
| locationAddress | string |
| country | string |
| thumbnail | string |
| resolution | string |
| effects | list of string |
| slideshowImages | any |
| hashtagViews | integer |
| sourceQuery | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| authorHandle | caption | postedDate | views | likes | comments |
|---|---|---|---|---|---|
| @cookwithkai | Crispy rice in 5 minutes | 2026-10-12 | 1180000 | 140000 | 980 |
| @cookwithkai | One-pan laksa | 2026-10-09 | 640000 | 71000 | 520 |
| @brewlab | Latte art fails part 3 ☕ | 2026-10-10 | 214000 | 18400 | 410 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One video | 1 | $0.00045 |
| 10 videos | 10 | $0.0045 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the TikTok Video API in the playground](https://apiforagents.dev/dashboard/run?platform=tiktok&op=videos): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no TikTok account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [TikTok in n8n](https://apiforagents.dev/integrations/n8n/tiktok)
- [TikTok in Make](https://apiforagents.dev/integrations/make/tiktok)
- [TikTok in Zapier](https://apiforagents.dev/integrations/zapier/tiktok)
- [TikTok in Python](https://apiforagents.dev/integrations/python/tiktok)
- [TikTok in LangChain](https://apiforagents.dev/integrations/langchain/tiktok)
- [TikTok in Claude Code](https://apiforagents.dev/integrations/claude-code/tiktok)

## Questions

### What does the TikTok Video API return?

One row per post: author handle, caption, posted date, views, likes, comments, shares, saves, duration in seconds, hashtags, post id, post URL, and whether it is a slideshow, sponsored or an ad.

### What do I pass in?

Up to ten video or photo URLs in subjects.

### How much does it cost?

$0.00045 per video at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tiktok&op=videos (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# TikTok Video Search API. Pay per record.

> Search TikTok posts by keyword, hashtag or sound, with views, likes, shares and saves as JSON. From $0.0018 per post.

Canonical: https://apiforagents.dev/platforms/tiktok/video-search-api · Updated 2026-10-21

Find TikTok posts by keyword, by hashtag, or by the sound they use. Each post comes back with its author, caption, views, likes, comments, shares, saves and hashtags.

- Price: $0.0018 / post
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/tiktok

## What people build with the TikTok Video Search API

- **Social listening.** See every recent post about your product or category, and how many people watched it.
- **Find creators by topic.** The accounts behind the top posts on a hashtag are a ready list to vet.
- **Track a sound.** List the posts made with one sound to see how far a trend or a campaign spread.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/tiktok \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchPosts","hashtag":"booktok","limit":25,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/tiktok \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchPosts","hashtag":"booktok","limit":25}'
```

## Inputs

Everything you can send in one searchPosts call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query | string | ≤300 chars |
| hashtag | string | ≤150 chars |
| soundUrl | string | A TikTok sound page URL (tiktok.com/music/…): posts made with that sound. ≤400 chars |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| postId | string |
| postUrl | string |
| authorHandle | string |
| caption | string |
| postedDate | string |
| views | integer |
| likes | integer |
| comments | integer |
| shares | integer |
| saves | integer |
| durationS | integer |
| language | string |
| isSlideshow | boolean |
| isSponsored | boolean |
| isAd | boolean |
| hashtags | list of string |
| mentions | list of string |
| sound | any |
| location | string |
| locationAddress | string |
| country | string |
| thumbnail | string |
| resolution | string |
| effects | list of string |
| slideshowImages | any |
| hashtagViews | integer |
| sourceQuery | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| authorHandle | caption | postedDate | views | likes | comments |
|---|---|---|---|---|---|
| @homebarista | Espresso at home for under $300 #coffee | 2026-10-13 | 3100000 | 402000 | 5200 |
| @latteart.lou | Rosetta in slow motion #coffee | 2026-10-12 | 880000 | 96000 | 1100 |
| @brewlab | Cold brew ratio, finally settled #coffee | 2026-10-09 | 152000 | 12100 | 230 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One post | 1 | $0.0018 |
| 10 posts | 10 | $0.018 |
| A full page | 100 | $0.18 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the TikTok Video Search API in the playground](https://apiforagents.dev/dashboard/run?platform=tiktok&op=searchPosts): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no TikTok account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [TikTok in n8n](https://apiforagents.dev/integrations/n8n/tiktok)
- [TikTok in Make](https://apiforagents.dev/integrations/make/tiktok)
- [TikTok in Zapier](https://apiforagents.dev/integrations/zapier/tiktok)
- [TikTok in Python](https://apiforagents.dev/integrations/python/tiktok)
- [TikTok in LangChain](https://apiforagents.dev/integrations/langchain/tiktok)
- [TikTok in Claude Code](https://apiforagents.dev/integrations/claude-code/tiktok)

## Questions

### What does it return?

One row per post: author handle, caption, posted date, views, likes, comments, shares, saves, duration in seconds, hashtags, post id, post URL, and whether it is a slideshow, sponsored or an ad.

### What do I pass in?

Exactly one of: a query (keywords), a hashtag, or a soundUrl (a tiktok.com/music/ page). Add a limit from 1 to 100.

### How much does it cost?

$0.0018 per post at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tiktok&op=searchPosts (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# TikTok Account Search API. Pay per record.

> Find TikTok accounts by keyword, each a full profile card with followers and likes as JSON. From $0.00045 per account found.

Canonical: https://apiforagents.dev/platforms/tiktok/account-search-api · Updated 2026-10-21

Search TikTok accounts by keyword. Every hit comes back as a full profile card: display name, bio, verification, followers, following, total likes and video count.

- Price: $0.00045 / profile
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/tiktok

## What people build with the TikTok Account Search API

- **Build a creator list.** Search a niche and get the accounts with their size, in one call.
- **Find the right handle.** Turn a brand or a topic into real TikTok handles before you look anything else up.
- **Ground an agent.** Let your agent find the account from a search instead of guessing the handle.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/tiktok \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"home cooking","limit":10,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/tiktok \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"home cooking","limit":10}'
```

## Inputs

Everything you can send in one search call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | ≤300 chars |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| handle | string |
| tiktokId | string |
| displayName | string |
| profileUrl | string |
| avatar | string |
| bio | string |
| bioLink | string |
| verified | boolean |
| private | boolean |
| businessAccount | boolean |
| businessCategory | string |
| tiktokSeller | boolean |
| followers | integer |
| following | integer |
| totalLikes | integer |
| likesGiven | integer |
| videos | integer |
| mutualFollows | integer |
| accountCreated | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| handle | displayName | bio | verified | followers | following |
|---|---|---|---|---|---|
| @latteart.lou | Lou \| Latte Art | Pouring hearts daily | false | 312000 | 140 |
| @brewlab | Brewlab Coffee | Coffee nerds from Austin | false | 52100 | 88 |
| @homebarista | Home Barista | Espresso at home, explained | true | 1080000 | 60 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One profile | 1 | $0.00045 |
| 10 profiles | 10 | $0.0045 |
| A full page | 100 | $0.045 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the TikTok Account Search API in the playground](https://apiforagents.dev/dashboard/run?platform=tiktok&op=search): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no TikTok account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [TikTok in n8n](https://apiforagents.dev/integrations/n8n/tiktok)
- [TikTok in Make](https://apiforagents.dev/integrations/make/tiktok)
- [TikTok in Zapier](https://apiforagents.dev/integrations/zapier/tiktok)
- [TikTok in Python](https://apiforagents.dev/integrations/python/tiktok)
- [TikTok in LangChain](https://apiforagents.dev/integrations/langchain/tiktok)
- [TikTok in Claude Code](https://apiforagents.dev/integrations/claude-code/tiktok)

## Questions

### What does it return?

One row per account: handle, display name, bio, verified flag, followers, following, total likes, video count, business account flag, TikTok id, profile URL, bio link and account creation date.

### What do I pass in?

A query (up to 300 characters) and a limit from 1 to 100.

### How much does it cost?

$0.00045 per account at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tiktok&op=search (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# TikTok Comments API. Pay per record.

> Top-level comments on TikTok posts by URL, with commenter, text, likes and replies as JSON. From $0.00045 per comment.

Canonical: https://apiforagents.dev/platforms/tiktok/comments-api · Updated 2026-10-21

Get the top-level comments on any public TikTok post by URL: who commented, what they wrote, likes, replies, and whether the creator pinned or liked it. Up to ten posts per call.

- Price: $0.00045 / comment
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/tiktok

## What people build with the TikTok Comments API

- **Read the reaction.** See what viewers said under a launch, a review or a competitor's post.
- **Sentiment analysis.** Feed real comments into a model to score how a product or a campaign landed.
- **Check engagement quality.** Before you hire a creator, read whether their comments look like real people.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/tiktok \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"comments","subjects":["https://www.tiktok.com/@nba/video/<video-id>"],"limit":50,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/tiktok \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"comments","subjects":["https://www.tiktok.com/@nba/video/<video-id>"],"limit":50}'
```

## Inputs

Everything you can send in one comments call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Video or photo URLs. 1-10 items |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| commentId | string |
| comment | string |
| likes | integer |
| replies | integer |
| postedDate | string |
| commenter | string |
| commenterId | string |
| commenterUrl | string |
| commenterAvatar | string |
| pinnedByCreator | boolean |
| likedByCreator | boolean |
| mentions | list of string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| commenter | comment | likes | replies | postedDate | pinnedByCreator |
|---|---|---|---|---|---|
| @ravi.k | Doing this every morning now | 2140 | 12 | 2026-10-14 | false |
| @lena_m | Song name? | 980 | 41 | 2026-10-14 | false |
| @mira.moves | Full class on my YouTube 💛 | 4100 | 88 | 2026-10-14 | true |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One comment | 1 | $0.00045 |
| 10 comments | 10 | $0.0045 |
| A full page | 100 | $0.045 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the TikTok Comments API in the playground](https://apiforagents.dev/dashboard/run?platform=tiktok&op=comments): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no TikTok account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [TikTok in n8n](https://apiforagents.dev/integrations/n8n/tiktok)
- [TikTok in Make](https://apiforagents.dev/integrations/make/tiktok)
- [TikTok in Zapier](https://apiforagents.dev/integrations/zapier/tiktok)
- [TikTok in Python](https://apiforagents.dev/integrations/python/tiktok)
- [TikTok in LangChain](https://apiforagents.dev/integrations/langchain/tiktok)
- [TikTok in Claude Code](https://apiforagents.dev/integrations/claude-code/tiktok)

## Questions

### What does the TikTok Comments API return?

One row per comment: commenter, comment text, likes, reply count, posted date, whether the creator pinned or liked it, comment id, commenter id and commenter URL.

### What do I pass in?

Up to ten video or photo URLs in subjects, and a limit from 1 to 100.

### How much does it cost?

$0.00045 per comment at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tiktok&op=comments (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# TikTok Followers API. Pay per record.

> The followers or following of TikTok accounts, with handle, name, followers and videos as JSON. From $0.0009 per account.

Canonical: https://apiforagents.dev/platforms/tiktok/followers-api · Updated 2026-10-21

Get the followers or the following list of up to five public TikTok accounts. Each row is an account with its handle, display name, followers, following and video count.

- Price: $0.0009 / account
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/tiktok

## What people build with the TikTok Followers API

- **Audience research.** See what kind of accounts follow a brand or a creator in your market.
- **Find partners.** The accounts a big brand follows are often the creators it already works with.
- **Grow a creator list.** Walk out from one account's following list to find more people to vet.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/tiktok \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"followers","subjects":["@nba"],"direction":"following","limit":50,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/tiktok \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"followers","subjects":["@nba"],"direction":"following","limit":50}'
```

## Inputs

Everything you can send in one followers call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | @handles or profile URLs. 1-5 items |
| direction | enum |  |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| handle | string |
| userId | string |
| displayName | string |
| profileUrl | string |
| avatar | string |
| bio | string |
| verified | boolean |
| private | boolean |
| followers | integer |
| following | integer |
| videos | integer |
| totalLikes | integer |
| tiktokSeller | boolean |
| connectionType | string |
| connectedAccount | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| handle | displayName | followers | following | videos | connectionType |
|---|---|---|---|---|---|
| @ravi.k | Ravi | 412 | 830 | 12 | follower |
| @lena_m | Lena | 2100 | 410 | 58 | follower |
| @sam_runs | Sam | 96 | 240 | 3 | follower |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One account | 1 | $0.0009 |
| 5 accounts | 5 | $0.0045 |
| A full page | 100 | $0.09 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the TikTok Followers API in the playground](https://apiforagents.dev/dashboard/run?platform=tiktok&op=followers): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no TikTok account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [TikTok in n8n](https://apiforagents.dev/integrations/n8n/tiktok)
- [TikTok in Make](https://apiforagents.dev/integrations/make/tiktok)
- [TikTok in Zapier](https://apiforagents.dev/integrations/zapier/tiktok)
- [TikTok in Python](https://apiforagents.dev/integrations/python/tiktok)
- [TikTok in LangChain](https://apiforagents.dev/integrations/langchain/tiktok)
- [TikTok in Claude Code](https://apiforagents.dev/integrations/claude-code/tiktok)

## Questions

### What does the TikTok Followers API return?

One row per account in the list: handle, display name, followers, following, video count, whether it is a follower or a following, user id and profile URL.

### What do I pass in?

Up to five @handles or profile URLs in subjects, direction set to followers or following, and a limit from 1 to 100.

### How much does it cost?

$0.0009 per account at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tiktok&op=followers (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# TikTok Shop API. Pay per record.

> TikTok Shop products by keyword as JSON: price, discount, rating, reviews, sold count and seller. From $0.013 per product.

Canonical: https://apiforagents.dev/platforms/tiktok/shop-api · Updated 2026-10-21

Search TikTok Shop products by keyword. Each product comes back with its title, seller, sale and original price, discount, rating, review count and sold count, and every variant with its stock.

- Price: $0.013 / product
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/tiktok

## What people build with the TikTok Shop API

- **Product research.** See what sells in a category on TikTok Shop, at what price and with what rating.
- **Price monitoring.** Track the prices and discounts of competing products over time, each row dated.
- **Find sellers.** List the shops behind the best selling products for a keyword.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/tiktok \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"shop","query":"resistance bands","limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/tiktok \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"shop","query":"resistance bands","limit":20}'
```

## Inputs

Everything you can send in one shop call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | ≤300 chars |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| productId | string |
| productUrl | string |
| title | string |
| description | string |
| salePrice | number |
| originalPrice | number |
| discount | string |
| currency | string |
| rating | number |
| reviewCount | integer |
| soldCount | integer |
| seller | any |
| image | string |
| labels | list of string |
| variants | any |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| title | seller | salePrice | originalPrice | discount | currency |
|---|---|---|---|---|---|
| Resistance bands set (5) | Mira Moves Shop | 19.99 | 29.99 | 33% | USD |
| Non-slip yoga mat | Mira Moves Shop | 34 | 45 | 24% | USD |
| Pilates ring, 12 inch | Mira Moves Shop | 14.5 | 14.5 |  | USD |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One product | 1 | $0.013 |
| 10 products | 10 | $0.135 |
| A full page | 100 | $1.35 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the TikTok Shop API in the playground](https://apiforagents.dev/dashboard/run?platform=tiktok&op=shop): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no TikTok account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [TikTok in n8n](https://apiforagents.dev/integrations/n8n/tiktok)
- [TikTok in Make](https://apiforagents.dev/integrations/make/tiktok)
- [TikTok in Zapier](https://apiforagents.dev/integrations/zapier/tiktok)
- [TikTok in Python](https://apiforagents.dev/integrations/python/tiktok)
- [TikTok in LangChain](https://apiforagents.dev/integrations/langchain/tiktok)
- [TikTok in Claude Code](https://apiforagents.dev/integrations/claude-code/tiktok)

## Questions

### What does the TikTok Shop API return?

One row per product: title, seller, sale price, original price, discount, currency, rating, review count, sold count, product id and product URL, with each variant and its stock.

### What do I pass in?

A query (up to 300 characters) and a limit from 1 to 100.

### How much does it cost?

$0.013 per product at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tiktok&op=shop (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Facebook Page API. Pay per record.

> Facebook page data as JSON: followers, likes, category, reviews, contact, address and ads status. From $0.009 per page.

Canonical: https://apiforagents.dev/platforms/facebook/page-api · Updated 2026-10-21

Turn a Facebook page URL or vanity handle into clean JSON: name, category, followers, likes, review count and recommend percentage, phone, website, address and whether the page is running ads. Up to ten pages per call.

- Price: $0.009 / page
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/facebook

## What people build with the Facebook Page API

- **Enrich local businesses.** Add phone, website, address and category to a list of business pages.
- **Qualify accounts.** See whether a business is running ads right now before you pitch marketing services.
- **Track competitors.** Measure followers, likes and reviews of rival pages over time, each row dated.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"pages","subjects":["nike","natgeo"],"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"pages","subjects":["nike","natgeo"]}'
```

## Inputs

Everything you can send in one pages call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Page URLs or vanity handles. 1-10 items |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| pageKey | string |
| pageId | string |
| pageUrl | string |
| pageName | string |
| username | string |
| category | string |
| intro | string |
| followers | integer |
| likes | integer |
| following | integer |
| talkingAbout | integer |
| wereHere | integer |
| reviewCount | integer |
| recommendPercent | number |
| phone | string |
| email | string |
| website | string |
| otherWebsites | list of string |
| address | string |
| addressMapUrl | string |
| businessHours | any |
| priceRange | string |
| services | string |
| profilePictureUrl | string |
| coverPhotoUrl | string |
| pageCreated | string |
| confirmedOwner | string |
| runningAds | boolean |
| adLibraryId | string |
| socialLinks | any |
| personalProfile | boolean |
| profilePhotoLink | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| pageName | username | category | followers | likes | recommendPercent |
|---|---|---|---|---|---|
| Brewlab Coffee | brewlabcoffee | Coffee shop | 21400 | 19800 | 96 |
| Northfold | northfoldhq | Software company | 8400 | 7900 |  |
| Casa Lumen Tacos | casalumentacos | Mexican restaurant | 41200 | 39100 | 94 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One page | 1 | $0.009 |
| 10 pages | 10 | $0.09 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Facebook Page API in the playground](https://apiforagents.dev/dashboard/run?platform=facebook&op=pages): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Facebook account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Facebook in n8n](https://apiforagents.dev/integrations/n8n/facebook)
- [Facebook in Make](https://apiforagents.dev/integrations/make/facebook)
- [Facebook in Zapier](https://apiforagents.dev/integrations/zapier/facebook)
- [Facebook in Python](https://apiforagents.dev/integrations/python/facebook)
- [Facebook in LangChain](https://apiforagents.dev/integrations/langchain/facebook)
- [Facebook in Claude Code](https://apiforagents.dev/integrations/claude-code/facebook)

## Questions

### What does the Facebook Page API return?

One row per page: page name, username, category, followers, likes, recommend percentage, review count, phone, website, address, whether it is running ads, page id and URL, map link, profile and cover photo URLs, creation date and Ad Library id.

### What do I pass in?

Up to ten page URLs or vanity handles (like nike) in subjects.

### How much does a Facebook page lookup cost?

$0.009 per page at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

### Can an AI agent use it without me creating an account?

Yes. An agent registers itself with one POST request, gets $0.10 free and can run calls straight away. The recipe is at https://apiforagents.dev/auth.md.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=facebook&op=pages (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Facebook Posts API. Pay per record.

> Recent posts of a Facebook page, profile or group as JSON: text, reactions, comments, shares and views. From $0.0045 per post.

Canonical: https://apiforagents.dev/platforms/facebook/posts-api · Updated 2026-10-21

Get the recent posts of a public Facebook page, profile or group: the text, when it was posted, the content type, reactions, comments, shares and views. Narrow by a since and until date.

- Price: $0.0045 / post
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/facebook

## What people build with the Facebook Posts API

- **Monitor competitors.** See what rival brands post on Facebook and which posts get reactions and shares.
- **Report on a page.** Pull a month of your own posts with their numbers into a sheet or a dashboard.
- **Feed an agent.** Give your agent a page's recent posts before it writes about that business.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"posts","subject":"nike","since":"2026-10-01","limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"posts","subject":"nike","since":"2026-10-01","limit":20}'
```

## Inputs

Everything you can send in one posts call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subject * | string | One page, profile or group URL or handle. ≤400 chars |
| since | string | YYYY-MM-DD |
| until | string | YYYY-MM-DD |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| postUrl | string |
| postId | string |
| authorKey | string |
| author | any |
| text | string |
| postedAt | string |
| contentType | string |
| reactions | integer |
| reactionBreakdown | any |
| comments | integer |
| shares | integer |
| views | integer |
| media | any |
| videoDuration | string |
| hashtags | list of string |
| mentions | list of string |
| linkPreview | any |
| source | any |
| topComments | any |
| collaborators | any |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| author | text | postedAt | contentType | reactions | comments |
|---|---|---|---|---|---|
| Brewlab Coffee | New autumn menu is here 🍂 | 2026-10-14T15:00:00Z | photo | 1240 | 86 |
| Brewlab Coffee | Latte art night on the 24th, free entry. | 2026-10-10T18:00:00Z | event | 610 | 44 |
| Brewlab Coffee | Meet our new roaster, Jo. | 2026-10-04T12:00:00Z | video | 890 | 71 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One post | 1 | $0.0045 |
| 10 posts | 10 | $0.045 |
| A full page | 100 | $0.45 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Facebook Posts API in the playground](https://apiforagents.dev/dashboard/run?platform=facebook&op=posts): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Facebook account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Facebook in n8n](https://apiforagents.dev/integrations/n8n/facebook)
- [Facebook in Make](https://apiforagents.dev/integrations/make/facebook)
- [Facebook in Zapier](https://apiforagents.dev/integrations/zapier/facebook)
- [Facebook in Python](https://apiforagents.dev/integrations/python/facebook)
- [Facebook in LangChain](https://apiforagents.dev/integrations/langchain/facebook)
- [Facebook in Claude Code](https://apiforagents.dev/integrations/claude-code/facebook)

## Questions

### What does the Facebook Posts API return?

One row per post: author, text, posted time, content type, reactions, comments, shares, views, post URL, post id and author key.

### What do I pass in?

One page, profile or group URL or handle in subject, optional since and until dates (YYYY-MM-DD), and a limit from 1 to 100.

### How much does it cost?

$0.0045 per post at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=facebook&op=posts (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Facebook Reels API. Pay per record.

> A Facebook page's recent reels as JSON: plays, duration, audio, publish date and video links. From $0.0045 per reel.

Canonical: https://apiforagents.dev/platforms/facebook/reels-api · Updated 2026-10-21

Get a Facebook page's recent reels: plays, duration, audio title and artist, publish date, and links to the reel, the video and the thumbnail.

- Price: $0.0045 / reel
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/facebook

## What people build with the Facebook Reels API

- **Short video research.** See which reels a brand publishes and how many plays each one gets.
- **Audio trends.** Read which audio tracks a page uses on its reels.
- **Report on a page.** Pull your own reels with their plays into a report.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reels","subject":"natgeo","limit":10,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reels","subject":"natgeo","limit":10}'
```

## Inputs

Everything you can send in one reels call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subject * | string | One page URL or handle. ≤400 chars |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| reelId | string |
| reelUrl | string |
| plays | integer |
| playsLabel | string |
| publishedAt | string |
| durationSec | number |
| audioTitle | string |
| audioArtist | string |
| audioTrack | string |
| audioTrackId | string |
| audioType | string |
| audioMuted | boolean |
| remixable | boolean |
| videoUrl | string |
| thumbnailUrl | string |
| dimensions | string |
| captionLanguages | list of string |
| dubbedAudioLanguages | list of string |
| captionsFileUrl | string |
| page | any |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| plays | playsLabel | durationSec | audioTitle | audioArtist | publishedAt |
|---|---|---|---|---|---|
| 184000 | 184K | 22 | Original audio | Brewlab Coffee | 2026-10-13 |
| 96000 | 96K | 31 | Autumn Lo-fi | Sundays | 2026-10-09 |
| 12400 | 12K | 45 | Original audio | Brewlab Coffee | 2026-10-03 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One reel | 1 | $0.0045 |
| 10 reels | 10 | $0.045 |
| A full page | 100 | $0.45 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Facebook Reels API in the playground](https://apiforagents.dev/dashboard/run?platform=facebook&op=reels): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Facebook account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Facebook in n8n](https://apiforagents.dev/integrations/n8n/facebook)
- [Facebook in Make](https://apiforagents.dev/integrations/make/facebook)
- [Facebook in Zapier](https://apiforagents.dev/integrations/zapier/facebook)
- [Facebook in Python](https://apiforagents.dev/integrations/python/facebook)
- [Facebook in LangChain](https://apiforagents.dev/integrations/langchain/facebook)
- [Facebook in Claude Code](https://apiforagents.dev/integrations/claude-code/facebook)

## Questions

### What does the Facebook Reels API return?

One row per reel: plays, a plays label, duration in seconds, audio title and artist, published date, whether it can be remixed, reel id and URL, audio track id, video URL, thumbnail URL and captions file URL.

### What do I pass in?

One page URL or handle in subject and a limit from 1 to 100.

### How much does it cost?

$0.0045 per reel at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=facebook&op=reels (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Facebook Comments API. Pay per record.

> Comments on Facebook posts, reels and photos by permalink, with replies, likes and dates as JSON. From $0.0022 per comment.

Canonical: https://apiforagents.dev/platforms/facebook/comments-api · Updated 2026-10-21

Get the comments on public Facebook posts, reels or photos by permalink: who commented, what they wrote, likes, replies and when. Replies come nested by default. Up to five posts per call.

- Price: $0.0022 / comment
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/facebook

## What people build with the Facebook Comments API

- **Read the reaction.** See what people said under a brand's announcement, yours or a competitor's.
- **Customer feedback.** Collect the questions and complaints left under a page's posts.
- **Sentiment analysis.** Feed real comments into a model to score how a campaign landed.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"comments","subjects":["https://www.facebook.com/nike/posts/<post-id>"],"sort":"top","limit":50,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"comments","subjects":["https://www.facebook.com/nike/posts/<post-id>"],"sort":"top","limit":50}'
```

## Inputs

Everything you can send in one comments call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Post, reel or photo permalinks. 1-5 items |
| includeReplies | boolean | false: top-level comments only; true (default) also returns the replies nested under them. |
| sort | enum | top = Facebook's "most relevant"; threaded = all comments in thread order. |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| commentUrl | string |
| commentText | string |
| commenter | string |
| commenterId | string |
| commenterUrl | string |
| commenterPicture | string |
| likes | integer |
| replies | integer |
| replyDepth | integer |
| isReply | boolean |
| replyingTo | string |
| threadRootAuthor | string |
| commentDate | string |
| commentMediaType | string |
| commentMediaUrl | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| commenter | commentText | likes | replies | commentDate | isReply |
|---|---|---|---|---|---|
| Ravi Kumar | Can't wait to try the pumpkin latte! | 24 | 2 | 2026-10-14 | false |
| Lena Müller | Are you open on Sunday? | 6 | 1 | 2026-10-14 | false |
| Brewlab Coffee | @Lena yes, 8 to 4! | 11 | 0 | 2026-10-14 | true |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One comment | 1 | $0.0022 |
| 5 comments | 5 | $0.011 |
| A full page | 100 | $0.225 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Facebook Comments API in the playground](https://apiforagents.dev/dashboard/run?platform=facebook&op=comments): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Facebook account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Facebook in n8n](https://apiforagents.dev/integrations/n8n/facebook)
- [Facebook in Make](https://apiforagents.dev/integrations/make/facebook)
- [Facebook in Zapier](https://apiforagents.dev/integrations/zapier/facebook)
- [Facebook in Python](https://apiforagents.dev/integrations/python/facebook)
- [Facebook in LangChain](https://apiforagents.dev/integrations/langchain/facebook)
- [Facebook in Claude Code](https://apiforagents.dev/integrations/claude-code/facebook)

## Questions

### What does the Facebook Comments API return?

One row per comment: commenter, comment text, likes, reply count, date, whether it is a reply, its depth and who it replies to, comment URL, commenter id and URL, and any attached media URL.

### What do I pass in?

Up to five post, reel or photo permalinks in subjects. Set sort to top (most relevant), threaded or newest, includeReplies to false for top-level comments only, and a limit from 1 to 100.

### How much does it cost?

$0.0022 per comment at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=facebook&op=comments (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Facebook Reviews API. Pay per record.

> Reviews and recommendations on Facebook pages as JSON: reviewer, recommended or not, text and date. From $0.0022 per review.

Canonical: https://apiforagents.dev/platforms/facebook/reviews-api · Updated 2026-10-21

Get the reviews and recommendations left on public Facebook pages: who wrote each one, whether they recommend the business, the text, the date and any photos. Up to five pages per call.

- Price: $0.0022 / review
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/facebook

## What people build with the Facebook Reviews API

- **Reputation monitoring.** Read every new review of your business pages in one place.
- **Competitor research.** See what customers praise and complain about at rival businesses.
- **Review analysis.** Feed reviews into a model to find the themes behind the recommend percentage.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reviews","subjects":["starbucks"],"limit":25,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reviews","subjects":["starbucks"],"limit":25}'
```

## Inputs

Everything you can send in one reviews call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Page URLs or vanity handles. 1-5 items |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| reviewId | string |
| reviewUrl | string |
| reviewText | string |
| recommended | boolean |
| reviewDate | string |
| reviewerName | string |
| reviewerAvatar | string |
| reviewerProfileUrl | string |
| likes | integer |
| commentCount | integer |
| photos | list of string |
| tags | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| reviewerName | recommended | reviewText | reviewDate | likes | commentCount |
|---|---|---|---|---|---|
| Hannah Wright | true | Friendly staff and great coffee. | 2026-10-11 | 3 | 0 |
| Arjun Shah | true | My favourite spot to work from. | 2026-10-02 | 1 | 1 |
| Chloe Brown | false | Too crowded at lunch. | 2026-09-25 | 0 | 2 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One review | 1 | $0.0022 |
| 5 reviews | 5 | $0.011 |
| A full page | 100 | $0.225 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Facebook Reviews API in the playground](https://apiforagents.dev/dashboard/run?platform=facebook&op=reviews): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Facebook account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Facebook in n8n](https://apiforagents.dev/integrations/n8n/facebook)
- [Facebook in Make](https://apiforagents.dev/integrations/make/facebook)
- [Facebook in Zapier](https://apiforagents.dev/integrations/zapier/facebook)
- [Facebook in Python](https://apiforagents.dev/integrations/python/facebook)
- [Facebook in LangChain](https://apiforagents.dev/integrations/langchain/facebook)
- [Facebook in Claude Code](https://apiforagents.dev/integrations/claude-code/facebook)

## Questions

### What does the Facebook Reviews API return?

One row per review: reviewer name, whether they recommend the page, the review text, review date, likes, comment count, review id and URL, reviewer profile URL and photos.

### What do I pass in?

Up to five page URLs or vanity handles in subjects, and a limit from 1 to 100.

### How much does it cost?

$0.0022 per review at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=facebook&op=reviews (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Facebook Followers API. Pay per record.

> The followers or following of Facebook pages, with name, profile URL and bio as JSON. From $0.0067 per profile.

Canonical: https://apiforagents.dev/platforms/facebook/followers-api · Updated 2026-10-21

Get the followers or the following list of up to three public Facebook pages. Each row is a profile with its name, profile URL and bio.

- Price: $0.0067 / profile
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/facebook

## What people build with the Facebook Followers API

- **Audience research.** See what kind of people and pages follow a brand in your market.
- **Find partners.** The pages a brand follows are often the partners and creators it works with.
- **Map a network.** Walk out from a few known pages to see who sits around them.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"followers","subjects":["natgeo"],"direction":"following","limit":25,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"followers","subjects":["natgeo"],"direction":"following","limit":25}'
```

## Inputs

Everything you can send in one followers call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Page URLs or vanity handles. 1-3 items |
| direction | enum |  |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| profileId | string |
| followerName | string |
| profileUrl | string |
| avatarUrl | string |
| bio | string |
| relationship | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| followerName | bio | relationship | profileId | profileUrl | avatarUrl |
|---|---|---|---|---|---|
| Ravi Kumar | Coffee and cycling | follower | 624155740 | https://www.facebook.com/ravi-kumar-1000 | https://img.facebook.com/ravi-kumar.jpg |
| Lena Müller | Designer in Austin | follower | 3527258922 | https://www.facebook.com/lena-m-ller-1001 | https://img.facebook.com/lena-m-ller.jpg |
| Sam Taylor |  | follower | 3364424145 | https://www.facebook.com/sam-taylor-1002 | https://img.facebook.com/sam-taylor.jpg |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One profile | 1 | $0.0067 |
| 3 profiles | 3 | $0.02 |
| A full page | 100 | $0.675 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Facebook Followers API in the playground](https://apiforagents.dev/dashboard/run?platform=facebook&op=followers): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Facebook account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Facebook in n8n](https://apiforagents.dev/integrations/n8n/facebook)
- [Facebook in Make](https://apiforagents.dev/integrations/make/facebook)
- [Facebook in Zapier](https://apiforagents.dev/integrations/zapier/facebook)
- [Facebook in Python](https://apiforagents.dev/integrations/python/facebook)
- [Facebook in LangChain](https://apiforagents.dev/integrations/langchain/facebook)
- [Facebook in Claude Code](https://apiforagents.dev/integrations/claude-code/facebook)

## Questions

### What does the Facebook Followers API return?

One row per profile: name, bio, whether it is a follower or a following, profile id, profile URL and avatar URL.

### What do I pass in?

Up to three page URLs or vanity handles in subjects, direction set to followers or following, and a limit from 1 to 100.

### How much does it cost?

$0.0067 per profile at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=facebook&op=followers (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Facebook Ad Library API. Pay per record.

> Every ad a Facebook page runs in the Ad Library as JSON: copy, headline, CTA, link, dates and platforms. From $0.0045 per ad.

Canonical: https://apiforagents.dev/platforms/facebook/ad-library-api · Updated 2026-10-21

Read the ads a Facebook page runs in Meta's Ad Library, active or stopped: headline, body text, call to action, media, landing page, start and end dates, the platforms each ad runs on, and EU reach where it is shown.

- Price: $0.0045 / ad
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/facebook

## What people build with the Facebook Ad Library API

- **Competitive ad research.** Every ad a competitor is running right now, with the copy and the landing page.
- **Find advertisers.** Check which businesses spend on ads and how long their ads have run.
- **Messaging research.** See how a market talks to its buyers before you write your own campaigns.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"ads","subjects":["nike"],"status":"active","limit":25,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"ads","subjects":["nike"],"status":"active","limit":25}'
```

## Inputs

Everything you can send in one ads call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Page URLs or vanity handles. 1-5 items |
| status | enum | "active": ads running now; "inactive": ads that have stopped. |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| libraryId | string |
| adUrl | string |
| pageUrl | string |
| advertiser | any |
| isActive | boolean |
| startDate | string |
| endDate | string |
| daysActive | integer |
| headline | string |
| bodyText | string |
| linkDescription | string |
| ctaText | string |
| destinationUrl | string |
| mediaType | string |
| mediaUrl | string |
| format | string |
| variantCount | integer |
| platforms | list of string |
| euReach | integer |
| reachBreakdown | any |
| cards | any |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| advertiser | isActive | startDate | daysActive | headline | bodyText |
|---|---|---|---|---|---|
| Brewlab Coffee | true | 2026-10-01 | 15 | 20% off your first bag | Small-batch beans, roasted every Monday. |
| Brewlab Coffee | true | 2026-09-20 | 26 | Try the autumn menu | Pumpkin spice, done right. |
| Brewlab Coffee | false | 2026-08-01 | 30 | Cold brew season | Every cold brew $3 in August. |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One ad | 1 | $0.0045 |
| 5 ads | 5 | $0.022 |
| A full page | 100 | $0.45 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Facebook Ad Library API in the playground](https://apiforagents.dev/dashboard/run?platform=facebook&op=ads): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Facebook account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Facebook in n8n](https://apiforagents.dev/integrations/n8n/facebook)
- [Facebook in Make](https://apiforagents.dev/integrations/make/facebook)
- [Facebook in Zapier](https://apiforagents.dev/integrations/zapier/facebook)
- [Facebook in Python](https://apiforagents.dev/integrations/python/facebook)
- [Facebook in LangChain](https://apiforagents.dev/integrations/langchain/facebook)
- [Facebook in Claude Code](https://apiforagents.dev/integrations/claude-code/facebook)

## Questions

### What does the Facebook Ad Library API return?

One row per ad: advertiser, whether it is active, start date, days active, headline, body text, CTA text, media type, format, variant count, platforms, end date, library id, ad URL, page URL, destination URL and media URL.

### What do I pass in?

Up to five page URLs or vanity handles in subjects, status set to active (running now) or inactive (stopped), and a limit from 1 to 100.

### How much does it cost?

$0.0045 per ad at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=facebook&op=ads (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Facebook Events API. Pay per record.

> Facebook events by keyword as JSON: name, date, venue, city, host, going and interested counts. From $0.009 per event.

Canonical: https://apiforagents.dev/platforms/facebook/events-api · Updated 2026-10-21

Search public Facebook events by keyword. Each event comes back with its name, start date, duration, category, venue, city and country, whether it is online, and how many people are going or interested.

- Price: $0.009 / event
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/facebook

## What people build with the Facebook Events API

- **Event listings.** Build a local events feed or a newsletter from fresh public events.
- **Find venues and hosts.** List the venues and organisers running events in a category or a city.
- **Market research.** See which events draw the most interest in a niche before you sponsor one.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"events","query":"jazz festival","limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"events","query":"jazz festival","limit":20}'
```

## Inputs

Everything you can send in one events call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | ≤300 chars |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| eventId | string |
| eventUrl | string |
| eventName | string |
| description | string |
| dateTime | string |
| startDate | string |
| duration | string |
| frequency | string |
| occurrences | any |
| category | string |
| venueName | string |
| venueUrl | string |
| address | string |
| street | string |
| city | string |
| country | string |
| latitude | number |
| longitude | number |
| isOnline | boolean |
| isPast | boolean |
| isCanceled | boolean |
| host | string |
| hosts | any |
| going | integer |
| interested | integer |
| tickets | any |
| externalLinks | list of string |
| coverImageUrl | string |
| imageCaption | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| eventName | startDate | duration | category | venueName | city |
|---|---|---|---|---|---|
| Latte Art Night | 2026-10-24 | 3 hours | Food & Drink | Brewlab Coffee | Austin |
| Cupping: New Harvest | 2026-11-07 | 2 hours | Food & Drink | Brewlab Coffee | Austin |
| Home Brewing 101 (online) | 2026-11-12 | 1 hour | Classes |  |  |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One event | 1 | $0.009 |
| 10 events | 10 | $0.09 |
| A full page | 100 | $0.9 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Facebook Events API in the playground](https://apiforagents.dev/dashboard/run?platform=facebook&op=events): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Facebook account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Facebook in n8n](https://apiforagents.dev/integrations/n8n/facebook)
- [Facebook in Make](https://apiforagents.dev/integrations/make/facebook)
- [Facebook in Zapier](https://apiforagents.dev/integrations/zapier/facebook)
- [Facebook in Python](https://apiforagents.dev/integrations/python/facebook)
- [Facebook in LangChain](https://apiforagents.dev/integrations/langchain/facebook)
- [Facebook in Claude Code](https://apiforagents.dev/integrations/claude-code/facebook)

## Questions

### What does the Facebook Events API return?

One row per event: name, start date, duration, category, venue name, city, country, whether it is online, going and interested counts, event id and URL, venue URL, whether it is past or canceled, and cover image URL.

### What do I pass in?

A query (up to 300 characters) and a limit from 1 to 100.

### How much does it cost?

$0.009 per event at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=facebook&op=events (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Facebook Marketplace API. Pay per record.

> Facebook Marketplace listings from a category or search URL as JSON: title, price, condition and location. From $0.009 per listing.

Canonical: https://apiforagents.dev/platforms/facebook/marketplace-api · Updated 2026-10-21

Get Facebook Marketplace listings from a category or a search URL: title, price, condition, city, state and country, when it was listed, and the listing link.

- Price: $0.009 / listing
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/facebook

## What people build with the Facebook Marketplace API

- **Price research.** See what used items actually sell for in a city before you price your own.
- **Deal alerts.** Watch a category or a search and flag new listings under a price.
- **Resale market data.** Track supply and prices of a product across Marketplace over time.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"marketplace","subject":"https://www.facebook.com/marketplace/nyc/bicycles","limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/facebook \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"marketplace","subject":"https://www.facebook.com/marketplace/nyc/bicycles","limit":20}'
```

## Inputs

Everything you can send in one marketplace call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subject * | string | A Marketplace category or search URL. ≤400 chars |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| listingId | string |
| listingUrl | string |
| listingTitle | string |
| description | string |
| price | string |
| priceValue | number |
| originalPrice | string |
| currency | string |
| condition | string |
| location | string |
| city | string |
| state | string |
| country | string |
| postalCode | string |
| latitude | number |
| longitude | number |
| listedAt | string |
| primaryPhoto | string |
| photos | any |
| videoUrl | string |
| attributes | any |
| deliveryOptions | list of string |
| mileage | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| listingTitle | price | priceValue | currency | condition | city |
|---|---|---|---|---|---|
| Road bike, 54 cm, barely used | $420 | 420 | USD | Used - like new | Austin |
| Gravel bike, 56 cm | $650 | 650 | USD | Used - good | Austin |
| Kids bike with training wheels | $60 | 60 | USD | Used - fair | Round Rock |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One listing | 1 | $0.009 |
| 10 listings | 10 | $0.09 |
| A full page | 100 | $0.9 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Facebook Marketplace API in the playground](https://apiforagents.dev/dashboard/run?platform=facebook&op=marketplace): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Facebook account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Facebook in n8n](https://apiforagents.dev/integrations/n8n/facebook)
- [Facebook in Make](https://apiforagents.dev/integrations/make/facebook)
- [Facebook in Zapier](https://apiforagents.dev/integrations/zapier/facebook)
- [Facebook in Python](https://apiforagents.dev/integrations/python/facebook)
- [Facebook in LangChain](https://apiforagents.dev/integrations/langchain/facebook)
- [Facebook in Claude Code](https://apiforagents.dev/integrations/claude-code/facebook)

## Questions

### What does the Facebook Marketplace API return?

One row per listing: title, price text, price value, currency, condition, city, state, country, listed date, listing id, listing URL and video URL.

### What do I pass in?

One Marketplace category or search URL in subject, and a limit from 1 to 100.

### How much does it cost?

$0.009 per listing at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=facebook&op=marketplace (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Google Maps Places API. Pay per record.

> Google Maps place details as JSON: rating, reviews count, category, address, phone, website and hours. From $0.000225 per place.

Canonical: https://apiforagents.dev/platforms/google_maps/places-api · Updated 2026-10-21

Turn a Google Maps place link or place id into a full card: name, category, address, phone, website, rating and breakdown, review count, hours, popular times, attributes, socials and owner posts. Up to ten places per call, priced per place.

- Price: $0.000225 / place
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/google_maps

## What people build with the Google Maps Places API

- **Enrich a local lead list.** Give a list of Maps links and get back the phone, website, category and rating for each business.
- **Check before you visit or sell.** Let an agent read a place's hours, price range and whether it is permanently closed before it books or reaches out.
- **Track competitors' ratings.** Read the rating and review count of every competitor on your street, each with the date it was measured.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/google_maps \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"places","subjects":["ChIJN1t_tDeuEmsRUsoyG83frY4"],"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/google_maps \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"places","subjects":["ChIJN1t_tDeuEmsRUsoyG83frY4"]}'
```

## Inputs

Everything you can send in one places call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Maps URLs carrying a place id or cid, or bare ChIJ… place ids. 1-10 items |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| placeId | string |
| placeUrl | string |
| businessName | string |
| category | string |
| allCategories | list of string |
| categoryId | string |
| placeTags | list of string |
| rating | number |
| reviews | integer |
| reviewBreakdown | any |
| reviewKeywords | any |
| reviewsUrl | string |
| priceRange | string |
| phone | string |
| formattedPhone | string |
| website | string |
| emails | list of string |
| additionalPhones | list of string |
| socials | any |
| directoryProfiles | any |
| address | string |
| neighborhood | string |
| city | string |
| state | string |
| postalCode | string |
| country | string |
| street | string |
| latitude | number |
| longitude | number |
| plusCode | string |
| locatedIn | string |
| floor | string |
| permanentlyClosed | boolean |
| temporarilyClosed | boolean |
| unclaimed | boolean |
| owner | any |
| description | string |
| attributes | any |
| openingHours | any |
| specialHours | any |
| popularTimes | any |
| liveOccupancyPercent | integer |
| liveStatus | string |
| coverPhoto | string |
| photos | any |
| photoCount | integer |
| relatedPlaces | any |
| ownerPosts | any |
| menuUrl | string |
| reserveTableUrl | string |
| reservationLinks | any |
| entranceLocation | any |
| hotelAds | any |
| similarHotels | any |
| hotelType | string |
| hotelDescription | string |
| subTitle | string |
| cid | string |
| fid | string |
| kgmid | string |
| isAdvertisement | boolean |
| language | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| businessName | category | address | city | country | rating |
|---|---|---|---|---|---|
| Brewlab Coffee | Coffee shop | 210 Congress Ave, Austin, TX 78701 | Austin | US | 4.7 |
| Casa Lumen Tacos | Mexican restaurant | 88 Harbor Dr, San Diego, CA 92101 | San Diego | US | 4.5 |
| Northfold Fitness | Gym | 12 Indiranagar 100 Ft Rd, Bengaluru 560038 | Bengaluru | IN | 4.6 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One place | 1 | $0.000225 |
| 10 places | 10 | $0.0022 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Google Maps Places API in the playground](https://apiforagents.dev/dashboard/run?platform=google_maps&op=places): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Google Maps account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Google Maps in n8n](https://apiforagents.dev/integrations/n8n/google_maps)
- [Google Maps in Make](https://apiforagents.dev/integrations/make/google_maps)
- [Google Maps in Zapier](https://apiforagents.dev/integrations/zapier/google_maps)
- [Google Maps in Python](https://apiforagents.dev/integrations/python/google_maps)
- [Google Maps in LangChain](https://apiforagents.dev/integrations/langchain/google_maps)
- [Google Maps in Claude Code](https://apiforagents.dev/integrations/claude-code/google_maps)

## Questions

### What does the Google Maps Places API return?

One row per place: business name, category, address, city, country, rating, review count, price range, phone, website, whether it is permanently closed, the place id, place URL, cid and other Maps ids, links to its reviews, menu and table booking, and whether the listing is an ad. The card also carries the rating breakdown, review keywords, hours, popular times, attributes, socials and owner posts.

### What do I pass in?

Up to ten places: Google Maps URLs that carry a place id or cid, or bare place ids that start with ChIJ.

### How much does it cost?

$0.000225 per place at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

### How do I find a place id?

Run the Google Maps search for a keyword and a location. Every hit carries its place id and place URL, which you can pass straight back here.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=google_maps&op=places (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Google Maps Search API. Pay per record.

> Search Google Maps for a keyword in a location. Every business with rating, phone, address and category as JSON. From $0.000225 per place.

Canonical: https://apiforagents.dev/platforms/google_maps/search-api · Updated 2026-10-21

Search Google Maps the way a person would: a keyword in a location. Every hit comes back as a full place card, and you can keep only places above a star rating or only those with or without a website.

- Price: $0.000225 / place
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/google_maps

## What people build with the Google Maps Search API

- **Local lead lists.** Every dentist in Austin, every gym in Leeds: one call returns names, phones, addresses and ratings for a prospect list.
- **Find businesses without a website.** Keep only places that list no website. A common filter for agencies that build sites for local businesses.
- **Map a local market.** Count the places in a category, compare their ratings and review counts, and spot the gaps.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/google_maps \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"coffee shop","location":"Seattle, WA","minRating":"4.5","limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/google_maps \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"coffee shop","location":"Seattle, WA","minRating":"4.5","limit":20}'
```

## Inputs

Everything you can send in one search call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | ≤300 chars |
| location * | string | ≤120 chars |
| minRating | enum | Google's star scale, in halves. |
| website | enum | Keep only places that list a website ("with"), only those that do not ("without". A common lead filter), or both. |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| placeId | string |
| placeUrl | string |
| businessName | string |
| category | string |
| allCategories | list of string |
| categoryId | string |
| placeTags | list of string |
| rating | number |
| reviews | integer |
| reviewBreakdown | any |
| reviewKeywords | any |
| reviewsUrl | string |
| priceRange | string |
| phone | string |
| formattedPhone | string |
| website | string |
| emails | list of string |
| additionalPhones | list of string |
| socials | any |
| directoryProfiles | any |
| address | string |
| neighborhood | string |
| city | string |
| state | string |
| postalCode | string |
| country | string |
| street | string |
| latitude | number |
| longitude | number |
| plusCode | string |
| locatedIn | string |
| floor | string |
| permanentlyClosed | boolean |
| temporarilyClosed | boolean |
| unclaimed | boolean |
| owner | any |
| description | string |
| attributes | any |
| openingHours | any |
| specialHours | any |
| popularTimes | any |
| liveOccupancyPercent | integer |
| liveStatus | string |
| coverPhoto | string |
| photos | any |
| photoCount | integer |
| relatedPlaces | any |
| ownerPosts | any |
| menuUrl | string |
| reserveTableUrl | string |
| reservationLinks | any |
| entranceLocation | any |
| hotelAds | any |
| similarHotels | any |
| hotelType | string |
| hotelDescription | string |
| subTitle | string |
| cid | string |
| fid | string |
| kgmid | string |
| isAdvertisement | boolean |
| language | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| businessName | category | address | city | country | rating |
|---|---|---|---|---|---|
| Third Wave Roasters | Coffee shop | 5 Church St, Bengaluru 560001 | Bengaluru | IN | 4.6 |
| Brew & Bloom | Cafe | 44 Koramangala 5th Block, Bengaluru 560095 | Bengaluru | IN | 4.4 |
| Filter House | Coffee shop | 9 Malleshwaram 8th Cross, Bengaluru 560003 | Bengaluru | IN | 4.7 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One place | 1 | $0.000225 |
| 10 places | 10 | $0.0022 |
| A full page | 100 | $0.022 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Google Maps Search API in the playground](https://apiforagents.dev/dashboard/run?platform=google_maps&op=search): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Google Maps account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Google Maps in n8n](https://apiforagents.dev/integrations/n8n/google_maps)
- [Google Maps in Make](https://apiforagents.dev/integrations/make/google_maps)
- [Google Maps in Zapier](https://apiforagents.dev/integrations/zapier/google_maps)
- [Google Maps in Python](https://apiforagents.dev/integrations/python/google_maps)
- [Google Maps in LangChain](https://apiforagents.dev/integrations/langchain/google_maps)
- [Google Maps in Claude Code](https://apiforagents.dev/integrations/claude-code/google_maps)

## Questions

### What does the Google Maps Search API return?

One row per place: business name, category, address, city, country, rating, review count, price range, phone, the place id, place URL, cid and other Maps ids, links to its reviews, menu and table booking, and whether the listing is an ad.

### What do I pass in?

A keyword query and a location are required. Optional: a minimum star rating from 2 to 4.5 in halves, a website filter (any, with or without), and a limit of 1 to 100.

### How much does it cost?

$0.000225 per place at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=google_maps&op=search (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Google Maps Reviews API. Pay per record.

> Google Maps reviews as JSON: text, stars, date, reviewer and owner response. Sort newest or by rating. From $0.000225 per review.

Canonical: https://apiforagents.dev/platforms/google_maps/reviews-api · Updated 2026-10-21

Get the reviews for up to ten Google Maps places: the text, the stars, the date, the reviewer and the owner's response. Sort by newest, most relevant, highest or lowest rating, priced per review returned.

- Price: $0.000225 / review
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/google_maps

## What people build with the Google Maps Reviews API

- **Reputation monitoring.** Pull the newest reviews for every one of your locations and flag the low ones before they sit unanswered.
- **Competitor review analysis.** Read what customers praise and complain about at the places you compete with, sorted lowest rating first.
- **Feed an agent.** Give your agent a place's latest reviews before it writes a reply, a summary or a report.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/google_maps \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reviews","subjects":["ChIJN1t_tDeuEmsRUsoyG83frY4"],"sort":"newest","limit":25,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/google_maps \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reviews","subjects":["ChIJN1t_tDeuEmsRUsoyG83frY4"],"sort":"newest","limit":25}'
```

## Inputs

Everything you can send in one reviews call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Maps URLs carrying a place id or cid, or bare ChIJ… place ids. 1-10 items |
| sort | enum |  |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| reviewId | string |
| reviewUrl | string |
| reviewText | string |
| stars | number |
| postedAt | string |
| reviewer | string |
| reviewerId | string |
| reviewerUrl | string |
| reviewerPhoto | string |
| reviewerTotalReviews | integer |
| localGuide | boolean |
| reviewLikes | integer |
| originalLanguage | string |
| translatedLanguage | string |
| translatedText | string |
| ownerResponse | string |
| ownerResponseDate | string |
| reviewContext | any |
| reviewImageUrls | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| reviewer | stars | reviewText | localGuide | reviewerTotalReviews | reviewLikes |
|---|---|---|---|---|---|
| Ravi K. | 5 | Great espresso and fast service. | true | 214 | 12 |
| Lena M. | 4 | Good coffee, few seats. | false | 9 | 3 |
| Sam T. | 5 | My go-to place before work. | true | 88 | 5 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One review | 1 | $0.000225 |
| 10 reviews | 10 | $0.0022 |
| A full page | 100 | $0.022 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Google Maps Reviews API in the playground](https://apiforagents.dev/dashboard/run?platform=google_maps&op=reviews): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Google Maps account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Google Maps in n8n](https://apiforagents.dev/integrations/n8n/google_maps)
- [Google Maps in Make](https://apiforagents.dev/integrations/make/google_maps)
- [Google Maps in Zapier](https://apiforagents.dev/integrations/zapier/google_maps)
- [Google Maps in Python](https://apiforagents.dev/integrations/python/google_maps)
- [Google Maps in LangChain](https://apiforagents.dev/integrations/langchain/google_maps)
- [Google Maps in Claude Code](https://apiforagents.dev/integrations/claude-code/google_maps)

## Questions

### What does the Google Maps Reviews API return?

One row per review: the reviewer's name, the stars, the review text, whether the reviewer is a Local Guide, how many reviews they have written, likes on the review, when it was posted, the owner's response and its date, the review id and URL, and the reviewer id and URL.

### What do I pass in?

Up to ten places, as Google Maps URLs that carry a place id or cid, or bare ChIJ place ids. Optional: sort (newest, relevance, rating_high or rating_low) and a limit of 1 to 100.

### How much does it cost?

$0.000225 per review at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=google_maps&op=reviews (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Yelp Business API. Pay per record.

> Yelp business profiles as JSON: address, phone, rating, review count, hours and menu link. From $0.000225 per business.

Canonical: https://apiforagents.dev/platforms/yelp/business-api · Updated 2026-10-21

Turn a Yelp business URL or slug into a full profile: address, phone, website, rating and star breakdown, review insights by topic, popular dishes, attributes, hours and health inspections. Up to ten businesses per call, priced per business.

- Price: $0.000225 / business
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/yelp

## What people build with the Yelp Business API

- **Enrich a local lead list.** Give a list of Yelp links and get back the phone, address, rating and review count for each business.
- **Restaurant research.** Read popular dishes, hours and review insights by topic for the places you are comparing.
- **Track competitors.** Watch the rating and review count of nearby competitors, each measured with a date.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/yelp \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"businesses","subjects":["katzs-delicatessen-new-york"],"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/yelp \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"businesses","subjects":["katzs-delicatessen-new-york"]}'
```

## Inputs

Everything you can send in one businesses call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | yelp.com/biz/ URLs or their slugs. 1-10 items |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| businessSlug | string |
| businessName | string |
| businessUrl | string |
| address | any |
| city | string |
| state | string |
| neighborhoods | list of string |
| latitude | number |
| longitude | number |
| phone | string |
| website | string |
| menuUrl | string |
| rating | number |
| totalReviews | integer |
| starBreakdown | any |
| reviewInsights | any |
| reviewHighlights | any |
| popularDishes | any |
| attributes | any |
| specialties | string |
| summary | string |
| yearEstablished | integer |
| history | string |
| photos | list of string |
| healthInspections | any |
| hoursToday | list of string |
| qaCount | integer |
| qaContent | any |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| businessName | address | city | state | phone | rating |
|---|---|---|---|---|---|
| Brewlab Coffee | 210 Congress Ave | Austin | TX | (512) 555-0142 | 4.6 |
| Casa Lumen Tacos | 88 Harbor Dr | San Diego | CA | (619) 555-0190 | 4.4 |
| Northfold Books | 15 NW 23rd Ave | Portland | OR | (503) 555-0117 | 4.8 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One business | 1 | $0.000225 |
| 10 businesses | 10 | $0.0022 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Yelp Business API in the playground](https://apiforagents.dev/dashboard/run?platform=yelp&op=businesses): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Yelp account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Yelp in n8n](https://apiforagents.dev/integrations/n8n/yelp)
- [Yelp in Make](https://apiforagents.dev/integrations/make/yelp)
- [Yelp in Zapier](https://apiforagents.dev/integrations/zapier/yelp)
- [Yelp in Python](https://apiforagents.dev/integrations/python/yelp)
- [Yelp in LangChain](https://apiforagents.dev/integrations/langchain/yelp)
- [Yelp in Claude Code](https://apiforagents.dev/integrations/claude-code/yelp)

## Questions

### What does the Yelp Business API return?

One row per business: name, address, city, state, phone, rating, total reviews, year established, today's hours, the business slug and URL, the menu URL and photos. The profile also carries the star breakdown, review insights by topic, popular dishes, attributes and health inspections.

### What do I pass in?

Up to ten yelp.com/biz/ URLs or their slugs.

### How much does it cost?

$0.000225 per business at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=yelp&op=businesses (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Yelp Search API. Pay per record.

> Search Yelp for a keyword in a place, with price and feature filters. Businesses with rating and phone as JSON. From $0.000225 each.

Canonical: https://apiforagents.dev/platforms/yelp/search-api · Updated 2026-10-21

Search Yelp for a keyword in a place, with Yelp's own sort, price levels and feature filters. Every hit comes back as a full business profile.

- Price: $0.000225 / business
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/yelp

## What people build with the Yelp Search API

- **Local lead lists.** Every plumber or bakery in a city, with phone, address and rating, ready for a prospect list.
- **Find the best rated.** Sort by rating or by most reviewed to see which places lead a category in a neighbourhood.
- **Filter by what matters.** Keep only the price levels you want, or places with features such as outdoor seating or delivery.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/yelp \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"ramen","location":"San Francisco, CA","sort":"rating_high","priceLevels":["1","2"],"limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/yelp \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"ramen","location":"San Francisco, CA","sort":"rating_high","priceLevels":["1","2"],"limit":20}'
```

## Inputs

Everything you can send in one search call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | ≤300 chars |
| location * | string | ≤120 chars |
| sort | enum |  |
| priceLevels | enum list | Yelp's dollar-sign tiers, "1" ($) to "4" ($$$$). Any listed tier matches; empty = every price level. |
| features | text list | Yelp's own feature slugs, e.g. "outdoor_seating", "delivery". each ≤40 chars |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| businessSlug | string |
| businessName | string |
| businessUrl | string |
| address | any |
| city | string |
| state | string |
| neighborhoods | list of string |
| latitude | number |
| longitude | number |
| phone | string |
| website | string |
| menuUrl | string |
| rating | number |
| totalReviews | integer |
| starBreakdown | any |
| reviewInsights | any |
| reviewHighlights | any |
| popularDishes | any |
| attributes | any |
| specialties | string |
| summary | string |
| yearEstablished | integer |
| history | string |
| photos | list of string |
| healthInspections | any |
| hoursToday | list of string |
| qaCount | integer |
| qaContent | any |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| businessName | address | city | state | phone | rating |
|---|---|---|---|---|---|
| Taqueria Sol | 402 Market St | San Diego | CA | (619) 555-0133 | 4.7 |
| Casa Lumen Tacos | 88 Harbor Dr | San Diego | CA | (619) 555-0190 | 4.4 |
| El Faro Fish Tacos | 9 Ocean Blvd | San Diego | CA | (619) 555-0177 | 4.5 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One business | 1 | $0.000225 |
| 10 businesses | 10 | $0.0022 |
| A full page | 100 | $0.022 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Yelp Search API in the playground](https://apiforagents.dev/dashboard/run?platform=yelp&op=search): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Yelp account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Yelp in n8n](https://apiforagents.dev/integrations/n8n/yelp)
- [Yelp in Make](https://apiforagents.dev/integrations/make/yelp)
- [Yelp in Zapier](https://apiforagents.dev/integrations/zapier/yelp)
- [Yelp in Python](https://apiforagents.dev/integrations/python/yelp)
- [Yelp in LangChain](https://apiforagents.dev/integrations/langchain/yelp)
- [Yelp in Claude Code](https://apiforagents.dev/integrations/claude-code/yelp)

## Questions

### What does the Yelp Search API return?

One row per business: name, address, city, state, phone, rating, total reviews, year established, today's hours, the business slug and URL, the menu URL and photos.

### What do I pass in?

A keyword query and a location are required. Optional: sort (relevance, rating_high or most_reviewed), price levels 1 to 4, Yelp's own feature slugs such as outdoor_seating or delivery, and a limit of 1 to 100.

### How much does it cost?

$0.000225 per business at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=yelp&op=search (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Yelp Reviews API. Pay per record.

> Yelp reviews as JSON: text, rating, date, reactions, reviewer and the owner's public reply. From $0.000225 per review.

Canonical: https://apiforagents.dev/platforms/yelp/reviews-api · Updated 2026-10-21

Get the reviews for up to ten Yelp businesses: the text, the rating, the date, the reactions, the reviewer and the owner's reply. Priced per review returned.

- Price: $0.000225 / review
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/yelp

## What people build with the Yelp Reviews API

- **Reputation monitoring.** Read every new review across your locations and catch the ones that need a reply.
- **Competitor review analysis.** See what customers say about the places you compete with, in their own words.
- **Feed an agent.** Give your agent a business's recent reviews before it writes a summary or a response.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/yelp \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reviews","subjects":["katzs-delicatessen-new-york"],"limit":25,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/yelp \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reviews","subjects":["katzs-delicatessen-new-york"],"limit":25}'
```

## Inputs

Everything you can send in one reviews call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | yelp.com/biz/ URLs or their slugs. 1-10 items |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| reviewId | string |
| rating | number |
| reviewText | string |
| reviewDate | string |
| reviewUrl | string |
| language | string |
| translatedText | string |
| publicReply | string |
| photos | list of string |
| photoCaption | any |
| videos | list of string |
| totalReactions | integer |
| reactions | any |
| firstReviewer | boolean |
| reviewer | any |
| reviewerName | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| reviewerName | rating | reviewText | reviewDate | totalReactions | firstReviewer |
|---|---|---|---|---|---|
| Jess T. | 5 | Best cortado in town and the staff remember your name. | 2026-10-11 | 14 | false |
| Mike R. | 4 | Great coffee, seating fills up fast. | 2026-10-04 | 6 | false |
| Ana P. | 5 | Their cold brew is unreal. | 2026-09-27 | 9 | false |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One review | 1 | $0.000225 |
| 10 reviews | 10 | $0.0022 |
| A full page | 100 | $0.022 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Yelp Reviews API in the playground](https://apiforagents.dev/dashboard/run?platform=yelp&op=reviews): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Yelp account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Yelp in n8n](https://apiforagents.dev/integrations/n8n/yelp)
- [Yelp in Make](https://apiforagents.dev/integrations/make/yelp)
- [Yelp in Zapier](https://apiforagents.dev/integrations/zapier/yelp)
- [Yelp in Python](https://apiforagents.dev/integrations/python/yelp)
- [Yelp in LangChain](https://apiforagents.dev/integrations/langchain/yelp)
- [Yelp in Claude Code](https://apiforagents.dev/integrations/claude-code/yelp)

## Questions

### What does the Yelp Reviews API return?

One row per review: the reviewer's name, the rating, the review text, the date, total reactions, a first-reviewer flag, the owner's public reply, the review id and URL, and photos.

### What do I pass in?

Up to ten yelp.com/biz/ URLs or their slugs, and a limit of 1 to 100.

### How much does it cost?

$0.000225 per review at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=yelp&op=reviews (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Tripadvisor Hotels API. Pay per record.

> Tripadvisor hotel data as JSON: rating, rank, class, rooms, price range and offers for your dates. From $0.0018 per hotel.

Canonical: https://apiforagents.dev/platforms/tripadvisor/hotels-api · Updated 2026-10-21

Turn a Tripadvisor hotel URL into a full card: rating breakdown, rank in its city, hotel class, rooms, amenities and price range. Add check-in and check-out dates to get the booking offers for that stay. Up to ten hotels per call.

- Price: $0.0018 / hotel
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/tripadvisor

## What people build with the Tripadvisor Hotels API

- **Travel price research.** Give a list of hotels and a set of dates and compare the offers for the same stay side by side.
- **Competitive set tracking.** Watch the rank and rating of the hotels you compete with, each measured with a date.
- **Trip planning agents.** Let an agent read class, amenities and rank before it shortlists hotels for a trip.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"hotels","subjects":["https://www.tripadvisor.com/Hotel_Review-<place-id>-Reviews-The_Plaza-New_York_City_New_York.html"],"currency":"USD","stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15"},"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"hotels","subjects":["https://www.tripadvisor.com/Hotel_Review-<place-id>-Reviews-The_Plaza-New_York_City_New_York.html"],"currency":"USD","stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15"}}'
```

## Inputs

Everything you can send in one hotels call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Tripadvisor place URLs (Hotel_Review / Restaurant_Review / Attraction_Review). 1-10 items |
| language | string | BCP-47 |
| currency | string | ISO 4217 |
| stay.checkIn | string | First night, YYYY-MM-DD. Only read together with checkOut. |
| stay.checkOut | string | Departure day, YYYY-MM-DD, after checkIn. Leave both out for a card without prices. |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| taId | string |
| kind | string |
| name | string |
| tripadvisorUrl | string |
| description | string |
| address | any |
| city | string |
| country | string |
| latitude | number |
| longitude | number |
| phone | string |
| email | string |
| website | string |
| rating | number |
| reviews | integer |
| ratingBreakdown | any |
| reviewTags | any |
| rank | integer |
| rankOutOf | integer |
| photos | list of string |
| photoCount | integer |
| subcategories | list of string |
| hotelClass | string |
| rooms | integer |
| priceRange | string |
| priceLevel | string |
| amenities | list of string |
| hotelOffers | any |
| roomTips | any |
| categoryRatingBreakdown | any |
| nearbyTransit | any |
| cuisines | list of string |
| mealTypes | list of string |
| dietaryRestrictions | list of string |
| establishmentTypes | list of string |
| features | list of string |
| popularDishes | list of string |
| menuUrl | string |
| openingHours | any |
| timezone | string |
| neighborhood | any |
| closed | boolean |
| orderOnline | any |
| categoryRatings | any |
| attractionTypes | list of string |
| ticketOffers | any |
| lowestTicketPrice | number |
| bookingUrl | string |
| nearestMetroStations | any |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| name | kind | city | country | rating | reviews |
|---|---|---|---|---|---|
| Hotel Aurel Riverside | hotel | Prague | Czechia | 4.5 | 2140 |
| Casa Lumen Rooms | hotel | Seville | Spain | 4.7 | 864 |
| Northfold Suites | hotel | Edinburgh | United Kingdom | 4.4 | 1305 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One hotel | 1 | $0.0018 |
| 10 hotels | 10 | $0.018 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Tripadvisor Hotels API in the playground](https://apiforagents.dev/dashboard/run?platform=tripadvisor&op=hotels): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Tripadvisor account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Tripadvisor in n8n](https://apiforagents.dev/integrations/n8n/tripadvisor)
- [Tripadvisor in Make](https://apiforagents.dev/integrations/make/tripadvisor)
- [Tripadvisor in Zapier](https://apiforagents.dev/integrations/zapier/tripadvisor)
- [Tripadvisor in Python](https://apiforagents.dev/integrations/python/tripadvisor)
- [Tripadvisor in LangChain](https://apiforagents.dev/integrations/langchain/tripadvisor)
- [Tripadvisor in Claude Code](https://apiforagents.dev/integrations/claude-code/tripadvisor)

## Questions

### What does the Tripadvisor Hotels API return?

One row per hotel: name, kind, city, country, rating, review count, rank and how many it is ranked among, price range, hotel class, rooms, the Tripadvisor id and URL, photos and a booking URL. The card also carries the rating breakdown, amenities and the offers for your stay.

### What do I pass in?

Up to ten Tripadvisor Hotel_Review URLs. Optional: a language, a currency, and a stay with check-in and check-out dates. Leave the dates out for a card without prices.

### How much does it cost?

$0.0018 per hotel at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tripadvisor&op=hotels (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Tripadvisor Restaurants API. Pay per record.

> Tripadvisor restaurant data as JSON: cuisines, rating, rank, price range, hours and menu link. From $0.0018 per restaurant.

Canonical: https://apiforagents.dev/platforms/tripadvisor/restaurants-api · Updated 2026-10-21

Turn a Tripadvisor restaurant URL into a full card: cuisines, dishes, hours, menu link, price level, rating breakdown and rank in its city. Up to ten restaurants per call, priced per restaurant.

- Price: $0.0018 / restaurant
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/tripadvisor

## What people build with the Tripadvisor Restaurants API

- **Local lead lists.** Enrich a list of restaurants with cuisines, price level and rank before you reach out.
- **Competitor tracking.** Follow the rating and rank of the restaurants near yours, each measured with a date.
- **Food and travel guides.** Let an agent read cuisines, dishes and hours before it recommends a place.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"restaurants","subjects":["https://www.tripadvisor.com/Restaurant_Review-<place-id>-Reviews-Katz_s_Delicatessen-New_York_City_New_York.html"],"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"restaurants","subjects":["https://www.tripadvisor.com/Restaurant_Review-<place-id>-Reviews-Katz_s_Delicatessen-New_York_City_New_York.html"]}'
```

## Inputs

Everything you can send in one restaurants call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Tripadvisor place URLs (Hotel_Review / Restaurant_Review / Attraction_Review). 1-10 items |
| language | string | BCP-47 |
| currency | string | ISO 4217 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| taId | string |
| kind | string |
| name | string |
| tripadvisorUrl | string |
| description | string |
| address | any |
| city | string |
| country | string |
| latitude | number |
| longitude | number |
| phone | string |
| email | string |
| website | string |
| rating | number |
| reviews | integer |
| ratingBreakdown | any |
| reviewTags | any |
| rank | integer |
| rankOutOf | integer |
| photos | list of string |
| photoCount | integer |
| subcategories | list of string |
| hotelClass | string |
| rooms | integer |
| priceRange | string |
| priceLevel | string |
| amenities | list of string |
| hotelOffers | any |
| roomTips | any |
| categoryRatingBreakdown | any |
| nearbyTransit | any |
| cuisines | list of string |
| mealTypes | list of string |
| dietaryRestrictions | list of string |
| establishmentTypes | list of string |
| features | list of string |
| popularDishes | list of string |
| menuUrl | string |
| openingHours | any |
| timezone | string |
| neighborhood | any |
| closed | boolean |
| orderOnline | any |
| categoryRatings | any |
| attractionTypes | list of string |
| ticketOffers | any |
| lowestTicketPrice | number |
| bookingUrl | string |
| nearestMetroStations | any |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| name | kind | city | country | rating | reviews |
|---|---|---|---|---|---|
| Casa Lumen | restaurant | Seville | Spain | 4.7 | 864 |
| The Copper Pot | restaurant | Edinburgh | United Kingdom | 4.5 | 1210 |
| Filter House | restaurant | Bengaluru | India | 4.6 | 640 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One restaurant | 1 | $0.0018 |
| 10 restaurants | 10 | $0.018 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Tripadvisor Restaurants API in the playground](https://apiforagents.dev/dashboard/run?platform=tripadvisor&op=restaurants): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Tripadvisor account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Tripadvisor in n8n](https://apiforagents.dev/integrations/n8n/tripadvisor)
- [Tripadvisor in Make](https://apiforagents.dev/integrations/make/tripadvisor)
- [Tripadvisor in Zapier](https://apiforagents.dev/integrations/zapier/tripadvisor)
- [Tripadvisor in Python](https://apiforagents.dev/integrations/python/tripadvisor)
- [Tripadvisor in LangChain](https://apiforagents.dev/integrations/langchain/tripadvisor)
- [Tripadvisor in Claude Code](https://apiforagents.dev/integrations/claude-code/tripadvisor)

## Questions

### What does the Tripadvisor Restaurants API return?

One row per restaurant: name, kind, city, country, rating, review count, rank and how many it is ranked among, price range, cuisines, the Tripadvisor id and URL, photos, a menu URL and a booking URL. The card also carries dishes, hours and the rating breakdown.

### What do I pass in?

Up to ten Tripadvisor Restaurant_Review URLs, with an optional language and currency.

### How much does it cost?

$0.0018 per restaurant at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tripadvisor&op=restaurants (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Tripadvisor Attractions API. Pay per record.

> Tripadvisor attraction data as JSON: rating, rank, types, lowest ticket price and booking links. From $0.0018 per attraction.

Canonical: https://apiforagents.dev/platforms/tripadvisor/attractions-api · Updated 2026-10-21

Turn a Tripadvisor attraction URL into a full card: types, ticket offers, booking links, rating breakdown and rank. Up to ten attractions per call, priced per attraction.

- Price: $0.0018 / attraction
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/tripadvisor

## What people build with the Tripadvisor Attractions API

- **Ticket price research.** Compare the lowest ticket price and the offers for the sights on an itinerary.
- **Destination content.** Give an agent the rank, rating and types of the top sights before it writes a guide.
- **Track your listing.** Follow your attraction's rating and rank against the others in its city.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"attractions","subjects":["https://www.tripadvisor.com/Attraction_Review-<place-id>-Reviews-Statue_of_Liberty-New_York_City_New_York.html"],"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"attractions","subjects":["https://www.tripadvisor.com/Attraction_Review-<place-id>-Reviews-Statue_of_Liberty-New_York_City_New_York.html"]}'
```

## Inputs

Everything you can send in one attractions call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Tripadvisor place URLs (Hotel_Review / Restaurant_Review / Attraction_Review). 1-10 items |
| language | string | BCP-47 |
| currency | string | ISO 4217 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| taId | string |
| kind | string |
| name | string |
| tripadvisorUrl | string |
| description | string |
| address | any |
| city | string |
| country | string |
| latitude | number |
| longitude | number |
| phone | string |
| email | string |
| website | string |
| rating | number |
| reviews | integer |
| ratingBreakdown | any |
| reviewTags | any |
| rank | integer |
| rankOutOf | integer |
| photos | list of string |
| photoCount | integer |
| subcategories | list of string |
| hotelClass | string |
| rooms | integer |
| priceRange | string |
| priceLevel | string |
| amenities | list of string |
| hotelOffers | any |
| roomTips | any |
| categoryRatingBreakdown | any |
| nearbyTransit | any |
| cuisines | list of string |
| mealTypes | list of string |
| dietaryRestrictions | list of string |
| establishmentTypes | list of string |
| features | list of string |
| popularDishes | list of string |
| menuUrl | string |
| openingHours | any |
| timezone | string |
| neighborhood | any |
| closed | boolean |
| orderOnline | any |
| categoryRatings | any |
| attractionTypes | list of string |
| ticketOffers | any |
| lowestTicketPrice | number |
| bookingUrl | string |
| nearestMetroStations | any |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| name | kind | city | country | rating | reviews |
|---|---|---|---|---|---|
| Old Town Walking Tour | attraction | Lisbon | Portugal | 4.9 | 3120 |
| Castle Hill Gardens | attraction | Prague | Czechia | 4.6 | 5420 |
| Harbour Kayak Trip | attraction | Byron Bay | Australia | 4.8 | 860 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One attraction | 1 | $0.0018 |
| 10 attractions | 10 | $0.018 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Tripadvisor Attractions API in the playground](https://apiforagents.dev/dashboard/run?platform=tripadvisor&op=attractions): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Tripadvisor account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Tripadvisor in n8n](https://apiforagents.dev/integrations/n8n/tripadvisor)
- [Tripadvisor in Make](https://apiforagents.dev/integrations/make/tripadvisor)
- [Tripadvisor in Zapier](https://apiforagents.dev/integrations/zapier/tripadvisor)
- [Tripadvisor in Python](https://apiforagents.dev/integrations/python/tripadvisor)
- [Tripadvisor in LangChain](https://apiforagents.dev/integrations/langchain/tripadvisor)
- [Tripadvisor in Claude Code](https://apiforagents.dev/integrations/claude-code/tripadvisor)

## Questions

### What does the Tripadvisor Attractions API return?

One row per attraction: name, kind, city, country, rating, review count, rank and how many it is ranked among, price range, lowest ticket price, the Tripadvisor id and URL, photos and a booking URL. The card also carries its types, ticket offers and rating breakdown.

### What do I pass in?

Up to ten Tripadvisor Attraction_Review URLs, with an optional language and currency.

### How much does it cost?

$0.0018 per attraction at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tripadvisor&op=attractions (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Tripadvisor Hotel Search API. Pay per record.

> Search Tripadvisor hotels for a destination, priced for your dates. Rating, rank, class and price range as JSON. From $0.0018 per hotel.

Canonical: https://apiforagents.dev/platforms/tripadvisor/hotel-search-api · Updated 2026-10-21

Search Tripadvisor hotels for a destination. Every hit comes back as a full hotel card, and when you give check-in and check-out dates each one is priced for that stay.

- Price: $0.0018 / hotel
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/tripadvisor

## What people build with the Tripadvisor Hotel Search API

- **Travel price research.** Every hotel in a city for the same three nights, with rank and price range, in one call.
- **Market mapping for hotels.** Count the hotels in a destination by class and rating before you price or invest.
- **Trip planning agents.** Let an agent search a destination, then shortlist by rank, class and price.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchHotels","query":"Lisbon","currency":"EUR","limit":20,"stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15"},"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchHotels","query":"Lisbon","currency":"EUR","limit":20,"stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15"}}'
```

## Inputs

Everything you can send in one searchHotels call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | A destination, or a dish for restaurants. ≤300 chars |
| language | string | BCP-47 |
| currency | string | ISO 4217 |
| limit | integer | 1-100 |
| stay.checkIn | string | First night, YYYY-MM-DD. Only read together with checkOut. |
| stay.checkOut | string | Departure day, YYYY-MM-DD, after checkIn. Leave both out for a card without prices. |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| taId | string |
| kind | string |
| name | string |
| tripadvisorUrl | string |
| description | string |
| address | any |
| city | string |
| country | string |
| latitude | number |
| longitude | number |
| phone | string |
| email | string |
| website | string |
| rating | number |
| reviews | integer |
| ratingBreakdown | any |
| reviewTags | any |
| rank | integer |
| rankOutOf | integer |
| photos | list of string |
| photoCount | integer |
| subcategories | list of string |
| hotelClass | string |
| rooms | integer |
| priceRange | string |
| priceLevel | string |
| amenities | list of string |
| hotelOffers | any |
| roomTips | any |
| categoryRatingBreakdown | any |
| nearbyTransit | any |
| cuisines | list of string |
| mealTypes | list of string |
| dietaryRestrictions | list of string |
| establishmentTypes | list of string |
| features | list of string |
| popularDishes | list of string |
| menuUrl | string |
| openingHours | any |
| timezone | string |
| neighborhood | any |
| closed | boolean |
| orderOnline | any |
| categoryRatings | any |
| attractionTypes | list of string |
| ticketOffers | any |
| lowestTicketPrice | number |
| bookingUrl | string |
| nearestMetroStations | any |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| name | kind | city | country | rating | reviews |
|---|---|---|---|---|---|
| Hotel Alfama View | hotel | Lisbon | Portugal | 4.6 | 1840 |
| Baixa Boutique Inn | hotel | Lisbon | Portugal | 4.4 | 960 |
| Rio Tejo Apartments | hotel | Lisbon | Portugal | 4.8 | 420 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One hotel | 1 | $0.0018 |
| 10 hotels | 10 | $0.018 |
| A full page | 100 | $0.18 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Tripadvisor Hotel Search API in the playground](https://apiforagents.dev/dashboard/run?platform=tripadvisor&op=searchHotels): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Tripadvisor account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Tripadvisor in n8n](https://apiforagents.dev/integrations/n8n/tripadvisor)
- [Tripadvisor in Make](https://apiforagents.dev/integrations/make/tripadvisor)
- [Tripadvisor in Zapier](https://apiforagents.dev/integrations/zapier/tripadvisor)
- [Tripadvisor in Python](https://apiforagents.dev/integrations/python/tripadvisor)
- [Tripadvisor in LangChain](https://apiforagents.dev/integrations/langchain/tripadvisor)
- [Tripadvisor in Claude Code](https://apiforagents.dev/integrations/claude-code/tripadvisor)

## Questions

### What does the Tripadvisor Hotel Search API return?

One row per hotel: name, kind, city, country, rating, review count, rank and how many it is ranked among, price range, hotel class, rooms, the Tripadvisor id and URL, photos and a booking URL.

### What do I pass in?

A destination is required. Optional: a language, a currency, a stay with check-in and check-out dates, and a limit of 1 to 100.

### How much does it cost?

$0.0018 per hotel at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tripadvisor&op=searchHotels (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Tripadvisor Restaurant Search API. Pay per record.

> Search Tripadvisor restaurants by destination or dish. Cuisines, rating, rank and price range as JSON. From $0.0018 per restaurant.

Canonical: https://apiforagents.dev/platforms/tripadvisor/restaurant-search-api · Updated 2026-10-21

Search Tripadvisor restaurants for a destination or a dish. Every hit comes back as a full restaurant card with cuisines, rating, rank and price range.

- Price: $0.0018 / restaurant
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/tripadvisor

## What people build with the Tripadvisor Restaurant Search API

- **Local lead lists.** Every restaurant Tripadvisor lists in a city, with rank and cuisines, ready for outreach.
- **Market research.** See which cuisines and price levels lead a city before you open or sell into it.
- **Food guides.** Search a dish in a destination and let an agent pick the best ranked places.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchRestaurants","query":"Rome","limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchRestaurants","query":"Rome","limit":20}'
```

## Inputs

Everything you can send in one searchRestaurants call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | A destination, or a dish for restaurants. ≤300 chars |
| language | string | BCP-47 |
| currency | string | ISO 4217 |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| taId | string |
| kind | string |
| name | string |
| tripadvisorUrl | string |
| description | string |
| address | any |
| city | string |
| country | string |
| latitude | number |
| longitude | number |
| phone | string |
| email | string |
| website | string |
| rating | number |
| reviews | integer |
| ratingBreakdown | any |
| reviewTags | any |
| rank | integer |
| rankOutOf | integer |
| photos | list of string |
| photoCount | integer |
| subcategories | list of string |
| hotelClass | string |
| rooms | integer |
| priceRange | string |
| priceLevel | string |
| amenities | list of string |
| hotelOffers | any |
| roomTips | any |
| categoryRatingBreakdown | any |
| nearbyTransit | any |
| cuisines | list of string |
| mealTypes | list of string |
| dietaryRestrictions | list of string |
| establishmentTypes | list of string |
| features | list of string |
| popularDishes | list of string |
| menuUrl | string |
| openingHours | any |
| timezone | string |
| neighborhood | any |
| closed | boolean |
| orderOnline | any |
| categoryRatings | any |
| attractionTypes | list of string |
| ticketOffers | any |
| lowestTicketPrice | number |
| bookingUrl | string |
| nearestMetroStations | any |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| name | kind | city | country | rating | reviews |
|---|---|---|---|---|---|
| Taberna do Rio | restaurant | Lisbon | Portugal | 4.7 | 2310 |
| Pasteis & Co | restaurant | Lisbon | Portugal | 4.5 | 1520 |
| Mar Azul | restaurant | Lisbon | Portugal | 4.6 | 980 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One restaurant | 1 | $0.0018 |
| 10 restaurants | 10 | $0.018 |
| A full page | 100 | $0.18 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Tripadvisor Restaurant Search API in the playground](https://apiforagents.dev/dashboard/run?platform=tripadvisor&op=searchRestaurants): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Tripadvisor account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Tripadvisor in n8n](https://apiforagents.dev/integrations/n8n/tripadvisor)
- [Tripadvisor in Make](https://apiforagents.dev/integrations/make/tripadvisor)
- [Tripadvisor in Zapier](https://apiforagents.dev/integrations/zapier/tripadvisor)
- [Tripadvisor in Python](https://apiforagents.dev/integrations/python/tripadvisor)
- [Tripadvisor in LangChain](https://apiforagents.dev/integrations/langchain/tripadvisor)
- [Tripadvisor in Claude Code](https://apiforagents.dev/integrations/claude-code/tripadvisor)

## Questions

### What does the Tripadvisor Restaurant Search API return?

One row per restaurant: name, kind, city, country, rating, review count, rank and how many it is ranked among, price range, cuisines, the Tripadvisor id and URL, photos, a menu URL and a booking URL.

### What do I pass in?

A destination or a dish is required. Optional: a language, a currency and a limit of 1 to 100.

### How much does it cost?

$0.0018 per restaurant at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tripadvisor&op=searchRestaurants (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Tripadvisor Attraction Search API. Pay per record.

> Search Tripadvisor things to do for a destination. Rating, rank and lowest ticket price as JSON. From $0.0018 per attraction.

Canonical: https://apiforagents.dev/platforms/tripadvisor/attraction-search-api · Updated 2026-10-21

Search Tripadvisor things to do for a destination. Every hit comes back as a full attraction card with rating, rank and lowest ticket price.

- Price: $0.0018 / attraction
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/tripadvisor

## What people build with the Tripadvisor Attraction Search API

- **Build an itinerary.** The top sights in a city with rank and ticket price, so an agent can plan a day.
- **Tour operator research.** See which attractions lead a destination and what tickets cost before you package a tour.
- **Destination content.** Pull the list behind a things-to-do guide, each row measured with a date.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchAttractions","query":"Kyoto","limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchAttractions","query":"Kyoto","limit":20}'
```

## Inputs

Everything you can send in one searchAttractions call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | A destination, or a dish for restaurants. ≤300 chars |
| language | string | BCP-47 |
| currency | string | ISO 4217 |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| taId | string |
| kind | string |
| name | string |
| tripadvisorUrl | string |
| description | string |
| address | any |
| city | string |
| country | string |
| latitude | number |
| longitude | number |
| phone | string |
| email | string |
| website | string |
| rating | number |
| reviews | integer |
| ratingBreakdown | any |
| reviewTags | any |
| rank | integer |
| rankOutOf | integer |
| photos | list of string |
| photoCount | integer |
| subcategories | list of string |
| hotelClass | string |
| rooms | integer |
| priceRange | string |
| priceLevel | string |
| amenities | list of string |
| hotelOffers | any |
| roomTips | any |
| categoryRatingBreakdown | any |
| nearbyTransit | any |
| cuisines | list of string |
| mealTypes | list of string |
| dietaryRestrictions | list of string |
| establishmentTypes | list of string |
| features | list of string |
| popularDishes | list of string |
| menuUrl | string |
| openingHours | any |
| timezone | string |
| neighborhood | any |
| closed | boolean |
| orderOnline | any |
| categoryRatings | any |
| attractionTypes | list of string |
| ticketOffers | any |
| lowestTicketPrice | number |
| bookingUrl | string |
| nearestMetroStations | any |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| name | kind | city | country | rating | reviews |
|---|---|---|---|---|---|
| Tram 28 Heritage Ride | attraction | Lisbon | Portugal | 4.3 | 9840 |
| Belém Tower | attraction | Lisbon | Portugal | 4.6 | 41200 |
| Sintra Day Trip | attraction | Lisbon | Portugal | 4.8 | 6120 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One attraction | 1 | $0.0018 |
| 10 attractions | 10 | $0.018 |
| A full page | 100 | $0.18 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Tripadvisor Attraction Search API in the playground](https://apiforagents.dev/dashboard/run?platform=tripadvisor&op=searchAttractions): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Tripadvisor account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Tripadvisor in n8n](https://apiforagents.dev/integrations/n8n/tripadvisor)
- [Tripadvisor in Make](https://apiforagents.dev/integrations/make/tripadvisor)
- [Tripadvisor in Zapier](https://apiforagents.dev/integrations/zapier/tripadvisor)
- [Tripadvisor in Python](https://apiforagents.dev/integrations/python/tripadvisor)
- [Tripadvisor in LangChain](https://apiforagents.dev/integrations/langchain/tripadvisor)
- [Tripadvisor in Claude Code](https://apiforagents.dev/integrations/claude-code/tripadvisor)

## Questions

### What does the Tripadvisor Attraction Search API return?

One row per attraction: name, kind, city, country, rating, review count, rank and how many it is ranked among, price range, lowest ticket price, the Tripadvisor id and URL, photos and a booking URL.

### What do I pass in?

A destination is required. Optional: a language, a currency and a limit of 1 to 100.

### How much does it cost?

$0.0018 per attraction at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tripadvisor&op=searchAttractions (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Tripadvisor Reviews API. Pay per record.

> Tripadvisor reviews for hotels, restaurants and attractions as JSON: title, text, rating, trip type and dates. From $0.0018 per review.

Canonical: https://apiforagents.dev/platforms/tripadvisor/reviews-api · Updated 2026-10-21

Get the reviews for up to ten Tripadvisor places of any kind: hotels, restaurants or attractions. Each review comes with its title, text, rating, trip type, travel and post dates and the reviewer, and you can filter by date, stars and language.

- Price: $0.0018 / review
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/tripadvisor

## What people build with the Tripadvisor Reviews API

- **Reputation monitoring.** Pull every review since a date for your hotel or restaurant and catch the low ones early.
- **Competitor review analysis.** Read the one and two star reviews of the places you compete with and find what guests dislike.
- **Guest research.** See trip types and reviewer locations to learn who stays or eats at a place.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reviews","subjects":["https://www.tripadvisor.com/Attraction_Review-<place-id>-Reviews-Statue_of_Liberty-New_York_City_New_York.html"],"since":"2026-01-01","languages":["en"],"limit":25,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reviews","subjects":["https://www.tripadvisor.com/Attraction_Review-<place-id>-Reviews-Statue_of_Liberty-New_York_City_New_York.html"],"since":"2026-01-01","languages":["en"],"limit":25}'
```

## Inputs

Everything you can send in one reviews call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Tripadvisor place URLs of any kind. 1-10 items |
| since | string | YYYY-MM-DD |
| ratings | text list | Star values to keep, 1-5. each 1-5 |
| languages | text list | Keep reviews written in these languages (BCP-47 codes, "en", "fr"). Empty = every language. each BCP-47 |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| reviewId | string |
| reviewUrl | string |
| reviewTitle | string |
| reviewText | string |
| rating | number |
| postedDate | string |
| travelDate | string |
| tripType | string |
| language | string |
| helpfulVotes | integer |
| subratings | any |
| photos | list of string |
| ownerResponse | any |
| reviewerName | string |
| reviewerProfile | string |
| reviewerLocation | string |
| reviewerContributions | integer |
| reviewerAvatar | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| reviewerName | reviewerLocation | rating | reviewTitle | reviewText | tripType |
|---|---|---|---|---|---|
| Hannah W. | Berlin, Germany | 5 | Worth every penny | River view rooms are stunning. Ask for floor 5. | Couples |
| Arjun S. | Pune, India | 4 | Great breakfast, slow check-in | Breakfast was excellent; check-in took 40 minutes. | Friends |
| Chloe B. | Lyon, France | 5 | Best stay of our trip | Staff arranged a late checkout without us asking. | Family |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One review | 1 | $0.0018 |
| 10 reviews | 10 | $0.018 |
| A full page | 100 | $0.18 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Tripadvisor Reviews API in the playground](https://apiforagents.dev/dashboard/run?platform=tripadvisor&op=reviews): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Tripadvisor account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Tripadvisor in n8n](https://apiforagents.dev/integrations/n8n/tripadvisor)
- [Tripadvisor in Make](https://apiforagents.dev/integrations/make/tripadvisor)
- [Tripadvisor in Zapier](https://apiforagents.dev/integrations/zapier/tripadvisor)
- [Tripadvisor in Python](https://apiforagents.dev/integrations/python/tripadvisor)
- [Tripadvisor in LangChain](https://apiforagents.dev/integrations/langchain/tripadvisor)
- [Tripadvisor in Claude Code](https://apiforagents.dev/integrations/claude-code/tripadvisor)

## Questions

### What does the Tripadvisor Reviews API return?

One row per review: the reviewer's name and location, the rating, the review title and text, the trip type, the travel date, the posted date, helpful votes, the review id and URL, and photos. Sub-ratings and the owner's response come with it where the review has them.

### What do I pass in?

Up to ten Tripadvisor place URLs of any kind. Optional: a since date, the star values to keep (1 to 5), the languages to keep, and a limit of 1 to 100.

### How much does it cost?

$0.0018 per review at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tripadvisor&op=reviews (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Airbnb Listings API. Pay per record.

> Airbnb listing data priced for your stay, as JSON: nightly price, rating, capacity, amenities and host. From $0.0018 per listing.

Canonical: https://apiforagents.dev/platforms/airbnb/listings-api · Updated 2026-10-21

Turn an Airbnb listing URL or room id into a full card priced for a stay: nightly and total price, availability, ratings by category, amenities, house rules, cancellation policy and host. Up to ten listings per call.

- Price: $0.0018 / listing
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/airbnb

## What people build with the Airbnb Listings API

- **Travel price research.** Price the same listings for the same dates and party, and compare nightly and total cost.
- **Short-term rental analysis.** Read capacity, amenities, ratings and nightly price for the listings you compete with.
- **Trip planning agents.** Let an agent check availability, house rules and the cancellation policy before it suggests a stay.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/airbnb \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"listings","subjects":["https://www.airbnb.com/rooms/<room-id>"],"stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15","adults":2,"currency":"USD"},"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/airbnb \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"listings","subjects":["https://www.airbnb.com/rooms/<room-id>"],"stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15","adults":2,"currency":"USD"}}'
```

## Inputs

Everything you can send in one listings call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Listing URLs or room ids. 1-10 items |
| stay.checkIn | string | First night, YYYY-MM-DD. Only read together with checkOut. |
| stay.checkOut | string | Departure day, YYYY-MM-DD, after checkIn. |
| stay.adults | integer | Guests aged 13+; the nightly price depends on the party. 1-16 |
| stay.children | integer | Guests aged 2-12. 0-10 |
| stay.infants | integer | Guests under 2; usually not counted toward the listing's capacity. 0-5 |
| stay.pets | integer | Pets, where the listing allows them; adds the pet fee to the total. 0-5 |
| stay.currency | string | ISO 4217 code the prices come back in ("USD", "INR", "EUR"). |
| stay.locale | string | Language tag for titles and descriptions ("en-US", "fr-FR"). ≤10 chars |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| listingId | string |
| listingUrl | string |
| title | string |
| propertyType | string |
| roomType | string |
| capacity | integer |
| summaryDetails | list of string |
| description | string |
| location | string |
| locationSubtitle | string |
| locationPath | string |
| latitude | number |
| longitude | number |
| neighborhoodNotes | any |
| ratings | any |
| ratingOverall | number |
| reviewsCount | integer |
| highlights | any |
| amenities | any |
| houseRules | any |
| cancellationPolicy | string |
| available | boolean |
| stay | string |
| currency | string |
| totalPriceText | string |
| pricePerNightText | string |
| baseSubtotalText | string |
| priceQualifier | string |
| totalPrice | number |
| pricePerNight | number |
| host | any |
| hostName | string |
| hostIsSuperhost | boolean |
| coHosts | any |
| images | any |
| thumbnail | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| title | propertyType | roomType | capacity | location | ratingOverall |
|---|---|---|---|---|---|
| Sunny loft near the old town | Entire loft | Entire home | 3 | Lisbon, Portugal | 4.92 |
| Quiet garden studio | Entire guest suite | Entire home | 2 | Bengaluru, India | 4.85 |
| Beach cabin with a view | Entire cabin | Entire home | 4 | Byron Bay, Australia | 4.97 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One listing | 1 | $0.0018 |
| 10 listings | 10 | $0.018 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Airbnb Listings API in the playground](https://apiforagents.dev/dashboard/run?platform=airbnb&op=listings): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Airbnb account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Airbnb in n8n](https://apiforagents.dev/integrations/n8n/airbnb)
- [Airbnb in Make](https://apiforagents.dev/integrations/make/airbnb)
- [Airbnb in Zapier](https://apiforagents.dev/integrations/zapier/airbnb)
- [Airbnb in Python](https://apiforagents.dev/integrations/python/airbnb)
- [Airbnb in LangChain](https://apiforagents.dev/integrations/langchain/airbnb)
- [Airbnb in Claude Code](https://apiforagents.dev/integrations/claude-code/airbnb)

## Questions

### What does the Airbnb Listings API return?

One row per listing: title, property type, room type, capacity, location, overall rating, review count, price per night, currency, host name, whether the host is a Superhost, amenities, the listing id and URL. The card also carries the total price, availability, ratings by category, house rules and cancellation policy.

### What do I pass in?

Up to ten listing URLs or room ids. Optional: a stay with check-in and check-out dates, adults, children, infants and pets, a currency and a locale. The nightly price depends on the party, so give the real numbers.

### How much does it cost?

$0.0018 per listing at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=airbnb&op=listings (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Airbnb Reviews API. Pay per record.

> Airbnb reviews as JSON: text, rating, date, reviewer location and the host's response. From $0.0018 per review.

Canonical: https://apiforagents.dev/platforms/airbnb/reviews-api · Updated 2026-10-21

Get the reviews for up to ten Airbnb listings: the text, the rating, the date, where the reviewer is from and the host's response. Reviews in other languages can come back translated into the one you ask for.

- Price: $0.0018 / review
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/airbnb

## What people build with the Airbnb Reviews API

- **Guest feedback for hosts.** Read every review across your listings in one place and see what guests mention most.
- **Competitor review analysis.** Find what guests praise and complain about at the listings near yours.
- **Check before you book.** Let an agent read a listing's recent reviews before it recommends a stay.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/airbnb \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reviews","subjects":["https://www.airbnb.com/rooms/<room-id>"],"locale":"en-US","limit":25,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/airbnb \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reviews","subjects":["https://www.airbnb.com/rooms/<room-id>"],"locale":"en-US","limit":25}'
```

## Inputs

Everything you can send in one reviews call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Listing URLs or room ids. 1-10 items |
| locale | string | Language tag the review text is returned in ("en-US"); reviews in other languages come translated. ≤10 chars |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| reviewId | string |
| reviewText | string |
| translatedText | string |
| originalLanguage | string |
| rating | number |
| postedDate | string |
| highlight | string |
| highlightType | string |
| hostResponse | string |
| hostId | string |
| hostName | string |
| hostProfileUrl | string |
| reviewerUserId | string |
| reviewerName | string |
| reviewerProfile | string |
| reviewerAvatar | string |
| reviewerLocation | string |
| reviewerTenure | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| reviewerName | reviewerLocation | rating | reviewText | postedDate | hostName |
|---|---|---|---|---|---|
| Hannah | Berlin, Germany | 5 | Spotless, bright and a 2-minute walk to everything. | 2026-10-08 | Inês |
| Arjun | Pune, India | 5 | Host replied in minutes. Would stay again. | 2026-09-30 | Inês |
| Chloe | Lyon, France | 4 | Lovely place, a little noisy on Saturday night. | 2026-09-22 | Inês |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One review | 1 | $0.0018 |
| 10 reviews | 10 | $0.018 |
| A full page | 100 | $0.18 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Airbnb Reviews API in the playground](https://apiforagents.dev/dashboard/run?platform=airbnb&op=reviews): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Airbnb account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Airbnb in n8n](https://apiforagents.dev/integrations/n8n/airbnb)
- [Airbnb in Make](https://apiforagents.dev/integrations/make/airbnb)
- [Airbnb in Zapier](https://apiforagents.dev/integrations/zapier/airbnb)
- [Airbnb in Python](https://apiforagents.dev/integrations/python/airbnb)
- [Airbnb in LangChain](https://apiforagents.dev/integrations/langchain/airbnb)
- [Airbnb in Claude Code](https://apiforagents.dev/integrations/claude-code/airbnb)

## Questions

### What does the Airbnb Reviews API return?

One row per review: the reviewer's name and location, the rating, the review text, the posted date, the host's name and response, the review id, the host id and profile URL, and the reviewer's user id.

### What do I pass in?

Up to ten listing URLs or room ids. Optional: a locale such as en-US for the language the text comes back in, and a limit of 1 to 100.

### How much does it cost?

$0.0018 per review at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=airbnb&op=reviews (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Booking.com Hotels API. Pay per record.

> Booking.com property data for your dates as JSON: price from, guest score, stars, rooms and policies. From $0.0018 per property.

Canonical: https://apiforagents.dev/platforms/booking/hotels-api · Updated 2026-10-21

Turn a Booking.com hotel URL into a full card: price from, guest score and category scores, rooms with availability and price, facilities, policies and location. Give check-in and check-out dates, since without dates a property has no price to show. Up to ten properties per call.

- Price: $0.0018 / property
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/booking

## What people build with the Booking.com Hotels API

- **Travel price research.** Price the same hotels for the same nights and compare the lowest room price at each.
- **Rate shopping for hotels.** Watch the price from and guest score of the properties in your competitive set.
- **Trip planning agents.** Let an agent read rooms, facilities and policies before it suggests where to stay.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/booking \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"properties","subjects":["https://www.booking.com/hotel/gb/<hotel-name>.html"],"stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15","currency":"GBP"},"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/booking \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"properties","subjects":["https://www.booking.com/hotel/gb/<hotel-name>.html"],"stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15","currency":"GBP"}}'
```

## Inputs

Everything you can send in one properties call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | booking.com/hotel/<country>/<name> URLs. 1-10 items |
| stay.checkIn | string | First night, YYYY-MM-DD. Only read together with checkOut; without dates a property has no price to show. |
| stay.checkOut | string | Departure day, YYYY-MM-DD, after checkIn. |
| stay.currency | string | ISO 4217 code the prices come back in ("USD", "INR", "EUR"). |
| stay.language | string | BCP-47 tag for names and descriptions ("en-GB", "de-DE"). |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| propertySlug | string |
| propertyId | string |
| propertyUrl | string |
| propertyName | string |
| propertyType | string |
| starRating | number |
| city | string |
| country | string |
| fullAddress | string |
| latitude | number |
| longitude | number |
| guestScore | number |
| scoreLabel | string |
| reviewCount | integer |
| categoryScores | any |
| stay | string |
| priceFrom | number |
| currency | string |
| rooms | any |
| roomTypes | any |
| mainImage | string |
| images | list of string |
| facilities | any |
| description | string |
| highlights | any |
| checkInTime | string |
| checkOutTime | string |
| policies | any |
| finePrint | string |
| surroundings | any |
| traderInfo | any |
| licenseNumbers | list of string |
| host | any |
| mapUrl | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| propertyName | propertyType | city | country | starRating | guestScore |
|---|---|---|---|---|---|
| Hotel Aurel Riverside | Hotel | Prague | Czechia | 4 | 8.9 |
| Casa Lumen | Guest house | Seville | Spain | 3 | 9.3 |
| Northfold Suites | Aparthotel | Edinburgh | United Kingdom | 4 | 8.6 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One property | 1 | $0.0018 |
| 10 properties | 10 | $0.018 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Booking.com Hotels API in the playground](https://apiforagents.dev/dashboard/run?platform=booking&op=properties): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Booking.com account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Booking.com in n8n](https://apiforagents.dev/integrations/n8n/booking)
- [Booking.com in Make](https://apiforagents.dev/integrations/make/booking)
- [Booking.com in Zapier](https://apiforagents.dev/integrations/zapier/booking)
- [Booking.com in Python](https://apiforagents.dev/integrations/python/booking)
- [Booking.com in LangChain](https://apiforagents.dev/integrations/langchain/booking)
- [Booking.com in Claude Code](https://apiforagents.dev/integrations/claude-code/booking)

## Questions

### What does the Booking.com Hotels API return?

One row per property: name, property type, city, country, star rating, guest score and its label, review count, price from, currency, check-in and check-out times, the property slug, id and URL, images and a map URL. The card also carries category scores, rooms with availability and price, facilities and policies.

### What do I pass in?

Up to ten booking.com/hotel/<country>/<name> URLs. Optional: a stay with check-in and check-out dates, a currency and a language.

### How much does it cost?

$0.0018 per property at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=booking&op=properties (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Booking.com Search API. Pay per record.

> Search Booking.com properties for a destination and dates, with stars, score and price filters. JSON rows from $0.0018 each.

Canonical: https://apiforagents.dev/platforms/booking/search-api · Updated 2026-10-21

Search Booking.com for a destination and a stay, with Booking's own filters: property type, minimum stars, minimum guest score, a price range for the stay and sort order. Every hit comes back with its price from, guest score and star rating.

- Price: $0.0018 / property
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/booking

## What people build with the Booking.com Search API

- **Travel price research.** Every property in a city for the same nights, sorted by price, with guest score beside each one.
- **Market mapping.** Count hotels, apartments or hostels in a destination by stars and score before you price or invest.
- **Trip planning agents.** Let an agent search a city with a budget and a minimum score, then shortlist the best value.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/booking \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","location":"Barcelona","stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15","currency":"EUR"},"minRating":8,"sort":"price_low","limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/booking \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","location":"Barcelona","stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15","currency":"EUR"},"minRating":8,"sort":"price_low","limit":20}'
```

## Inputs

Everything you can send in one search call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| location * | string | ≤120 chars |
| stay.checkIn | string | First night, YYYY-MM-DD. Only read together with checkOut; without dates a property has no price to show. |
| stay.checkOut | string | Departure day, YYYY-MM-DD, after checkIn. |
| stay.currency | string | ISO 4217 code the prices come back in ("USD", "INR", "EUR"). |
| stay.language | string | BCP-47 tag for names and descriptions ("en-GB", "de-DE"). |
| propertyType | string | Booking's own words: hotel, apartment, hostel, resort, villa… ≤40 chars |
| minStars | integer | Official star class, at least this many. 1-5 |
| minRating | integer | Guest score on Booking's 0-10 scale. |
| priceMin | integer | For the stay, in the stay's currency. 0- |
| priceMax | integer | Upper bound for the whole stay, in the stay's currency. 0- |
| sort | enum |  |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| propertySlug | string |
| propertyId | string |
| propertyUrl | string |
| propertyName | string |
| propertyType | string |
| starRating | number |
| city | string |
| country | string |
| fullAddress | string |
| latitude | number |
| longitude | number |
| guestScore | number |
| scoreLabel | string |
| reviewCount | integer |
| categoryScores | any |
| stay | string |
| priceFrom | number |
| currency | string |
| rooms | any |
| roomTypes | any |
| mainImage | string |
| images | list of string |
| facilities | any |
| description | string |
| highlights | any |
| checkInTime | string |
| checkOutTime | string |
| policies | any |
| finePrint | string |
| surroundings | any |
| traderInfo | any |
| licenseNumbers | list of string |
| host | any |
| mapUrl | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| propertyName | propertyType | city | country | starRating | guestScore |
|---|---|---|---|---|---|
| Hotel Alfama View | Hotel | Lisbon | Portugal | 4 | 8.8 |
| Rio Tejo Apartments | Apartment | Lisbon | Portugal |  | 9.1 |
| Baixa Boutique Inn | Inn | Lisbon | Portugal | 3 | 8.4 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One property | 1 | $0.0018 |
| 10 properties | 10 | $0.018 |
| A full page | 100 | $0.18 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Booking.com Search API in the playground](https://apiforagents.dev/dashboard/run?platform=booking&op=search): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Booking.com account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Booking.com in n8n](https://apiforagents.dev/integrations/n8n/booking)
- [Booking.com in Make](https://apiforagents.dev/integrations/make/booking)
- [Booking.com in Zapier](https://apiforagents.dev/integrations/zapier/booking)
- [Booking.com in Python](https://apiforagents.dev/integrations/python/booking)
- [Booking.com in LangChain](https://apiforagents.dev/integrations/langchain/booking)
- [Booking.com in Claude Code](https://apiforagents.dev/integrations/claude-code/booking)

## Questions

### What does the Booking.com Search API return?

One row per property: name, property type, city, country, star rating, guest score and its label, review count, price from, currency, the property slug, id and URL, images and a map URL.

### What do I pass in?

A destination is required. Optional: a stay with check-in and check-out dates, currency and language, a property type in Booking's own words, minimum stars (1 to 5), a minimum guest score on the 0 to 10 scale, a price range for the whole stay, sort (relevance, price_low, rating_high or distance) and a limit of 1 to 100.

### How much does it cost?

$0.0018 per property at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=booking&op=search (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Booking.com Reviews API. Pay per record.

> Booking.com guest reviews as JSON: liked and disliked text, score, date, traveler type and room. From $0.0018 per review.

Canonical: https://apiforagents.dev/platforms/booking/reviews-api · Updated 2026-10-21

Get the guest reviews for up to ten Booking.com properties: what the guest liked and disliked, the score, the date, the traveler type, the room they stayed in and the property's response. Sort and filter by Booking's own score bands.

- Price: $0.0018 / review
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/booking

## What people build with the Booking.com Reviews API

- **Reputation monitoring.** Pull the newest reviews for your property and read the disliked text first.
- **Competitor review analysis.** Read the poor and average reviews of the hotels you compete with and see what guests miss.
- **Guest research.** See which traveler types and rooms get the best and worst scores.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/booking \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reviews","subjects":["https://www.booking.com/hotel/gb/<hotel-name>.html"],"sort":"newest","scoreBands":["average","poor"],"limit":25,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/booking \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reviews","subjects":["https://www.booking.com/hotel/gb/<hotel-name>.html"],"sort":"newest","scoreBands":["average","poor"],"limit":25}'
```

## Inputs

Everything you can send in one reviews call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | booking.com/hotel/<country>/<name> URLs. 1-10 items |
| sort | enum |  |
| since | string | Stop at this date; applies with newest or oldest. YYYY-MM-DD |
| scoreBands | enum list | Booking's own 10-point score bands: superb 9+, good 7-9, average 5-7, poor <5. Not ratings. That name is a star filter elsewhere. |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| reviewId | string |
| reviewTitle | string |
| liked | string |
| disliked | string |
| rating | number |
| postedDate | string |
| language | string |
| travelerType | string |
| room | string |
| checkIn | string |
| checkOut | string |
| helpfulVotes | integer |
| photos | list of string |
| propertyResponse | string |
| reviewerName | string |
| reviewerLocation | string |
| reviewerAvatar | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| reviewerName | reviewerLocation | rating | reviewTitle | liked | disliked |
|---|---|---|---|---|---|
| Emma | Netherlands | 9 | Great location, friendly staff | Five minutes from the old town. | Coffee at breakfast. |
| Daniel | United States | 7.5 | Good value, small rooms | Clean and quiet. | Tiny bathroom. |
| Priya | India | 10 | Perfect stay | Everything, especially the staff. | Nothing. |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One review | 1 | $0.0018 |
| 10 reviews | 10 | $0.018 |
| A full page | 100 | $0.18 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Booking.com Reviews API in the playground](https://apiforagents.dev/dashboard/run?platform=booking&op=reviews): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Booking.com account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Booking.com in n8n](https://apiforagents.dev/integrations/n8n/booking)
- [Booking.com in Make](https://apiforagents.dev/integrations/make/booking)
- [Booking.com in Zapier](https://apiforagents.dev/integrations/zapier/booking)
- [Booking.com in Python](https://apiforagents.dev/integrations/python/booking)
- [Booking.com in LangChain](https://apiforagents.dev/integrations/langchain/booking)
- [Booking.com in Claude Code](https://apiforagents.dev/integrations/claude-code/booking)

## Questions

### What does the Booking.com Reviews API return?

One row per review: the reviewer's name and location, the score, the review title, the liked and disliked text, the traveler type, the room, the posted date, the review id and photos. The property's response comes with it where there is one.

### What do I pass in?

Up to ten booking.com/hotel/<country>/<name> URLs. Optional: sort (relevance, newest, oldest, rating_high or rating_low), a since date that applies with newest or oldest, score bands (superb, good, average or poor) and a limit of 1 to 100.

### How much does it cost?

$0.0018 per review at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=booking&op=reviews (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Amazon Product API. Pay per record.

> Amazon product data as JSON: price, deal and Prime flags, stock, rating, best-sellers rank and seller. From $0.0014 per product, pay as you go.

Canonical: https://apiforagents.dev/platforms/amazon/product-api · Updated 2026-10-21

Turn an ASIN or an Amazon product URL into a full product card: price, list price, deal and Prime flags, availability, rating, best-sellers rank, seller, specs, images and variants. Up to ten products per call, on twelve Amazon sites.

- Price: $0.0014 / product
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/amazon

## What people build with the Amazon Product API

- **Track prices and deals.** Check a list of ASINs every day and record the price, the list price and whether a deal is running, each with the date it was measured.
- **Watch a competitor's catalogue.** Follow the rating, rating count and best-sellers rank of the products you compete with, and see when one starts to climb.
- **Enrich a product feed.** Fill in brand, specs, images, variants and seller for every ASIN in a spreadsheet, without opening a single product page.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/amazon \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["B0DGHMNQ5Z"],"marketplace":"com","estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/amazon \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["B0DGHMNQ5Z"],"marketplace":"com"}'
```

## Inputs

Everything you can send in one products call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | ASINs or product URLs. 1-10 items |
| marketplace | enum | The Amazon site as its domain suffix ,  "com", "in", "co.uk", "de"… A product URL carries its own and overrides this; a bare ASIN and a search use it. Prices, stock and reviews differ per site. |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| asin | string |
| marketplace | string |
| title | string |
| brand | string |
| productUrl | string |
| price | number |
| currency | string |
| listPrice | number |
| discount | string |
| onDeal | boolean |
| prime | boolean |
| availability | string |
| rating | number |
| ratingsCount | integer |
| reviewsCount | integer |
| ratingBreakdown | any |
| boughtPastMonth | string |
| boughtPastMonthMin | integer |
| bestSellersRank | integer |
| bsrCategory | string |
| soldBy | string |
| fulfilledBy | string |
| sellerId | string |
| usedOffer | any |
| features | list of string |
| description | string |
| categoryPath | string |
| browseNodeId | string |
| productDetails | any |
| keySpecs | any |
| bookEditions | any |
| variants | any |
| mainImage | string |
| images | list of string |
| videos | list of string |
| reviewSummary | string |
| reviewTopics | any |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| title | brand | price | currency | listPrice | discount |
|---|---|---|---|---|---|
| Sonora Buds Pro, Wireless Noise Cancelling Earbuds | Sonora | 79 | USD | 99 | 20% |
| Brewlab Cold Brew Coffee Maker, 1.5 L | Brewlab | 34.99 | USD | 34.99 |  |
| Northfold Linen Notebook, A5 | Northfold Studio | 14 | USD | 16 | 13% |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One product | 1 | $0.0014 |
| 10 products | 10 | $0.014 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Amazon Product API in the playground](https://apiforagents.dev/dashboard/run?platform=amazon&op=products): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Amazon account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Amazon in n8n](https://apiforagents.dev/integrations/n8n/amazon)
- [Amazon in Make](https://apiforagents.dev/integrations/make/amazon)
- [Amazon in Zapier](https://apiforagents.dev/integrations/zapier/amazon)
- [Amazon in Python](https://apiforagents.dev/integrations/python/amazon)
- [Amazon in LangChain](https://apiforagents.dev/integrations/langchain/amazon)
- [Amazon in Claude Code](https://apiforagents.dev/integrations/claude-code/amazon)

## Questions

### What does the Amazon Product API return?

One row per product: ASIN, title, brand, price and currency, list price, discount, deal and Prime flags, availability, rating, ratings and reviews counts, best-sellers rank and its category, who sells it, specs, images, variants and the product URL.

### What do I pass in?

Up to ten ASINs or Amazon product URLs per call, and optionally the marketplace. A product URL carries its own site; a bare ASIN uses the marketplace you set.

### Which Amazon sites are covered?

com, in, co.uk, de, fr, it, es, ca, com.au, co.jp, com.mx and com.br. Prices, stock and reviews differ per site, so the same ASIN can return different numbers on each.

### How much does an Amazon product lookup cost?

$0.0014 per product at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back, and a product your account already fetched today is served again free.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=amazon&op=products (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Amazon Search API. Pay per record.

> Amazon search results as JSON: every hit a full product card with its rank, price, rating and seller. From $0.00045 per product, pay as you go.

Canonical: https://apiforagents.dev/platforms/amazon/search-api · Updated 2026-10-21

Search one Amazon marketplace by keyword and get back what a shopper sees, in order. Every hit is a full product card with its search rank, so you do not need a second call for the details.

- Price: $0.00045 / product
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/amazon

## What people build with the Amazon Search API

- **Share of search.** See where your products and your competitors' rank for the keywords that matter, on each Amazon site you sell on.
- **Find products to track.** Search a category once, keep the ASINs that matter, then follow them with the product API.
- **Market research.** Compare prices, ratings and how many bought in the past month across the first page of a niche.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/amazon \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"wireless earbuds","marketplace":"com","limit":10,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/amazon \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"wireless earbuds","marketplace":"com","limit":10}'
```

## Inputs

Everything you can send in one search call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | ≤300 chars |
| marketplace | enum | The Amazon site as its domain suffix ,  "com", "in", "co.uk", "de"… A product URL carries its own and overrides this; a bare ASIN and a search use it. Prices, stock and reviews differ per site. |
| limit | integer | 1-50 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| asin | string |
| marketplace | string |
| title | string |
| brand | string |
| productUrl | string |
| price | number |
| currency | string |
| listPrice | number |
| discount | string |
| onDeal | boolean |
| prime | boolean |
| availability | string |
| rating | number |
| ratingsCount | integer |
| reviewsCount | integer |
| ratingBreakdown | any |
| boughtPastMonth | string |
| boughtPastMonthMin | integer |
| bestSellersRank | integer |
| bsrCategory | string |
| soldBy | string |
| fulfilledBy | string |
| sellerId | string |
| usedOffer | any |
| features | list of string |
| description | string |
| categoryPath | string |
| browseNodeId | string |
| productDetails | any |
| keySpecs | any |
| bookEditions | any |
| variants | any |
| mainImage | string |
| images | list of string |
| videos | list of string |
| reviewSummary | string |
| reviewTopics | any |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Real rows from an earlier run, business data only.

| asin | marketplace | title | brand | productUrl | price |
|---|---|---|---|---|---|
| B0DGHMNQ5Z | com | Apple AirPods 4 Wireless Earbuds | Apple | https://www.amazon.com/dp/B0DGHMNQ5Z | 99 |
| B0BJQWYLYN | com | Apple AirPods Pro (2nd Generation) (Renewed) | Apple | https://www.amazon.com/dp/B0BJQWYLYN | 146.9 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One product | 1 | $0.00045 |
| 10 products | 10 | $0.0045 |
| A full page | 50 | $0.022 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Amazon Search API in the playground](https://apiforagents.dev/dashboard/run?platform=amazon&op=search): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Amazon account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Amazon in n8n](https://apiforagents.dev/integrations/n8n/amazon)
- [Amazon in Make](https://apiforagents.dev/integrations/make/amazon)
- [Amazon in Zapier](https://apiforagents.dev/integrations/zapier/amazon)
- [Amazon in Python](https://apiforagents.dev/integrations/python/amazon)
- [Amazon in LangChain](https://apiforagents.dev/integrations/langchain/amazon)
- [Amazon in Claude Code](https://apiforagents.dev/integrations/claude-code/amazon)

## Questions

### What does the Amazon Search API return?

One full product card per hit with its search rank: ASIN, title, brand, price, list price, discount, deal and Prime flags, availability, rating and count, bought in the past month, best-sellers rank, seller, features, category path, variants and images.

### What do I pass in?

A keyword query of up to 300 characters, the marketplace (com, in, co.uk, de and nine more) and a limit of up to fifty results.

### How much does an Amazon search cost?

$0.00045 per product at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back, and a product your account already fetched today is served again free.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=amazon&op=search (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Amazon Reviews API. Pay per record.

> Amazon customer reviews as JSON: text, rating, date, verified purchase and helpful votes. From $0.00045 per review, pay as you go.

Canonical: https://apiforagents.dev/platforms/amazon/reviews-api · Updated 2026-10-21

Read the customer reviews of up to ten Amazon products in one call: the text, the rating, the date, verified-purchase and Vine flags, helpful votes, the variant and any media.

- Price: $0.00045 / review
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/amazon

## What people build with the Amazon Reviews API

- **Find what buyers complain about.** Pull the recent low-rated reviews of a product and let an agent group them into the problems people mention most.
- **Improve your own listing.** Read what customers praise in your reviews and your competitors', and use their words in your copy.
- **Product research.** Compare review themes across a shortlist of products before you build or stock one.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/amazon \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reviews","subjects":["B0DGHMNQ5Z"],"marketplace":"com","limit":50,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/amazon \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reviews","subjects":["B0DGHMNQ5Z"],"marketplace":"com","limit":50}'
```

## Inputs

Everything you can send in one reviews call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | ASINs or product URLs. 1-10 items |
| marketplace | enum | The Amazon site as its domain suffix ,  "com", "in", "co.uk", "de"… A product URL carries its own and overrides this; a bare ASIN and a search use it. Prices, stock and reviews differ per site. |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| reviewId | string |
| reviewTitle | string |
| reviewText | string |
| rating | number |
| posted | string |
| reviewer | string |
| reviewerUrl | string |
| verifiedPurchase | boolean |
| amazonVine | boolean |
| helpfulVotes | integer |
| language | string |
| variant | list of string |
| variantAsin | string |
| images | list of string |
| videos | list of string |
| mediaType | string |
| reviewUrl | string |
| country | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| reviewTitle | reviewText | rating | posted | reviewer | verifiedPurchase |
|---|---|---|---|---|---|
| Great sound for the price | Clear calls, solid bass, case fits in a pocket. | 5 | 2026-09-28 | Dana P. | true |
| Battery could be better | About 4 hours with noise cancelling on. | 3 | 2026-10-02 | Chris M. | true |
| Comfortable for long calls | Wore them for a full workday, no ear fatigue. | 4 | 2026-10-09 | Aisha K. | true |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One review | 1 | $0.00045 |
| 10 reviews | 10 | $0.0045 |
| A full page | 100 | $0.045 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Amazon Reviews API in the playground](https://apiforagents.dev/dashboard/run?platform=amazon&op=reviews): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Amazon account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Amazon in n8n](https://apiforagents.dev/integrations/n8n/amazon)
- [Amazon in Make](https://apiforagents.dev/integrations/make/amazon)
- [Amazon in Zapier](https://apiforagents.dev/integrations/zapier/amazon)
- [Amazon in Python](https://apiforagents.dev/integrations/python/amazon)
- [Amazon in LangChain](https://apiforagents.dev/integrations/langchain/amazon)
- [Amazon in Claude Code](https://apiforagents.dev/integrations/claude-code/amazon)

## Questions

### What does the Amazon Reviews API return?

One row per review: title, text, rating, posted date, reviewer, verified-purchase and Vine flags, helpful votes, country, variant, images, and the review id and URL.

### What do I pass in?

Up to ten ASINs or product URLs, the marketplace, and a limit of up to a hundred reviews. Amazon caps reviews at a hundred per product.

### How much does it cost?

$0.00045 per review at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back, and a review your account already fetched today is served again free.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=amazon&op=reviews (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Shopify Products API. Pay per record.

> Every product in any Shopify store as JSON: price range, sale flag, stock, variants and tags. From $0.0009 per product, pay as you go.

Canonical: https://apiforagents.dev/platforms/shopify/products-api · Updated 2026-10-21

Read the catalogue of any Shopify-powered store from its URL: every product with its price range, sale flag, stock, variants and options. Up to five stores per call, priced per product returned.

- Price: $0.0009 / product
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/shopify

## What people build with the Shopify Products API

- **Monitor competitor stores.** Check a rival brand's catalogue each week and see which products went on sale, sold out or changed price.
- **Spot new launches.** Every product carries its created and published dates, so new drops show up the day they go live.
- **Build a product feed.** Pull titles, prices, tags and images from a list of stores into one table for comparison or resale research.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/shopify \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["https://www.allbirds.com"],"limit":25,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/shopify \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["https://www.allbirds.com"],"limit":25}'
```

## Inputs

Everything you can send in one products call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Store URLs. Any Shopify-powered storefront. 1-5 items |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| storeUrl | string |
| productId | string |
| productUrl | string |
| title | string |
| brand | string |
| category | string |
| description | string |
| tags | list of string |
| currency | string |
| priceFrom | number |
| priceTo | number |
| onSale | boolean |
| inStock | boolean |
| variantCount | integer |
| variants | any |
| options | any |
| imageUrl | string |
| media | any |
| createdDate | string |
| publishedDate | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| title | brand | category | currency | priceFrom | priceTo |
|---|---|---|---|---|---|
| Linen Overshirt | Northfold Studio | Shirts | USD | 89 | 89 |
| Merino Crew Socks (3 pack) | Northfold Studio | Socks | USD | 28 | 32 |
| Canvas Weekender Bag | Northfold Studio | Bags | USD | 145 | 145 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One product | 1 | $0.0009 |
| 5 products | 5 | $0.0045 |
| A full page | 100 | $0.09 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Shopify Products API in the playground](https://apiforagents.dev/dashboard/run?platform=shopify&op=products): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Shopify account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Shopify in n8n](https://apiforagents.dev/integrations/n8n/shopify)
- [Shopify in Make](https://apiforagents.dev/integrations/make/shopify)
- [Shopify in Zapier](https://apiforagents.dev/integrations/zapier/shopify)
- [Shopify in Python](https://apiforagents.dev/integrations/python/shopify)
- [Shopify in LangChain](https://apiforagents.dev/integrations/langchain/shopify)
- [Shopify in Claude Code](https://apiforagents.dev/integrations/claude-code/shopify)

## Questions

### What does the Shopify Products API return?

One row per product: title, brand, category, currency, lowest and highest price, sale flag, in-stock flag, variant count, tags, store URL, product id and URL, image URL, and the created and published dates.

### What do I pass in?

Up to five store URLs. Any storefront that runs on Shopify works, no login or app install needed. Add a limit of up to a hundred products.

### How much does it cost?

$0.0009 per product at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back, and a product your account already fetched today is served again free.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=shopify&op=products (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Farfetch Product API. Pay per record.

> Farfetch product data as JSON: price, full price, discount, per-size stock and seller boutique. From $0.0009 per product, pay as you go.

Canonical: https://apiforagents.dev/platforms/farfetch/product-api · Updated 2026-10-21

Turn a Farfetch product URL or item id into full product detail: price, full price, discount, availability by size and the boutique selling it. Up to ten products per call.

- Price: $0.0009 / product
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/farfetch

## What people build with the Farfetch Product API

- **Track luxury markdowns.** Follow a list of pieces and see the day a discount starts and how deep it goes.
- **Watch sizes sell out.** Per-size availability shows which sizes are left, a clear signal of demand for a style.
- **Price benchmarking.** Compare what the same designer piece costs against your own store or other retailers.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/farfetch \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["https://www.farfetch.com/shopping/women/<product>-item-<id>.aspx"],"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/farfetch \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["https://www.farfetch.com/shopping/women/<product>-item-<id>.aspx"]}'
```

## Inputs

Everything you can send in one products call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | 1-10 items |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| productId | string |
| productName | string |
| brand | string |
| productUrl | string |
| description | string |
| color | string |
| category | string |
| categoryPath | string |
| gender | string |
| season | string |
| price | number |
| fullPrice | number |
| discountPercent | number |
| currency | string |
| seller | string |
| sizes | list of string |
| variants | any |
| measurements | any |
| returns | any |
| stockQuantity | integer |
| availability | list of string |
| label | string |
| condition | string |
| images | list of string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| productName | brand | category | color | gender | season |
|---|---|---|---|---|---|
| Wool-blend tailored blazer | Maison Aurel | Blazers | Camel | women | FW26 |
| Leather low-top sneakers | Corvo | Sneakers | White | men | SS26 |
| Silk scarf with logo print | Maison Aurel | Scarves | Navy | women | FW26 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One product | 1 | $0.0009 |
| 10 products | 10 | $0.009 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Farfetch Product API in the playground](https://apiforagents.dev/dashboard/run?platform=farfetch&op=products): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Farfetch account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Farfetch in n8n](https://apiforagents.dev/integrations/n8n/farfetch)
- [Farfetch in Make](https://apiforagents.dev/integrations/make/farfetch)
- [Farfetch in Zapier](https://apiforagents.dev/integrations/zapier/farfetch)
- [Farfetch in Python](https://apiforagents.dev/integrations/python/farfetch)
- [Farfetch in LangChain](https://apiforagents.dev/integrations/langchain/farfetch)
- [Farfetch in Claude Code](https://apiforagents.dev/integrations/claude-code/farfetch)

## Questions

### What does the Farfetch Product API return?

One row per product: name, brand, category, colour, gender, season, price, full price, discount percent, currency, product id and URL, and images, plus per-size availability and the seller boutique.

### What do I pass in?

Up to ten Farfetch product URLs or item ids.

### How much does it cost?

$0.0009 per product at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back, and a product your account already fetched today is served again free.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=farfetch&op=products (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Farfetch Search API. Pay per record.

> Search Farfetch by keyword and get full product cards as JSON: brand, price, discount, season. From $0.0009 per product, pay as you go.

Canonical: https://apiforagents.dev/platforms/farfetch/search-api · Updated 2026-10-21

Search all of Farfetch by keyword and get every hit as a full product card: brand, category, colour, season, price, full price and discount.

- Price: $0.0009 / product
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/farfetch

## What people build with the Farfetch Search API

- **Map a designer's range.** Search a brand or a style and see every matching piece with its current price and discount.
- **Trend research.** Compare how many pieces of a style are listed, and at what prices, across seasons.
- **Find items to track.** Search once, keep the products that matter, then follow them with the product API.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/farfetch \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"Gucci loafers","limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/farfetch \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"Gucci loafers","limit":20}'
```

## Inputs

Everything you can send in one search call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | ≤300 chars |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| productId | string |
| productName | string |
| brand | string |
| productUrl | string |
| description | string |
| color | string |
| category | string |
| categoryPath | string |
| gender | string |
| season | string |
| price | number |
| fullPrice | number |
| discountPercent | number |
| currency | string |
| seller | string |
| sizes | list of string |
| variants | any |
| measurements | any |
| returns | any |
| stockQuantity | integer |
| availability | list of string |
| label | string |
| condition | string |
| images | list of string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| productName | brand | category | color | gender | season |
|---|---|---|---|---|---|
| Shearling-lined trench coat | Maison Aurel | Coats | Black | women | FW26 |
| Double-breasted wool coat | Corvo | Coats | Charcoal | men | FW26 |
| Belted wrap coat | Velia | Coats | Camel | women | FW26 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One product | 1 | $0.0009 |
| 10 products | 10 | $0.009 |
| A full page | 100 | $0.09 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Farfetch Search API in the playground](https://apiforagents.dev/dashboard/run?platform=farfetch&op=search): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Farfetch account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Farfetch in n8n](https://apiforagents.dev/integrations/n8n/farfetch)
- [Farfetch in Make](https://apiforagents.dev/integrations/make/farfetch)
- [Farfetch in Zapier](https://apiforagents.dev/integrations/zapier/farfetch)
- [Farfetch in Python](https://apiforagents.dev/integrations/python/farfetch)
- [Farfetch in LangChain](https://apiforagents.dev/integrations/langchain/farfetch)
- [Farfetch in Claude Code](https://apiforagents.dev/integrations/claude-code/farfetch)

## Questions

### What does the Farfetch Search API return?

A full product card per hit: name, brand, category, colour, gender, season, price, full price, discount percent, currency, product id and URL, and images.

### What do I pass in?

A keyword query of up to 300 characters and a limit of up to a hundred products.

### How much does it cost?

$0.0009 per product at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back, and a product your account already fetched today is served again free.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=farfetch&op=search (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Farfetch Listings API. Pay per record.

> Every product on a Farfetch designer, category or sale page, in page order, as JSON. From $0.0009 per product, pay as you go.

Canonical: https://apiforagents.dev/platforms/farfetch/listings-api · Updated 2026-10-21

Give any Farfetch designer, category or sale page URL and get its products back in page order, each a full product card with price, full price and discount.

- Price: $0.0009 / product
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/farfetch

## What people build with the Farfetch Listings API

- **Follow a sale page.** Read a sale listing each day and see which pieces were added and how deep the cuts are.
- **Merchandising research.** Page order shows what Farfetch puts first for a designer or a category.
- **Category snapshots.** Take the first hundred products of a category with their prices and seasons, in one call.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/farfetch \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"listing","subject":"https://www.farfetch.com/shopping/women/gucci/items.aspx","limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/farfetch \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"listing","subject":"https://www.farfetch.com/shopping/women/gucci/items.aspx","limit":20}'
```

## Inputs

Everything you can send in one listing call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subject * | string | The listing page URL. ≤400 chars |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| productId | string |
| productName | string |
| brand | string |
| productUrl | string |
| description | string |
| color | string |
| category | string |
| categoryPath | string |
| gender | string |
| season | string |
| price | number |
| fullPrice | number |
| discountPercent | number |
| currency | string |
| seller | string |
| sizes | list of string |
| variants | any |
| measurements | any |
| returns | any |
| stockQuantity | integer |
| availability | list of string |
| label | string |
| condition | string |
| images | list of string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| productName | brand | category | color | gender | season |
|---|---|---|---|---|---|
| Cashmere crew-neck jumper | Velia | Knitwear | Oatmeal | women | FW26 |
| Ribbed cardigan | Velia | Knitwear | Black | women | FW26 |
| Wool turtleneck | Corvo | Knitwear | Navy | men | FW26 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One product | 1 | $0.0009 |
| 10 products | 10 | $0.009 |
| A full page | 100 | $0.09 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Farfetch Listings API in the playground](https://apiforagents.dev/dashboard/run?platform=farfetch&op=listing): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Farfetch account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Farfetch in n8n](https://apiforagents.dev/integrations/n8n/farfetch)
- [Farfetch in Make](https://apiforagents.dev/integrations/make/farfetch)
- [Farfetch in Zapier](https://apiforagents.dev/integrations/zapier/farfetch)
- [Farfetch in Python](https://apiforagents.dev/integrations/python/farfetch)
- [Farfetch in LangChain](https://apiforagents.dev/integrations/langchain/farfetch)
- [Farfetch in Claude Code](https://apiforagents.dev/integrations/claude-code/farfetch)

## Questions

### What does the Farfetch Listings API return?

The products of the page in order, each with name, brand, category, colour, gender, season, price, full price, discount percent, currency, product id and URL, and images.

### What do I pass in?

One listing page URL: a designer, a category or a sale page. Add a limit of up to a hundred products.

### How much does it cost?

$0.0009 per product at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back, and a product your account already fetched today is served again free.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=farfetch&op=listing (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# GOAT Product API. Pay per record.

> GOAT sneaker data as JSON: every size's asking price and availability, max offer and retail price. From $0.0009 per product, pay as you go.

Canonical: https://apiforagents.dev/platforms/goat/product-api · Updated 2026-10-21

Turn a GOAT product URL or slug into full product detail: every size with its asking price and availability, the max offer and the retail price. Up to ten products per call.

- Price: $0.0009 / product
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/goat

## What people build with the GOAT Product API

- **Resale price tracking.** Follow the lowest ask on the pairs you buy or sell and see how it moves against retail.
- **Size-level pricing.** Every size comes back with its own ask, so you can see which sizes trade above retail.
- **Inventory decisions.** Check the max offer before you list a pair, and price with the market rather than a guess.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/goat \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["https://www.goat.com/sneakers/<product-slug>"],"country":"US","estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/goat \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["https://www.goat.com/sneakers/<product-slug>"],"country":"US"}'
```

## Inputs

Everything you can send in one products call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | 1-10 items |
| country | string | ISO alpha-2 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| slug | string |
| productId | string |
| productName | string |
| sku | string |
| productUrl | string |
| brand | string |
| colorway | string |
| color | string |
| category | string |
| subcategory | string |
| categoryLevel3 | string |
| categoryLevel4 | string |
| activities | list of string |
| gender | string |
| releaseDate | string |
| season | string |
| story | string |
| styleTags | list of string |
| detailTags | list of string |
| merchandisingTags | list of string |
| specialType | string |
| isResellable | boolean |
| directShipping | boolean |
| maxOffer | number |
| sizeType | string |
| sizeUnit | string |
| retailPrice | number |
| images | list of string |
| attributes | any |
| listings | any |
| lowestAsk | number |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| productName | brand | sku | colorway | category | gender |
|---|---|---|---|---|---|
| Runner 90 'Sea Salt' | Stride | ST90-102 | Sea Salt/White | sneakers | men |
| Court Classic Low 'Black' | Corvo | CC-LOW-001 | Black/Black | sneakers | unisex |
| Trail Pro GTX 'Moss' | Stride | TPG-330 | Moss/Grey | sneakers | men |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One product | 1 | $0.0009 |
| 10 products | 10 | $0.009 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the GOAT Product API in the playground](https://apiforagents.dev/dashboard/run?platform=goat&op=products): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no GOAT account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [GOAT in n8n](https://apiforagents.dev/integrations/n8n/goat)
- [GOAT in Make](https://apiforagents.dev/integrations/make/goat)
- [GOAT in Zapier](https://apiforagents.dev/integrations/zapier/goat)
- [GOAT in Python](https://apiforagents.dev/integrations/python/goat)
- [GOAT in LangChain](https://apiforagents.dev/integrations/langchain/goat)
- [GOAT in Claude Code](https://apiforagents.dev/integrations/claude-code/goat)

## Questions

### What does the GOAT Product API return?

One row per product: name, brand, SKU, colourway, category, gender, release date, retail price, lowest ask, slug, product id and URL, resellable flag and images, plus every size with its asking price and availability and the max offer.

### What do I pass in?

Up to ten GOAT product URLs or slugs, and optionally a two-letter country code for local prices.

### How much does it cost?

$0.0009 per product at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back, and a product your account already fetched today is served again free.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=goat&op=products (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# GOAT Search API. Pay per record.

> Search GOAT by keyword and get full product cards as JSON: SKU, colourway, retail price and lowest ask. From $0.0009 per product.

Canonical: https://apiforagents.dev/platforms/goat/search-api · Updated 2026-10-21

Search GOAT by keyword and get every hit as a full product card: SKU, colourway, release date, retail price and lowest ask.

- Price: $0.0009 / product
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/goat

## What people build with the GOAT Search API

- **Price a whole model line.** Search a model and compare the lowest ask of every colourway in one table.
- **Find SKUs to track.** Search once, keep the products you care about, then follow them with the product API.
- **Release research.** See release dates next to resale asks to judge which drops held their value.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/goat \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"Nike Dunk Low","country":"US","limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/goat \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"Nike Dunk Low","country":"US","limit":20}'
```

## Inputs

Everything you can send in one search call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | ≤300 chars |
| country | string | ISO alpha-2 |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| slug | string |
| productId | string |
| productName | string |
| sku | string |
| productUrl | string |
| brand | string |
| colorway | string |
| color | string |
| category | string |
| subcategory | string |
| categoryLevel3 | string |
| categoryLevel4 | string |
| activities | list of string |
| gender | string |
| releaseDate | string |
| season | string |
| story | string |
| styleTags | list of string |
| detailTags | list of string |
| merchandisingTags | list of string |
| specialType | string |
| isResellable | boolean |
| directShipping | boolean |
| maxOffer | number |
| sizeType | string |
| sizeUnit | string |
| retailPrice | number |
| images | list of string |
| attributes | any |
| listings | any |
| lowestAsk | number |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| productName | brand | sku | colorway | category | gender |
|---|---|---|---|---|---|
| Runner 90 'Sea Salt' | Stride | ST90-102 | Sea Salt/White | sneakers | men |
| Runner 90 'Night' | Stride | ST90-001 | Black/Gum | sneakers | men |
| Runner 90 'Sand' (W) | Stride | ST90-W210 | Sand/Cream | sneakers | women |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One product | 1 | $0.0009 |
| 10 products | 10 | $0.009 |
| A full page | 100 | $0.09 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the GOAT Search API in the playground](https://apiforagents.dev/dashboard/run?platform=goat&op=search): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no GOAT account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [GOAT in n8n](https://apiforagents.dev/integrations/n8n/goat)
- [GOAT in Make](https://apiforagents.dev/integrations/make/goat)
- [GOAT in Zapier](https://apiforagents.dev/integrations/zapier/goat)
- [GOAT in Python](https://apiforagents.dev/integrations/python/goat)
- [GOAT in LangChain](https://apiforagents.dev/integrations/langchain/goat)
- [GOAT in Claude Code](https://apiforagents.dev/integrations/claude-code/goat)

## Questions

### What does the GOAT Search API return?

A full product card per hit: name, brand, SKU, colourway, category, gender, release date, retail price, lowest ask, slug, product id and URL, and images.

### What do I pass in?

A keyword query of up to 300 characters, an optional two-letter country code and a limit of up to a hundred products.

### How much does it cost?

$0.0009 per product at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back, and a product your account already fetched today is served again free.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=goat&op=search (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# GOAT Listings API. Pay per record.

> Every product on a GOAT brand or collection page, in page order, as JSON with retail price and lowest ask. From $0.0009 per product.

Canonical: https://apiforagents.dev/platforms/goat/listings-api · Updated 2026-10-21

Give a GOAT brand or collection page URL and get its products back in page order, each with SKU, colourway, retail price and lowest ask.

- Price: $0.0009 / product
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/goat

## What people build with the GOAT Listings API

- **Brand snapshots.** Take a brand page's products with their asks in one call, and compare week to week.
- **Collection tracking.** Follow a curated collection and see what is added and how it is priced.
- **Feed a price tracker.** Collect the slugs from a listing, then track each one with the product API.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/goat \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"listing","subject":"https://www.goat.com/brand/nike","country":"US","limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/goat \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"listing","subject":"https://www.goat.com/brand/nike","country":"US","limit":20}'
```

## Inputs

Everything you can send in one listing call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subject * | string | The listing page URL. ≤400 chars |
| country | string | ISO alpha-2 |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| slug | string |
| productId | string |
| productName | string |
| sku | string |
| productUrl | string |
| brand | string |
| colorway | string |
| color | string |
| category | string |
| subcategory | string |
| categoryLevel3 | string |
| categoryLevel4 | string |
| activities | list of string |
| gender | string |
| releaseDate | string |
| season | string |
| story | string |
| styleTags | list of string |
| detailTags | list of string |
| merchandisingTags | list of string |
| specialType | string |
| isResellable | boolean |
| directShipping | boolean |
| maxOffer | number |
| sizeType | string |
| sizeUnit | string |
| retailPrice | number |
| images | list of string |
| attributes | any |
| listings | any |
| lowestAsk | number |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| productName | brand | sku | colorway | category | gender |
|---|---|---|---|---|---|
| Court Classic High 'White' | Corvo | CC-HI-100 | White/White | sneakers | unisex |
| Court Classic Low 'Sail' | Corvo | CC-LOW-210 | Sail/Gum | sneakers | unisex |
| Court Classic Mid 'Forest' | Corvo | CC-MID-330 | Forest/White | sneakers | unisex |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One product | 1 | $0.0009 |
| 10 products | 10 | $0.009 |
| A full page | 100 | $0.09 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the GOAT Listings API in the playground](https://apiforagents.dev/dashboard/run?platform=goat&op=listing): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no GOAT account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [GOAT in n8n](https://apiforagents.dev/integrations/n8n/goat)
- [GOAT in Make](https://apiforagents.dev/integrations/make/goat)
- [GOAT in Zapier](https://apiforagents.dev/integrations/zapier/goat)
- [GOAT in Python](https://apiforagents.dev/integrations/python/goat)
- [GOAT in LangChain](https://apiforagents.dev/integrations/langchain/goat)
- [GOAT in Claude Code](https://apiforagents.dev/integrations/claude-code/goat)

## Questions

### What does the GOAT Listings API return?

The page's products in order, each with name, brand, SKU, colourway, category, gender, release date, retail price, lowest ask, slug, product id and URL, and images.

### What do I pass in?

One brand or collection page URL, an optional two-letter country code and a limit of up to a hundred products.

### How much does it cost?

$0.0009 per product at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back, and a product your account already fetched today is served again free.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=goat&op=listing (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# StockX Product API. Pay per record.

> StockX market data as JSON: last sale, lowest ask, highest bid, 90-day and 12-month averages, per size. From $0.0009 per product.

Canonical: https://apiforagents.dev/platforms/stockx/product-api · Updated 2026-10-21

Get live StockX market data for up to ten products: last sale, 90-day and 12-month averages, sales counts, bids, and every size's ask, bid and last sale.

- Price: $0.0009 / product
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/stockx

## What people build with the StockX Product API

- **Price with the market.** Read the last sale, lowest ask and highest bid before you buy or list, size by size.
- **Spot demand.** Sales in the last 72 hours and the 90-day average show which products are moving and which have cooled.
- **Portfolio valuation.** Value a collection or an inventory at today's market prices, with the date each was measured.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/stockx \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["https://stockx.com/nike-dunk-low-retro-white-black-2021"],"country":"US","estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/stockx \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["https://stockx.com/nike-dunk-low-retro-white-black-2021"],"country":"US"}'
```

## Inputs

Everything you can send in one products call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | 1-10 items |
| country | string | ISO alpha-2 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| slug | string |
| productId | string |
| productUrl | string |
| primaryTitle | string |
| secondaryTitle | string |
| brand | string |
| model | string |
| colorway | string |
| styleId | string |
| category | string |
| subCategory | string |
| categoryPath | string |
| contentGroup | string |
| gender | string |
| condition | string |
| sizeConvention | string |
| retailPrice | number |
| releaseDate | string |
| description | string |
| tags | list of string |
| lastSale | number |
| sales72Hours | integer |
| averagePrice90Days | number |
| sales90Days | integer |
| priceVolatility | number |
| sales12Months | integer |
| averagePrice12Months | number |
| bids | integer |
| askInventoryType | string |
| expressAskCount | integer |
| expressShipLowestAsk | number |
| expressDeliveryDate | string |
| expressLatestDeliveryDate | string |
| images | list of string |
| sizes | any |
| attributes | any |
| lowestAsk | number |
| highestBid | number |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| primaryTitle | brand | colorway | category | retailPrice | lastSale |
|---|---|---|---|---|---|
| Stride Runner 90 | Stride | Sea Salt/White | sneakers | 130 | 176 |
| Corvo Court Classic Low | Corvo | Black/Black | sneakers | 110 | 99 |
| Stride Trail Pro GTX | Stride | Moss/Grey | sneakers | 170 | 221 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One product | 1 | $0.0009 |
| 10 products | 10 | $0.009 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the StockX Product API in the playground](https://apiforagents.dev/dashboard/run?platform=stockx&op=products): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no StockX account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [StockX in n8n](https://apiforagents.dev/integrations/n8n/stockx)
- [StockX in Make](https://apiforagents.dev/integrations/make/stockx)
- [StockX in Zapier](https://apiforagents.dev/integrations/zapier/stockx)
- [StockX in Python](https://apiforagents.dev/integrations/python/stockx)
- [StockX in LangChain](https://apiforagents.dev/integrations/langchain/stockx)
- [StockX in Claude Code](https://apiforagents.dev/integrations/claude-code/stockx)

## Questions

### What does the StockX Product API return?

One row per product: title, brand, colourway, category, retail price, last sale, lowest ask, highest bid, sales in the last 72 hours, 12-month average price, slug, style id, release date, product id and URL, and images, plus 90-day figures and every size's ask, bid and last sale.

### What do I pass in?

Up to ten StockX product URLs or slugs, and optionally a two-letter country code.

### How much does it cost?

$0.0009 per product at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back, and a product your account already fetched today is served again free.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=stockx&op=products (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# StockX Search API. Pay per record.

> Search StockX by keyword and get full product cards as JSON: last sale, lowest ask, highest bid. From $0.0009 per product.

Canonical: https://apiforagents.dev/platforms/stockx/search-api · Updated 2026-10-21

Search StockX by keyword and get every hit as a full product card with its market data: retail price, last sale, lowest ask, highest bid and recent sales.

- Price: $0.0009 / product
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/stockx

## What people build with the StockX Search API

- **Compare a model line.** Search a model and see the last sale and lowest ask of every colourway side by side.
- **Find what is trading.** Sort the hits by sales in the last 72 hours to see which products the market wants now.
- **Build a watchlist.** Search once, keep the products you care about, then follow them with the product API.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/stockx \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"Air Jordan 1","country":"US","limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/stockx \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"Air Jordan 1","country":"US","limit":20}'
```

## Inputs

Everything you can send in one search call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | ≤300 chars |
| country | string | ISO alpha-2 |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| slug | string |
| productId | string |
| productUrl | string |
| primaryTitle | string |
| secondaryTitle | string |
| brand | string |
| model | string |
| colorway | string |
| styleId | string |
| category | string |
| subCategory | string |
| categoryPath | string |
| contentGroup | string |
| gender | string |
| condition | string |
| sizeConvention | string |
| retailPrice | number |
| releaseDate | string |
| description | string |
| tags | list of string |
| lastSale | number |
| sales72Hours | integer |
| averagePrice90Days | number |
| sales90Days | integer |
| priceVolatility | number |
| sales12Months | integer |
| averagePrice12Months | number |
| bids | integer |
| askInventoryType | string |
| expressAskCount | integer |
| expressShipLowestAsk | number |
| expressDeliveryDate | string |
| expressLatestDeliveryDate | string |
| images | list of string |
| sizes | any |
| attributes | any |
| lowestAsk | number |
| highestBid | number |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| primaryTitle | brand | colorway | category | retailPrice | lastSale |
|---|---|---|---|---|---|
| Stride Trail Pro GTX | Stride | Moss/Grey | sneakers | 170 | 221 |
| Stride Trail Pro GTX | Stride | Black/Orange | sneakers | 170 | 198 |
| Stride Trail Lite | Stride | Grey/Lime | sneakers | 140 | 132 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One product | 1 | $0.0009 |
| 10 products | 10 | $0.009 |
| A full page | 100 | $0.09 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the StockX Search API in the playground](https://apiforagents.dev/dashboard/run?platform=stockx&op=search): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no StockX account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [StockX in n8n](https://apiforagents.dev/integrations/n8n/stockx)
- [StockX in Make](https://apiforagents.dev/integrations/make/stockx)
- [StockX in Zapier](https://apiforagents.dev/integrations/zapier/stockx)
- [StockX in Python](https://apiforagents.dev/integrations/python/stockx)
- [StockX in LangChain](https://apiforagents.dev/integrations/langchain/stockx)
- [StockX in Claude Code](https://apiforagents.dev/integrations/claude-code/stockx)

## Questions

### What does the StockX Search API return?

A full product card per hit: title, brand, colourway, category, retail price, last sale, lowest ask, highest bid, sales in the last 72 hours, 12-month average price, slug, style id, release date, product URL and images.

### What do I pass in?

A keyword query of up to 300 characters, an optional two-letter country code and a limit of up to a hundred products.

### How much does it cost?

$0.0009 per product at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back, and a product your account already fetched today is served again free.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=stockx&op=search (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# StockX Listings API. Pay per record.

> Every product on a StockX brand or category page, in page order, as JSON with market data. From $0.0009 per product, pay as you go.

Canonical: https://apiforagents.dev/platforms/stockx/listings-api · Updated 2026-10-21

Give a StockX brand or category page URL and get its products back in page order, each with retail price, last sale, lowest ask and highest bid.

- Price: $0.0009 / product
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/stockx

## What people build with the StockX Listings API

- **Category snapshots.** Take a brand or category's products with their market prices in one call.
- **Track a brand over time.** Read the same page each week and compare last sales and asks across the range.
- **Beyond sneakers.** Any StockX brand or category page works, from shoes to electronics and collectibles.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/stockx \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"listing","subject":"https://stockx.com/brands/nike","country":"US","limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/stockx \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"listing","subject":"https://stockx.com/brands/nike","country":"US","limit":20}'
```

## Inputs

Everything you can send in one listing call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subject * | string | The listing page URL. ≤400 chars |
| country | string | ISO alpha-2 |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| slug | string |
| productId | string |
| productUrl | string |
| primaryTitle | string |
| secondaryTitle | string |
| brand | string |
| model | string |
| colorway | string |
| styleId | string |
| category | string |
| subCategory | string |
| categoryPath | string |
| contentGroup | string |
| gender | string |
| condition | string |
| sizeConvention | string |
| retailPrice | number |
| releaseDate | string |
| description | string |
| tags | list of string |
| lastSale | number |
| sales72Hours | integer |
| averagePrice90Days | number |
| sales90Days | integer |
| priceVolatility | number |
| sales12Months | integer |
| averagePrice12Months | number |
| bids | integer |
| askInventoryType | string |
| expressAskCount | integer |
| expressShipLowestAsk | number |
| expressDeliveryDate | string |
| expressLatestDeliveryDate | string |
| images | list of string |
| sizes | any |
| attributes | any |
| lowestAsk | number |
| highestBid | number |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| primaryTitle | brand | colorway | category | retailPrice | lastSale |
|---|---|---|---|---|---|
| Sonora Studio Headphones | Sonora | Matte Black | electronics | 349 | 310 |
| Sonora Buds Pro | Sonora | White | electronics | 199 | 168 |
| Sonora Mini Speaker | Sonora | Sage | electronics | 99 | 84 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One product | 1 | $0.0009 |
| 10 products | 10 | $0.009 |
| A full page | 100 | $0.09 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the StockX Listings API in the playground](https://apiforagents.dev/dashboard/run?platform=stockx&op=listing): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no StockX account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [StockX in n8n](https://apiforagents.dev/integrations/n8n/stockx)
- [StockX in Make](https://apiforagents.dev/integrations/make/stockx)
- [StockX in Zapier](https://apiforagents.dev/integrations/zapier/stockx)
- [StockX in Python](https://apiforagents.dev/integrations/python/stockx)
- [StockX in LangChain](https://apiforagents.dev/integrations/langchain/stockx)
- [StockX in Claude Code](https://apiforagents.dev/integrations/claude-code/stockx)

## Questions

### What does the StockX Listings API return?

The page's products in order, each with title, brand, colourway, category, retail price, last sale, lowest ask, highest bid, sales in the last 72 hours, 12-month average price, slug, product URL and images.

### What do I pass in?

One brand or category page URL, an optional two-letter country code and a limit of up to a hundred products.

### How much does it cost?

$0.0009 per product at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back, and a product your account already fetched today is served again free.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=stockx&op=listing (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Blinkit Price and Stock API. Pay per record.

> Blinkit price, MRP, discount and stock count at one dark store, as JSON, by product URL. From $0.0009 per product, pay as you go.

Canonical: https://apiforagents.dev/platforms/blinkit/price-and-stock-api · Updated 2026-10-21

Read what a Blinkit product costs at one dark store right now: price, MRP, discount, stock count, rating, seller, manufacturer and specifications. Up to ten product URLs per call, at the store you name by pincode, location or store id.

- Price: $0.0009 / product
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/blinkit

## What people build with the Blinkit Price and Stock API

- **Price tracking by city.** Check the same products at a store in Bengaluru and one in Delhi and see where the price or discount differs.
- **Stock-out monitoring.** A D2C brand can watch its own products store by store and catch the day one goes out of stock.
- **A price history that builds itself.** Every fetch adds a point to that product's history at that store, and reading the stored series back is free.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/blinkit \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["https://blinkit.com/prn/<product-name>/prid/<id>"],"store":{"city":"Bengaluru","pincode":"560001"},"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/blinkit \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["https://blinkit.com/prn/<product-name>/prid/<id>"],"store":{"city":"Bengaluru","pincode":"560001"}}'
```

## Inputs

Everything you can send in one products call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Product URLs at that store. 1-10 items |
| store.storeId | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | integer | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | integer | Longitude in decimal degrees; only read together with lat. |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| productId | string |
| variantId | string |
| storeScope | string |
| storeId | string |
| vendorProductId | string |
| productName | string |
| brand | string |
| price | number |
| mrp | number |
| discountPct | number |
| packSize | string |
| inStock | boolean |
| stockCount | integer |
| rating | number |
| ratingCount | integer |
| category | string |
| rank | integer |
| sponsored | boolean |
| images | list of string |
| productUrl | string |
| description | string |
| countryOfOrigin | string |
| manufacturer | string |
| seller | string |
| specifications | any |
| latitude | number |
| longitude | number |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| productName | brand | price | mrp | discountPct | packSize |
|---|---|---|---|---|---|
| Toned Milk | Dairyfield | 27 | 28 | 4 | 500 ml |
| Brown Bread | Bakehouse | 45 | 50 | 10 | 400 g |
| Basmati Rice, Premium | Ricewell | 189 | 230 | 18 | 1 kg |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One product | 1 | $0.0009 |
| 10 products | 10 | $0.009 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Blinkit Price and Stock API in the playground](https://apiforagents.dev/dashboard/run?platform=blinkit&op=products): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Blinkit account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Blinkit in n8n](https://apiforagents.dev/integrations/n8n/blinkit)
- [Blinkit in Make](https://apiforagents.dev/integrations/make/blinkit)
- [Blinkit in Zapier](https://apiforagents.dev/integrations/zapier/blinkit)
- [Blinkit in Python](https://apiforagents.dev/integrations/python/blinkit)
- [Blinkit in LangChain](https://apiforagents.dev/integrations/langchain/blinkit)
- [Blinkit in Claude Code](https://apiforagents.dev/integrations/claude-code/blinkit)

## Questions

### What does the Blinkit Price and Stock API return?

One row per product at that store: name, brand, price, MRP, discount percent, pack size, in-stock flag and stock count, category, rating and rating count, seller, manufacturer, specifications, product and store ids, images and the product URL.

### What do I pass in?

Up to ten blinkit.com product URLs and one store: a storeId, a pincode with its city, or lat and lon.

### How do I choose the store?

Every call names one dark store: its storeId when an earlier answer gave you one, a 6-digit pincode with the city, or a latitude and longitude. A pincode uses the nearest store serving it. Prices, MRP, discounts and stock are read at that store only.

### How much does it cost?

$0.0009 per product at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=blinkit&op=products (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Blinkit Search API. Pay per record.

> Blinkit search results at one dark store as JSON: price, MRP, stock and rank for any query. From $0.0009 per product, pay as you go.

Canonical: https://apiforagents.dev/platforms/blinkit/search-api · Updated 2026-10-21

Search Blinkit the way a shopper at one dark store would, and get the listings they see: price, MRP, discount, stock and rank for every result.

- Price: $0.0009 / product
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/blinkit

## What people build with the Blinkit Search API

- **Share of shelf.** Search the words your buyers type and see where your brand ranks against others at each store, including sponsored slots.
- **Price checks across apps.** Run the same query here and on the other quick-commerce apps at the same pincode and compare prices.
- **Availability by area.** Search a product at stores in different pincodes and see where it is listed and in stock.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/blinkit \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"Amul butter","store":{"city":"Bengaluru","pincode":"560001"},"limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/blinkit \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"Amul butter","store":{"city":"Bengaluru","pincode":"560001"},"limit":20}'
```

## Inputs

Everything you can send in one search call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | ≤300 chars |
| store.storeId | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | integer | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | integer | Longitude in decimal degrees; only read together with lat. |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| productId | string |
| variantId | string |
| storeScope | string |
| storeId | string |
| vendorProductId | string |
| productName | string |
| brand | string |
| price | number |
| mrp | number |
| discountPct | number |
| packSize | string |
| inStock | boolean |
| stockCount | integer |
| rating | number |
| ratingCount | integer |
| category | string |
| rank | integer |
| sponsored | boolean |
| images | list of string |
| productUrl | string |
| description | string |
| countryOfOrigin | string |
| manufacturer | string |
| seller | string |
| specifications | any |
| latitude | number |
| longitude | number |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Real rows from an earlier run, business data only.

| productId | variantId | storeScope | storeId | vendorProductId | productName |
|---|---|---|---|---|---|
| 212722 | 212722 | pin:560034 | 44371 | 212722 | Nestle KitKat 4 Fingers Choco Coated Wafer Bar |
| 536255 | 536255 | pin:560034 | 44371 | 536255 | Cadbury Nutties Milk Chocolate Pack |
| 381902 | 381902 | pin:560034 | 44371 | 381902 | Amul Dark Chocolate Bar |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One product | 1 | $0.0009 |
| 10 products | 10 | $0.009 |
| A full page | 100 | $0.09 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Blinkit Search API in the playground](https://apiforagents.dev/dashboard/run?platform=blinkit&op=search): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Blinkit account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Blinkit in n8n](https://apiforagents.dev/integrations/n8n/blinkit)
- [Blinkit in Make](https://apiforagents.dev/integrations/make/blinkit)
- [Blinkit in Zapier](https://apiforagents.dev/integrations/zapier/blinkit)
- [Blinkit in Python](https://apiforagents.dev/integrations/python/blinkit)
- [Blinkit in LangChain](https://apiforagents.dev/integrations/langchain/blinkit)
- [Blinkit in Claude Code](https://apiforagents.dev/integrations/claude-code/blinkit)

## Questions

### What does the Blinkit Search API return?

One row per listing, in rank order: name, brand, price, MRP, discount percent, pack size, in-stock flag and stock count, rating and rating count, category, rank, a sponsored flag, product and store ids, images and the product URL.

### What do I pass in?

A query of up to 300 characters, one store (storeId, pincode with city, or lat and lon) and a limit of up to a hundred listings.

### How do I choose the store?

Every call names one dark store: its storeId when an earlier answer gave you one, a 6-digit pincode with the city, or a latitude and longitude. A pincode uses the nearest store serving it. Prices, MRP, discounts and stock are read at that store only.

### How much does it cost?

$0.0009 per product at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=blinkit&op=search (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Blinkit Category API. Pay per record.

> One Blinkit category shelf at one dark store as JSON: every product with price, MRP, stock and rank. From $0.0009 per product.

Canonical: https://apiforagents.dev/platforms/blinkit/category-api · Updated 2026-10-21

Read one shelf of the Blinkit menu at one dark store: every product on it, in order, with price, MRP, discount, stock and rank.

- Price: $0.0009 / product
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/blinkit

## What people build with the Blinkit Category API

- **Category share of shelf.** See how many of a shelf's slots your brand holds at each store, and in which positions.
- **Assortment gaps.** Compare the same shelf across pincodes and spot the stores where a product is missing.
- **Category pricing.** Take every price and discount on a shelf in one call, ready to compare with your own.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/blinkit \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"category","category":"Atta, Rice & Dal","subCategory":"Atta","store":{"city":"Delhi","pincode":"110001"},"limit":50,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/blinkit \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"category","category":"Atta, Rice & Dal","subCategory":"Atta","store":{"city":"Delhi","pincode":"110001"},"limit":50}'
```

## Inputs

Everything you can send in one category call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| category * | string | The top-level aisle as the app names it ("Dairy, Bread & Eggs"). ≤80 chars |
| subCategory * | string | The shelf inside it, again as the app names it ("Milk"). Both are required: the listing is one shelf at one store. ≤80 chars |
| store.storeId | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | integer | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | integer | Longitude in decimal degrees; only read together with lat. |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| productId | string |
| variantId | string |
| storeScope | string |
| storeId | string |
| vendorProductId | string |
| productName | string |
| brand | string |
| price | number |
| mrp | number |
| discountPct | number |
| packSize | string |
| inStock | boolean |
| stockCount | integer |
| rating | number |
| ratingCount | integer |
| category | string |
| rank | integer |
| sponsored | boolean |
| images | list of string |
| productUrl | string |
| description | string |
| countryOfOrigin | string |
| manufacturer | string |
| seller | string |
| specifications | any |
| latitude | number |
| longitude | number |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| productName | brand | price | mrp | discountPct | packSize |
|---|---|---|---|---|---|
| Fresh Paneer | Dairyfield | 90 | 95 | 5 | 200 g |
| Greek Yogurt, Plain | Cultura | 60 | 65 | 8 | 100 g |
| Salted Butter | Dairyfield | 58 | 58 | 0 | 100 g |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One product | 1 | $0.0009 |
| 10 products | 10 | $0.009 |
| A full page | 100 | $0.09 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Blinkit Category API in the playground](https://apiforagents.dev/dashboard/run?platform=blinkit&op=category): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Blinkit account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Blinkit in n8n](https://apiforagents.dev/integrations/n8n/blinkit)
- [Blinkit in Make](https://apiforagents.dev/integrations/make/blinkit)
- [Blinkit in Zapier](https://apiforagents.dev/integrations/zapier/blinkit)
- [Blinkit in Python](https://apiforagents.dev/integrations/python/blinkit)
- [Blinkit in LangChain](https://apiforagents.dev/integrations/langchain/blinkit)
- [Blinkit in Claude Code](https://apiforagents.dev/integrations/claude-code/blinkit)

## Questions

### What does the Blinkit Category API return?

One row per product on the shelf, in order: name, brand, price, MRP, discount percent, pack size, in-stock flag, category, rank, rating and rating count, product and store ids, images and the product URL.

### What do I pass in?

A category and a subCategory exactly as the app names them, for example "Atta, Rice & Dal" and "Atta", one store, and a limit of up to a hundred products. Both names are required and must belong together.

### What if the category name is wrong?

A name that is not on the app's menu is refused and nothing is charged.

### How much does it cost?

$0.0009 per product at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=blinkit&op=category (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Instamart Price and Stock API. Pay per record.

> Swiggy Instamart price, MRP, discount and stock count at one dark store, as JSON, by product URL. From $0.0009 per product.

Canonical: https://apiforagents.dev/platforms/instamart/price-and-stock-api · Updated 2026-10-21

Read what a Swiggy Instamart product costs at one dark store right now: price, MRP, discount, stock count, rating, seller, manufacturer and specifications. Up to ten product URLs per call, at the store you name by pincode, location or store id.

- Price: $0.0009 / product
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/instamart

## What people build with the Instamart Price and Stock API

- **Price tracking across apps.** Check the same products on Instamart and the other quick-commerce apps at one pincode and see who is cheaper today.
- **Stock-out monitoring.** A D2C brand can watch its own products store by store and catch the day one goes out of stock.
- **A price history that builds itself.** Every fetch adds a point to that product's history at that store, and reading the stored series back is free.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/instamart \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["https://www.swiggy.com/instamart/item/<item-id>"],"store":{"city":"Delhi","pincode":"110001"},"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/instamart \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["https://www.swiggy.com/instamart/item/<item-id>"],"store":{"city":"Delhi","pincode":"110001"}}'
```

## Inputs

Everything you can send in one products call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Product URLs at that store. 1-10 items |
| store.storeId | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | integer | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | integer | Longitude in decimal degrees; only read together with lat. |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| productId | string |
| variantId | string |
| storeScope | string |
| storeId | string |
| vendorProductId | string |
| productName | string |
| brand | string |
| price | number |
| mrp | number |
| discountPct | number |
| packSize | string |
| inStock | boolean |
| stockCount | integer |
| rating | number |
| ratingCount | integer |
| category | string |
| rank | integer |
| sponsored | boolean |
| images | list of string |
| productUrl | string |
| description | string |
| countryOfOrigin | string |
| manufacturer | string |
| seller | string |
| specifications | any |
| latitude | number |
| longitude | number |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| productName | brand | price | mrp | discountPct | packSize |
|---|---|---|---|---|---|
| Bananas, Robusta | Fresh | 42 | 55 | 24 | 6 pcs |
| Eggs, Brown | Farmnest | 96 | 110 | 13 | 6 pcs |
| Atta, Whole Wheat | Millhouse | 289 | 330 | 12 | 5 kg |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One product | 1 | $0.0009 |
| 10 products | 10 | $0.009 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Instamart Price and Stock API in the playground](https://apiforagents.dev/dashboard/run?platform=instamart&op=products): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Swiggy Instamart account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Swiggy Instamart in n8n](https://apiforagents.dev/integrations/n8n/instamart)
- [Swiggy Instamart in Make](https://apiforagents.dev/integrations/make/instamart)
- [Swiggy Instamart in Zapier](https://apiforagents.dev/integrations/zapier/instamart)
- [Swiggy Instamart in Python](https://apiforagents.dev/integrations/python/instamart)
- [Swiggy Instamart in LangChain](https://apiforagents.dev/integrations/langchain/instamart)
- [Swiggy Instamart in Claude Code](https://apiforagents.dev/integrations/claude-code/instamart)

## Questions

### What does the Instamart Price and Stock API return?

One row per product at that store: name, brand, price, MRP, discount percent, pack size, in-stock flag and stock count, category, rating and rating count, seller, manufacturer, specifications, product and store ids, images and the product URL.

### What do I pass in?

Up to ten swiggy.com/instamart product URLs and one store: a storeId, a pincode with its city, or lat and lon.

### How do I choose the store?

Every call names one dark store: its storeId when an earlier answer gave you one, a 6-digit pincode with the city, or a latitude and longitude. A pincode uses the nearest store serving it. Prices, MRP, discounts and stock are read at that store only.

### How much does it cost?

$0.0009 per product at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=instamart&op=products (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Instamart Search API. Pay per record.

> Swiggy Instamart search results at one dark store as JSON: price, MRP, stock and rank for any query. From $0.0009 per product.

Canonical: https://apiforagents.dev/platforms/instamart/search-api · Updated 2026-10-21

Search Swiggy Instamart the way a shopper at one dark store would, and get the listings they see: price, MRP, discount, stock and rank for every result.

- Price: $0.0009 / product
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/instamart

## What people build with the Instamart Search API

- **Share of shelf.** Search the words your buyers type and see where your brand ranks against others at each store.
- **Price checks across apps.** Run the same query here and on the other quick-commerce apps at the same pincode and compare prices.
- **Availability by area.** Search a product at stores in different pincodes and see where it is listed and in stock.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/instamart \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"Maggi noodles","store":{"city":"Bengaluru","pincode":"560001"},"limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/instamart \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"Maggi noodles","store":{"city":"Bengaluru","pincode":"560001"},"limit":20}'
```

## Inputs

Everything you can send in one search call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | ≤300 chars |
| store.storeId | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | integer | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | integer | Longitude in decimal degrees; only read together with lat. |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| productId | string |
| variantId | string |
| storeScope | string |
| storeId | string |
| vendorProductId | string |
| productName | string |
| brand | string |
| price | number |
| mrp | number |
| discountPct | number |
| packSize | string |
| inStock | boolean |
| stockCount | integer |
| rating | number |
| ratingCount | integer |
| category | string |
| rank | integer |
| sponsored | boolean |
| images | list of string |
| productUrl | string |
| description | string |
| countryOfOrigin | string |
| manufacturer | string |
| seller | string |
| specifications | any |
| latitude | number |
| longitude | number |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| productName | brand | price | mrp | discountPct | packSize |
|---|---|---|---|---|---|
| Instant Noodles, Masala | Noodo | 14 | 15 | 7 | 70 g |
| Hakka Noodles | Wokit | 55 | 60 | 8 | 150 g |
| Cup Noodles, Spicy | Noodo | 50 | 50 | 0 | 70 g |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One product | 1 | $0.0009 |
| 10 products | 10 | $0.009 |
| A full page | 100 | $0.09 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Instamart Search API in the playground](https://apiforagents.dev/dashboard/run?platform=instamart&op=search): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Swiggy Instamart account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Swiggy Instamart in n8n](https://apiforagents.dev/integrations/n8n/instamart)
- [Swiggy Instamart in Make](https://apiforagents.dev/integrations/make/instamart)
- [Swiggy Instamart in Zapier](https://apiforagents.dev/integrations/zapier/instamart)
- [Swiggy Instamart in Python](https://apiforagents.dev/integrations/python/instamart)
- [Swiggy Instamart in LangChain](https://apiforagents.dev/integrations/langchain/instamart)
- [Swiggy Instamart in Claude Code](https://apiforagents.dev/integrations/claude-code/instamart)

## Questions

### What does the Instamart Search API return?

One row per listing, in rank order: name, brand, price, MRP, discount percent, pack size, in-stock flag, category, rank, rating and rating count, product and store ids, images and the product URL.

### What do I pass in?

A query of up to 300 characters, one store (storeId, pincode with city, or lat and lon) and a limit of up to a hundred listings.

### How do I choose the store?

Every call names one dark store: its storeId when an earlier answer gave you one, a 6-digit pincode with the city, or a latitude and longitude. A pincode uses the nearest store serving it. Prices, MRP, discounts and stock are read at that store only.

### How much does it cost?

$0.0009 per product at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=instamart&op=search (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Instamart Category API. Pay per record.

> One Swiggy Instamart category shelf at one dark store as JSON: every product with price, MRP, stock and rank. From $0.0009 each.

Canonical: https://apiforagents.dev/platforms/instamart/category-api · Updated 2026-10-21

Read one shelf of the Swiggy Instamart menu at one dark store: every product on it, in order, with price, MRP, discount, stock and rank.

- Price: $0.0009 / product
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/instamart

## What people build with the Instamart Category API

- **Category share of shelf.** See how many of a shelf's slots your brand holds at each store, and in which positions.
- **Assortment gaps.** Compare the same shelf across pincodes and spot the stores where a product is missing.
- **Category pricing.** Take every price and discount on a shelf in one call, ready to compare with your own.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/instamart \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"category","category":"Atta, Rice and Dal","subCategory":"Atta","store":{"city":"Delhi","pincode":"110001"},"limit":50,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/instamart \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"category","category":"Atta, Rice and Dal","subCategory":"Atta","store":{"city":"Delhi","pincode":"110001"},"limit":50}'
```

## Inputs

Everything you can send in one category call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| category * | string | The top-level aisle as the app names it ("Dairy, Bread & Eggs"). ≤80 chars |
| subCategory * | string | The shelf inside it, again as the app names it ("Milk"). Both are required: the listing is one shelf at one store. ≤80 chars |
| store.storeId | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | integer | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | integer | Longitude in decimal degrees; only read together with lat. |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| productId | string |
| variantId | string |
| storeScope | string |
| storeId | string |
| vendorProductId | string |
| productName | string |
| brand | string |
| price | number |
| mrp | number |
| discountPct | number |
| packSize | string |
| inStock | boolean |
| stockCount | integer |
| rating | number |
| ratingCount | integer |
| category | string |
| rank | integer |
| sponsored | boolean |
| images | list of string |
| productUrl | string |
| description | string |
| countryOfOrigin | string |
| manufacturer | string |
| seller | string |
| specifications | any |
| latitude | number |
| longitude | number |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| productName | brand | price | mrp | discountPct | packSize |
|---|---|---|---|---|---|
| Orange Juice, No Added Sugar | Squeezy | 120 | 135 | 11 | 1 L |
| Coconut Water | Tenderco | 60 | 65 | 8 | 200 ml |
| Cold Coffee | Brewlab | 45 | 50 | 10 | 180 ml |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One product | 1 | $0.0009 |
| 10 products | 10 | $0.009 |
| A full page | 100 | $0.09 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Instamart Category API in the playground](https://apiforagents.dev/dashboard/run?platform=instamart&op=category): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Swiggy Instamart account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Swiggy Instamart in n8n](https://apiforagents.dev/integrations/n8n/instamart)
- [Swiggy Instamart in Make](https://apiforagents.dev/integrations/make/instamart)
- [Swiggy Instamart in Zapier](https://apiforagents.dev/integrations/zapier/instamart)
- [Swiggy Instamart in Python](https://apiforagents.dev/integrations/python/instamart)
- [Swiggy Instamart in LangChain](https://apiforagents.dev/integrations/langchain/instamart)
- [Swiggy Instamart in Claude Code](https://apiforagents.dev/integrations/claude-code/instamart)

## Questions

### What does the Instamart Category API return?

One row per product on the shelf, in order: name, brand, price, MRP, discount percent, pack size, in-stock flag, category, rank, rating and rating count, product and store ids, images and the product URL.

### What do I pass in?

A category and a subCategory exactly as the app names them, for example "Atta, Rice and Dal" and "Atta", one store, and a limit of up to a hundred products. Both names are required and must belong together.

### What if the category name is wrong?

A name that is not on the app's menu is refused and nothing is charged.

### How much does it cost?

$0.0009 per product at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=instamart&op=category (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Zepto Price and Stock API. Pay per record.

> Zepto price, MRP, discount and stock count at one dark store, as JSON, by product URL. From $0.0009 per product, pay as you go.

Canonical: https://apiforagents.dev/platforms/zepto/price-and-stock-api · Updated 2026-10-21

Read what a Zepto product costs at one dark store right now: price, MRP, discount, stock count, rating, seller, manufacturer and specifications. Up to ten product URLs per call, at the store you name by pincode, location or store id.

- Price: $0.0009 / product
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/zepto

## What people build with the Zepto Price and Stock API

- **Price tracking across apps.** Check the same products on Zepto and the other quick-commerce apps at one pincode and see who is cheaper today.
- **Stock-out monitoring.** A D2C brand can watch its own products store by store and catch the day one goes out of stock.
- **A price history that builds itself.** Every fetch adds a point to that product's history at that store, and reading the stored series back is free.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/zepto \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["https://www.zepto.com/pn/<product-name>/pvid/<id>"],"store":{"city":"Bengaluru","pincode":"560001"},"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/zepto \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["https://www.zepto.com/pn/<product-name>/pvid/<id>"],"store":{"city":"Bengaluru","pincode":"560001"}}'
```

## Inputs

Everything you can send in one products call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Product URLs at that store. 1-10 items |
| store.storeId | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | integer | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | integer | Longitude in decimal degrees; only read together with lat. |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| productId | string |
| variantId | string |
| storeScope | string |
| storeId | string |
| vendorProductId | string |
| productName | string |
| brand | string |
| price | number |
| mrp | number |
| discountPct | number |
| packSize | string |
| inStock | boolean |
| stockCount | integer |
| rating | number |
| ratingCount | integer |
| category | string |
| rank | integer |
| sponsored | boolean |
| images | list of string |
| productUrl | string |
| description | string |
| countryOfOrigin | string |
| manufacturer | string |
| seller | string |
| specifications | any |
| latitude | number |
| longitude | number |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| productName | brand | price | mrp | discountPct | packSize |
|---|---|---|---|---|---|
| Tomato, Hybrid | Fresh | 32 | 40 | 20 | 500 g |
| Onion | Fresh | 38 | 45 | 16 | 1 kg |
| Coriander Leaves | Fresh | 12 | 15 | 20 | 100 g |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One product | 1 | $0.0009 |
| 10 products | 10 | $0.009 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Zepto Price and Stock API in the playground](https://apiforagents.dev/dashboard/run?platform=zepto&op=products): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Zepto account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Zepto in n8n](https://apiforagents.dev/integrations/n8n/zepto)
- [Zepto in Make](https://apiforagents.dev/integrations/make/zepto)
- [Zepto in Zapier](https://apiforagents.dev/integrations/zapier/zepto)
- [Zepto in Python](https://apiforagents.dev/integrations/python/zepto)
- [Zepto in LangChain](https://apiforagents.dev/integrations/langchain/zepto)
- [Zepto in Claude Code](https://apiforagents.dev/integrations/claude-code/zepto)

## Questions

### What does the Zepto Price and Stock API return?

One row per product at that store: name, brand, price, MRP, discount percent, pack size, in-stock flag and stock count, category, rating and rating count, seller, manufacturer, specifications, product and store ids, images and the product URL.

### What do I pass in?

Up to ten zepto.com product URLs and one store: a storeId, a pincode with its city, or lat and lon.

### How do I choose the store?

Every call names one dark store: its storeId when an earlier answer gave you one, a 6-digit pincode with the city, or a latitude and longitude. A pincode uses the nearest store serving it. Prices, MRP, discounts and stock are read at that store only.

### How much does it cost?

$0.0009 per product at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=zepto&op=products (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Zepto Search API. Pay per record.

> Zepto search results at one dark store as JSON: price, MRP, stock and rank for any query. From $0.0009 per product, pay as you go.

Canonical: https://apiforagents.dev/platforms/zepto/search-api · Updated 2026-10-21

Search Zepto the way a shopper at one dark store would, and get the listings they see: price, MRP, discount, stock and rank for every result.

- Price: $0.0009 / product
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/zepto

## What people build with the Zepto Search API

- **Share of shelf.** Search the words your buyers type and see where your brand ranks against others at each store.
- **Price checks across apps.** Run the same query here and on the other quick-commerce apps at the same pincode and compare prices.
- **Availability by area.** Search a product at stores in different pincodes and see where it is listed and in stock.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/zepto \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"Tata Salt","store":{"city":"Delhi","pincode":"110001"},"limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/zepto \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"Tata Salt","store":{"city":"Delhi","pincode":"110001"},"limit":20}'
```

## Inputs

Everything you can send in one search call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | ≤300 chars |
| store.storeId | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | integer | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | integer | Longitude in decimal degrees; only read together with lat. |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| productId | string |
| variantId | string |
| storeScope | string |
| storeId | string |
| vendorProductId | string |
| productName | string |
| brand | string |
| price | number |
| mrp | number |
| discountPct | number |
| packSize | string |
| inStock | boolean |
| stockCount | integer |
| rating | number |
| ratingCount | integer |
| category | string |
| rank | integer |
| sponsored | boolean |
| images | list of string |
| productUrl | string |
| description | string |
| countryOfOrigin | string |
| manufacturer | string |
| seller | string |
| specifications | any |
| latitude | number |
| longitude | number |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| productName | brand | price | mrp | discountPct | packSize |
|---|---|---|---|---|---|
| Dish Wash Liquid, Lemon | Shinex | 99 | 115 | 14 | 500 ml |
| Dish Wash Bar | Shinex | 30 | 30 | 0 | 200 g |
| Scrub Pads (3) | Scrubby | 45 | 60 | 25 | 3 pcs |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One product | 1 | $0.0009 |
| 10 products | 10 | $0.009 |
| A full page | 100 | $0.09 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Zepto Search API in the playground](https://apiforagents.dev/dashboard/run?platform=zepto&op=search): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Zepto account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Zepto in n8n](https://apiforagents.dev/integrations/n8n/zepto)
- [Zepto in Make](https://apiforagents.dev/integrations/make/zepto)
- [Zepto in Zapier](https://apiforagents.dev/integrations/zapier/zepto)
- [Zepto in Python](https://apiforagents.dev/integrations/python/zepto)
- [Zepto in LangChain](https://apiforagents.dev/integrations/langchain/zepto)
- [Zepto in Claude Code](https://apiforagents.dev/integrations/claude-code/zepto)

## Questions

### What does the Zepto Search API return?

One row per listing, in rank order: name, brand, price, MRP, discount percent, pack size, in-stock flag, category, rank, rating and rating count, product and store ids, images and the product URL.

### What do I pass in?

A query of up to 300 characters, one store (storeId, pincode with city, or lat and lon) and a limit of up to a hundred listings.

### How do I choose the store?

Every call names one dark store: its storeId when an earlier answer gave you one, a 6-digit pincode with the city, or a latitude and longitude. A pincode uses the nearest store serving it. Prices, MRP, discounts and stock are read at that store only.

### How much does it cost?

$0.0009 per product at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=zepto&op=search (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Zepto Category API. Pay per record.

> One Zepto category shelf at one dark store as JSON: every product with price, MRP, stock and rank. From $0.0009 per product.

Canonical: https://apiforagents.dev/platforms/zepto/category-api · Updated 2026-10-21

Read one shelf of the Zepto menu at one dark store: every product on it, in order, with price, MRP, discount, stock and rank.

- Price: $0.0009 / product
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/zepto

## What people build with the Zepto Category API

- **Category share of shelf.** See how many of a shelf's slots your brand holds at each store, and in which positions.
- **Assortment gaps.** Compare the same shelf across pincodes and spot the stores where a product is missing.
- **Category pricing.** Take every price and discount on a shelf in one call, ready to compare with your own.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/zepto \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"category","category":"Atta Rice Oil Dals","subCategory":"Atta","store":{"city":"Bengaluru","pincode":"560001"},"limit":50,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/zepto \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"category","category":"Atta Rice Oil Dals","subCategory":"Atta","store":{"city":"Bengaluru","pincode":"560001"},"limit":50}'
```

## Inputs

Everything you can send in one category call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| category * | string | The top-level aisle as the app names it ("Dairy, Bread & Eggs"). ≤80 chars |
| subCategory * | string | The shelf inside it, again as the app names it ("Milk"). Both are required: the listing is one shelf at one store. ≤80 chars |
| store.storeId | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | integer | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | integer | Longitude in decimal degrees; only read together with lat. |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| productId | string |
| variantId | string |
| storeScope | string |
| storeId | string |
| vendorProductId | string |
| productName | string |
| brand | string |
| price | number |
| mrp | number |
| discountPct | number |
| packSize | string |
| inStock | boolean |
| stockCount | integer |
| rating | number |
| ratingCount | integer |
| category | string |
| rank | integer |
| sponsored | boolean |
| images | list of string |
| productUrl | string |
| description | string |
| countryOfOrigin | string |
| manufacturer | string |
| seller | string |
| specifications | any |
| latitude | number |
| longitude | number |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| productName | brand | price | mrp | discountPct | packSize |
|---|---|---|---|---|---|
| Potato Chips, Salted | Crunchio | 20 | 20 | 0 | 52 g |
| Roasted Peanuts | Nutbox | 55 | 60 | 8 | 200 g |
| Nachos, Cheese | Crunchio | 45 | 50 | 10 | 150 g |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One product | 1 | $0.0009 |
| 10 products | 10 | $0.009 |
| A full page | 100 | $0.09 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Zepto Category API in the playground](https://apiforagents.dev/dashboard/run?platform=zepto&op=category): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Zepto account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Zepto in n8n](https://apiforagents.dev/integrations/n8n/zepto)
- [Zepto in Make](https://apiforagents.dev/integrations/make/zepto)
- [Zepto in Zapier](https://apiforagents.dev/integrations/zapier/zepto)
- [Zepto in Python](https://apiforagents.dev/integrations/python/zepto)
- [Zepto in LangChain](https://apiforagents.dev/integrations/langchain/zepto)
- [Zepto in Claude Code](https://apiforagents.dev/integrations/claude-code/zepto)

## Questions

### What does the Zepto Category API return?

One row per product on the shelf, in order: name, brand, price, MRP, discount percent, pack size, in-stock flag, category, rank, rating and rating count, product and store ids, images and the product URL.

### What do I pass in?

A category and a subCategory exactly as the app names them, for example "Atta Rice Oil Dals" and "Atta", one store, and a limit of up to a hundred products. Both names are required and must belong together.

### What if the category name is wrong?

A name that is not on the app's menu is refused and nothing is charged.

### How much does it cost?

$0.0009 per product at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=zepto&op=category (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Indeed Jobs API. Pay per record.

> Search Indeed jobs by keyword, place and country. Title, company, salary range and apply link as JSON. From $0.000045 per job.

Canonical: https://apiforagents.dev/platforms/indeed/jobs-api · Updated 2026-10-21

Search Indeed the way a job seeker would: a keyword, a place and a country, with Indeed's own filters for remote work, job type and date posted. Every hit comes back as a full posting with title, company, location, salary and apply link.

- Price: $0.000045 / job
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/indeed

## What people build with the Indeed Jobs API

- **Job board aggregation.** Pull fresh postings for a niche, in the countries you cover, and list them on your own board with the apply link.
- **Hiring market research.** See which companies are hiring for a role in a city and what salary ranges they post, listing by listing.
- **Hiring signals for sales.** A company posting several roles of one kind this week has a need you might solve. Find them by job title.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/indeed \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"software engineer","location":"Austin, TX","country":"US","postedWithin":"7d","limit":10,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/indeed \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"software engineer","location":"Austin, TX","country":"US","postedWithin":"7d","limit":10}'
```

## Inputs

Everything you can send in one search call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | ≤300 chars |
| location | string | ≤120 chars |
| country | enum |  |
| workplace | enum list | Indeed filters remote only; hybrid/onsite are not filterable there. |
| employmentType | enum list |  |
| postedWithin | enum |  |
| sort | enum |  |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| jobId | string |
| jobUrl | string |
| applyUrl | string |
| jobTitle | string |
| normalizedTitle | string |
| companyName | string |
| companyKey | string |
| company | any |
| jobDescription | string |
| employmentType | list of string |
| workplaceType | string |
| workSetting | list of string |
| shift | list of string |
| experienceLevel | string |
| educationLevel | string |
| salaryText | string |
| salaryMin | number |
| salaryMax | number |
| salaryCurrency | string |
| salaryPeriod | string |
| posted | string |
| applyStarts | string |
| city | string |
| state | string |
| country | string |
| postalCode | string |
| streetAddress | string |
| fullAddress | string |
| latitude | number |
| longitude | number |
| skills | list of string |
| certifications | list of string |
| benefits | list of string |
| eligibility | list of string |
| physicalRequirements | list of string |
| travel | list of string |
| occupation | string |
| occupationCategories | list of string |
| sponsored | boolean |
| urgentHire | boolean |
| highVolumeHiring | boolean |
| numberOfHires | string |
| employerResponseRate | number |
| employerAvgResponseTimeDays | number |
| employerResponsive | boolean |
| sourceName | string |
| sourceType | string |
| language | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| jobTitle | companyName | city | state | country | employmentType |
|---|---|---|---|---|---|
| Barista | Brewlab Coffee | Austin | TX | US | Part-time |
| Shift Supervisor, Coffee Bar | Daily Grind | Austin | TX | US | Full-time |
| Barista (Weekends) | Bean Bar | Round Rock | TX | US | Part-time |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One job | 1 | $0.000045 |
| 10 jobs | 10 | $0.00045 |
| A full page | 100 | $0.0045 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Indeed Jobs API in the playground](https://apiforagents.dev/dashboard/run?platform=indeed&op=search): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Indeed account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Indeed in n8n](https://apiforagents.dev/integrations/n8n/indeed)
- [Indeed in Make](https://apiforagents.dev/integrations/make/indeed)
- [Indeed in Zapier](https://apiforagents.dev/integrations/zapier/indeed)
- [Indeed in Python](https://apiforagents.dev/integrations/python/indeed)
- [Indeed in LangChain](https://apiforagents.dev/integrations/langchain/indeed)
- [Indeed in Claude Code](https://apiforagents.dev/integrations/claude-code/indeed)

## Questions

### What does the Indeed Jobs API return?

One row per posting: job title, company name, city, state, country, employment type, workplace type, the salary text plus minimum, maximum, currency and period, the posted date, the job id, the job URL, the apply URL and a company key.

### What do I pass in?

A keyword query is required. Add a location, a country (23 are supported, including US, GB, CA, AU, IN and DE), remote only, employment type (full time, part time, contract, internship or temporary), posted within (1, 3, 7, 15 or 30 days, or any), sort by relevance or newest, and a limit of 1 to 100.

### Can I filter for hybrid or on-site jobs?

No. Indeed filters remote only, so remote is the one workplace filter. Each row still says the workplace type where the posting gives one.

### How much does it cost?

$0.000045 per job at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=indeed&op=search (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Indeed Job Details API. Pay per record.

> Full Indeed postings by job key or URL: title, company, salary, location and apply link as JSON. From $0.000045 per job, up to ten a call.

Canonical: https://apiforagents.dev/platforms/indeed/job-details-api · Updated 2026-10-21

Turn Indeed job keys or job URLs into full postings: title, company, location, employment type, salary and apply link. Up to ten postings per call, priced per posting.

- Price: $0.000045 / job
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/indeed

## What people build with the Indeed Job Details API

- **Refresh saved listings.** Re-read the postings on your board by job key and keep salary and location current.
- **Enrich a shared link.** Someone pastes an Indeed link into a chat. Your agent reads the full posting before it answers.
- **Track the roles you watch.** Keep a list of job keys for the roles that matter and fetch them again whenever you need the details.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/indeed \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"jobs","subjects":["https://www.indeed.com/viewjob?jk=<job-key>"],"country":"US","estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/indeed \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"jobs","subjects":["https://www.indeed.com/viewjob?jk=<job-key>"],"country":"US"}'
```

## Inputs

Everything you can send in one jobs call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Job keys or job URLs. 1-10 items |
| country | enum |  |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| jobId | string |
| jobUrl | string |
| applyUrl | string |
| jobTitle | string |
| normalizedTitle | string |
| companyName | string |
| companyKey | string |
| company | any |
| jobDescription | string |
| employmentType | list of string |
| workplaceType | string |
| workSetting | list of string |
| shift | list of string |
| experienceLevel | string |
| educationLevel | string |
| salaryText | string |
| salaryMin | number |
| salaryMax | number |
| salaryCurrency | string |
| salaryPeriod | string |
| posted | string |
| applyStarts | string |
| city | string |
| state | string |
| country | string |
| postalCode | string |
| streetAddress | string |
| fullAddress | string |
| latitude | number |
| longitude | number |
| skills | list of string |
| certifications | list of string |
| benefits | list of string |
| eligibility | list of string |
| physicalRequirements | list of string |
| travel | list of string |
| occupation | string |
| occupationCategories | list of string |
| sponsored | boolean |
| urgentHire | boolean |
| highVolumeHiring | boolean |
| numberOfHires | string |
| employerResponseRate | number |
| employerAvgResponseTimeDays | number |
| employerResponsive | boolean |
| sourceName | string |
| sourceType | string |
| language | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| jobTitle | companyName | city | country | employmentType | workplaceType |
|---|---|---|---|---|---|
| Customer Success Manager | Northfold | London | GB | Full-time | Hybrid |
| Senior Data Analyst | Kitebank | Austin | US | Full-time | Remote |
| Payroll Specialist | Paylane | Bengaluru | IN | Full-time | On-site |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One job | 1 | $0.000045 |
| 10 jobs | 10 | $0.00045 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Indeed Job Details API in the playground](https://apiforagents.dev/dashboard/run?platform=indeed&op=jobs): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Indeed account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Indeed in n8n](https://apiforagents.dev/integrations/n8n/indeed)
- [Indeed in Make](https://apiforagents.dev/integrations/make/indeed)
- [Indeed in Zapier](https://apiforagents.dev/integrations/zapier/indeed)
- [Indeed in Python](https://apiforagents.dev/integrations/python/indeed)
- [Indeed in LangChain](https://apiforagents.dev/integrations/langchain/indeed)
- [Indeed in Claude Code](https://apiforagents.dev/integrations/claude-code/indeed)

## Questions

### What does the Indeed Job Details API return?

One row per posting: job title, company name, city, state, country, employment type, workplace type, the salary text plus minimum, maximum, currency and period, the posted date, the job id, the job URL, the apply URL and a company key.

### What do I pass in?

Up to ten Indeed job keys or job URLs, and optionally the country the postings are on.

### How much does it cost?

$0.000045 per job at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

### How do I find job keys?

Run the Indeed jobs search first. Every row carries the job id and the job URL, which you can pass straight back here.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=indeed&op=jobs (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Naukri Jobs API. Pay per record.

> Search Naukri jobs with the board's own filters. Title, company, skills, experience, salary and applicants as JSON. From $0.0018 per job.

Canonical: https://apiforagents.dev/platforms/naukri/jobs-api · Updated 2026-10-21

Search Naukri by keyword, or paste a Naukri search URL, and narrow with the board's own filters: location, experience, salary in lakhs, workplace, department, industry and more. Every hit comes back as a posting with company, skills, salary range, experience range and applicant counts.

- Price: $0.0018 / job
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/naukri

## What people build with the Naukri Jobs API

- **Hiring market research in India.** See which companies are hiring data scientists in Bengaluru, at what experience and salary range, and how many people applied.
- **Job board aggregation.** Feed a niche board or an alert bot with fresh Naukri postings, filtered by role, city and date.
- **Hiring signals for sales.** Find companies posting several roles in one department this week, with their company details on each row.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/naukri \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"data scientist","postedWithin":"7d","experience":"3","locations":["Bengaluru"],"limit":50,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/naukri \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"data scientist","postedWithin":"7d","experience":"3","locations":["Bengaluru"],"limit":50}'
```

## Inputs

Everything you can send in one search call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | A keyword, or a pasted Naukri search URL. ≤300 chars |
| postedWithin | enum |  |
| sort | enum |  |
| experience | string | Years of experience, "all" or "0".."23". pattern `^(all\|[0-9]\|1[0-9]\|2[0-3])$` |
| workplace | enum list |  |
| salaryMin | integer | Lakhs per annum; mapped onto Naukri's salary bands. 0-1000 |
| salaryMax | integer | Upper bound in lakhs per annum; with salaryMin, the bands that overlap the range are searched. 0-1000 |
| locations | text list | each ≤60 chars |
| department | text list | Naukri's own department codes (the numbers in its filter URLs, e.g. "5" for Engineering). Any of them matches. Empty = every department. each ≤20 chars |
| roleCategory | text list | Naukri's role-category codes, narrower than a department. Empty = all. each ≤20 chars |
| industry | text list | Naukri's industry codes. Empty = every industry. each ≤20 chars |
| companyType | text list | Naukri's company-type codes (corporate, startup, MNC…). Empty = all. each ≤20 chars |
| topCompanies | text list | Naukri's top-company group codes, to keep only well-known employers. Empty = all companies. each ≤20 chars |
| postedBy | enum list | Who posted the job: the company itself, a consultant, or both when empty. |
| ugCourse | text list | Naukri's undergraduate-degree codes the posting asks for. Empty = any. each ≤20 chars |
| pgCourse | text list | Naukri's postgraduate-degree codes the posting asks for. Empty = any. each ≤20 chars |
| fetchDetails | boolean | Pull each posting's full description and requirements. Slower. |
| limit | integer | 50-200 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| jobId | string |
| jobUrl | string |
| applyUrl | string |
| jobTitle | string |
| company | string |
| companyId | string |
| companyDetails | any |
| hiringFor | string |
| location | string |
| description | string |
| requirementsSummary | string |
| skills | string |
| role | string |
| roleCategory | string |
| department | string |
| industry | string |
| jobType | string |
| workplaceType | string |
| hybridDetail | string |
| minExperienceYrs | integer |
| maxExperienceYrs | integer |
| salaryMin | number |
| salaryMax | number |
| benchmarkMinCtcLakhs | number |
| benchmarkAvgCtcLakhs | number |
| benchmarkMaxCtcLakhs | number |
| benchmarkRole | string |
| benchmarkSalariesUrl | string |
| educationUg | string |
| educationPg | string |
| posted | string |
| applicants | integer |
| views | integer |
| vacancies | integer |
| appliesOnCompanySite | boolean |
| postedByConsultant | boolean |
| listingSource | string |
| referenceCode | string |
| hasQuestionnaire | boolean |
| walkInJob | boolean |
| walkInStart | string |
| walkInEnd | string |
| walkInVenue | string |
| walkInTiming | string |
| walkInContact | string |
| walkInPhone | string |
| internshipDuration | string |
| diversityTags | string |
| benefits | string |
| employeeReviews | any |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Real rows from an earlier run, business data only.

| jobId | jobUrl | jobTitle | company | companyId | companyDetails |
|---|---|---|---|---|---|
| 060926000168 | https://www.naukri.com/job-listings-artificial-intelligen… | Artificial Intelligence Engineer-Bangalore (AI/ ML/ Data … | Shadowfax Technologies | 2449574 | {"hq":"Bengaluru, India","logo":"https://img.naukimg.com/log |
| 050926015054 | https://www.naukri.com/job-listings-software-developer-pr… | Software Developer | Pragmatechnology | 125779112 | {"hq":null,"logo":"https://img.naukimg.com/logo_images/group |
| 050926015043 | https://www.naukri.com/job-listings-fullstack-developer-w… | Fullstack Developer | Witness The Fitness | 124108168 | {"hq":null,"logo":"https://img.naukimg.com/logo_images/group |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One job | 1 | $0.0018 |
| 10 jobs | 10 | $0.018 |
| A full page | 200 | $0.36 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Naukri Jobs API in the playground](https://apiforagents.dev/dashboard/run?platform=naukri&op=search): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Naukri account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Naukri in n8n](https://apiforagents.dev/integrations/n8n/naukri)
- [Naukri in Make](https://apiforagents.dev/integrations/make/naukri)
- [Naukri in Zapier](https://apiforagents.dev/integrations/zapier/naukri)
- [Naukri in Python](https://apiforagents.dev/integrations/python/naukri)
- [Naukri in LangChain](https://apiforagents.dev/integrations/langchain/naukri)
- [Naukri in Claude Code](https://apiforagents.dev/integrations/claude-code/naukri)

## Questions

### What does the Naukri Jobs API return?

One row per posting: job id and URL, title, company and company details, location, description, a requirements summary, skills, role, role category, department, industry, job type, workplace type, minimum and maximum years of experience, salary range, education asked for, posted date, applicants, views, vacancies, whether a consultant posted it, whether it is a walk-in, benefits and employee reviews.

### What do I pass in?

A keyword or a pasted Naukri search URL is required. Optional filters: posted within, sort, years of experience, workplace (on-site, remote, hybrid or temporary work from home), salary range in lakhs per annum, locations, who posted it (company or consultant), and Naukri's own codes for department, role category, industry, company type, top companies and degree. Set fetchDetails to pull each posting's full description and requirements.

### Where do the department and industry codes come from?

They are the numbers Naukri carries in its own filter URLs, for example "5" for Engineering. Leave a code filter empty to match everything.

### How much does it cost?

$0.0018 per job at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back. Set a limit between 50 and 200 postings per call.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=naukri&op=search (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Upwork Jobs API. Pay per record.

> Search Upwork jobs with the marketplace's own filters. Budget, hourly rate, skills and proposal counts as JSON. From $0.0027 per job.

Canonical: https://apiforagents.dev/platforms/upwork/jobs-api · Updated 2026-10-21

Search Upwork jobs with the marketplace's own filters: hourly or fixed price, rate and budget ranges, experience level, client history, project length, hours per week and client country. Every hit comes back with the budget, skills and how many proposals it has.

- Price: $0.0027 / job
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/upwork

## What people build with the Upwork Jobs API

- **Find work worth bidding on.** Let an agent watch for new expert-level jobs in your skill, from clients who have hired before, and flag the ones with few proposals.
- **Freelance market research.** See which skills clients ask for, at what hourly rates and budgets, and how crowded each job is.
- **Job feeds and alerts.** Build a feed of fresh Upwork jobs for a niche, sorted newest first, for a team or a community.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/upwork \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"shopify developer","sort":"newest","experienceLevel":["expert"],"clientLocation":["United States"],"limit":10,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/upwork \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"shopify developer","sort":"newest","experienceLevel":["expert"],"clientLocation":["United States"],"limit":10}'
```

## Inputs

Everything you can send in one search call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | ≤300 chars |
| sort | enum |  |
| includeHourly | boolean | Keep hourly-rate jobs. Set both this and includeFixed false and nothing matches. |
| hourlyMin | integer | USD per hour. 0- |
| hourlyMax | integer | USD per hour, the upper bound; only hourly jobs are affected. 0- |
| includeFixed | boolean | Keep fixed-price jobs. |
| budgetMin | integer | USD, the fixed-price budget. 0- |
| budgetMax | integer | USD, the fixed-price budget's upper bound; only fixed jobs are affected. 0- |
| experienceLevel | enum list | The level the client asked for. Any listed level matches; empty = all. |
| clientHistory | enum list | How many jobs the client has hired for before: none, 1-9, or 10+. Empty = any client. |
| projectLength | enum list | Expected duration: under a week, under a month, 1-6 months, or ongoing (6+). Empty = any length. |
| hoursPerWeek | enum list | Weekly commitment: part-time (under 30 h) or full-time (30 h+). Empty = either. |
| clientLocation | text list | Client countries, as Upwork spells them ("United States"). each ≤60 chars |
| limit | integer | 5-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| jobId | string |
| jobUrl | string |
| jobTitle | string |
| jobDescription | string |
| posted | string |
| deadline | string |
| jobType | string |
| projectType | string |
| projectLength | string |
| weeklyWorkload | string |
| hourlyRateMin | number |
| hourlyRateMax | number |
| fixedBudget | number |
| hourlyBudgetSource | string |
| experienceLevel | string |
| englishLevel | string |
| skills | any |
| skillGroups | list of string |
| category | string |
| categoryGroup | string |
| occupation | string |
| applicants | integer |
| interviewing | integer |
| invitesSent | integer |
| unansweredInvites | integer |
| hired | integer |
| positionsToHire | integer |
| jobStatus | string |
| jobAccess | string |
| contractToHire | boolean |
| featuredJob | boolean |
| localMarketJob | boolean |
| locationCheckRequired | boolean |
| risingTalentOk | boolean |
| minJobSuccessScore | number |
| freelancerType | string |
| requiredCountries | string |
| requiredRegions | string |
| requiredTimezones | string |
| requiredLanguages | string |
| client | any |
| clientOtherOpenPostings | any |
| similarJobs | any |
| resultRank | integer |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| jobTitle | jobType | fixedBudget | experienceLevel | projectLength | skills |
|---|---|---|---|---|---|
| Build a Shopify product feed sync | fixed | 800 | intermediate | 1 to 3 months | ["Shopify","Node.js","APIs"] |
| Shopify theme speed fixes | hourly |  | expert | Less than 1 month | ["Shopify","Liquid","Web performance"] |
| Migrate store from WooCommerce to Shopify | fixed | 1500 | expert | 1 to 3 months | ["Shopify","WooCommerce","Data migration"] |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One job | 1 | $0.0027 |
| 10 jobs | 10 | $0.027 |
| A full page | 100 | $0.27 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Upwork Jobs API in the playground](https://apiforagents.dev/dashboard/run?platform=upwork&op=search): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Upwork account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Upwork in n8n](https://apiforagents.dev/integrations/n8n/upwork)
- [Upwork in Make](https://apiforagents.dev/integrations/make/upwork)
- [Upwork in Zapier](https://apiforagents.dev/integrations/zapier/upwork)
- [Upwork in Python](https://apiforagents.dev/integrations/python/upwork)
- [Upwork in LangChain](https://apiforagents.dev/integrations/langchain/upwork)
- [Upwork in Claude Code](https://apiforagents.dev/integrations/claude-code/upwork)

## Questions

### What does the Upwork Jobs API return?

One row per job: title, job type (hourly or fixed), the fixed budget or the hourly rate range, experience level, project length, skills, the proposal count, the posted date, the job id and the job URL.

### What do I pass in?

A keyword query is required. Optional filters: sort by relevance or newest, keep hourly or fixed-price jobs, hourly rate and fixed budget ranges in US dollars, experience level (entry, intermediate or expert), client history (no hires, 1 to 9, or 10 or more), project length, hours per week, client countries as Upwork spells them, and a limit of 5 to 100.

### How much does it cost?

$0.0027 per job at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=upwork&op=search (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Google Search API. Pay per record.

> Google web results as JSON: rank, title, link, snippet and domain, with site, date and file-type filters. From $0.0009 per page.

Canonical: https://apiforagents.dev/platforms/google/search-api · Updated 2026-10-21

Run a Google web search and get the organic results as JSON: rank, title, link, snippet, domain and date, with related questions and searches. Operators like site:, intitle: and OR work, and you can filter by country, language, site, date range and file type.

- Price: $0.0009 / page
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/google

## What people build with the Google Search API

- **Ground an agent in the web.** Let an agent search before it answers, then read the links it found, with the rank of each.
- **Rank tracking.** Check where a domain ranks for a set of queries in each country, on a schedule you choose.
- **Find evidence first.** Search a site, such as one domain or a profile path, to find the exact page or handle before you look it up elsewhere.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/google \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"best CRM for startups","pages":1,"country":"US","language":"en","estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/google \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"best CRM for startups","pages":1,"country":"US","language":"en"}'
```

## Inputs

Everything you can send in one search call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | ≤300 chars |
| pages | integer | Billed per page of ~10 results. The one op counted in pages. 1-5 |
| country | string | Country to search from. ISO alpha-2 |
| language | string | BCP-47 |
| site | string | Only results from this domain ("linkedin.com/in", "reddit.com"). The same as writing site: in the query. ≤120 chars |
| relatedToSite | string | Sites Google considers similar to this domain, instead of the query's own matches. ≤120 chars |
| since | string | YYYY-MM-DD |
| until | string | YYYY-MM-DD |
| fileTypes | text list | Only documents of these types, as extensions ("pdf", "xlsx", "ppt"). Empty = any page. each ≤8 chars |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| link | string |
| title | string |
| snippet | string |
| domain | string |
| source | string |
| publishedDate | string |
| rank | integer |
| relatedQuestions | any |
| relatedSearches | any |
| aiAnswer | string |
| aiAnswerSources | any |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| rank | title | domain | snippet | publishedDate | link |
|---|---|---|---|---|---|
| 1 | How to price a B2B SaaS product (2026 guide) | northfold.example | A step-by-step way to set your first price, with worked e… | 2026-08-12 | https://www.google.com/how-to-price-a-b2b-saas-product-20… |
| 2 | SaaS pricing models compared | ledgerly.example | Per seat, usage-based and flat fees, side by side. | 2026-06-30 | https://www.google.com/saas-pricing-models-compared-1001 |
| 3 | Pricing page examples that convert | brightdesk.example | 24 real pricing pages and what they get right. | 2026-09-18 | https://www.google.com/pricing-page-examples-that-convert… |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One page | 1 | $0.0009 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Google Search API in the playground](https://apiforagents.dev/dashboard/run?platform=google&op=search): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Google account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Google in n8n](https://apiforagents.dev/integrations/n8n/google)
- [Google in Make](https://apiforagents.dev/integrations/make/google)
- [Google in Zapier](https://apiforagents.dev/integrations/zapier/google)
- [Google in Python](https://apiforagents.dev/integrations/python/google)
- [Google in LangChain](https://apiforagents.dev/integrations/langchain/google)
- [Google in Claude Code](https://apiforagents.dev/integrations/claude-code/google)

## Questions

### What does the Google Search API return?

One row per organic result: rank, title, domain, snippet, published date where shown, and link, plus the related questions and related searches Google shows for the query.

### What do I pass in?

A query of up to 300 characters, and optionally the number of pages (one to five), country, language, a site to search within, a site to find similar sites to, since and until dates, and file types such as pdf or xlsx.

### How is a search billed?

$0.0009 per page of about ten results at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=google&op=search (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Google News API. Pay per record.

> Google News articles as JSON: headline, publisher, date, link and image, by query, country and recency. From $0.0018 per article.

Canonical: https://apiforagents.dev/platforms/google/news-api · Updated 2026-10-21

Search Google News for any topic, company or person in the news and get the articles back as JSON: headline, publisher, date, link and image. Narrow by how recent, country and language.

- Price: $0.0018 / article
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/google

## What people build with the Google News API

- **Company news monitoring.** Check a list of companies every morning and get the articles from the last day for each one.
- **Sales triggers.** Funding, launches and new offices show up in the news first. Search for them and act the same week.
- **Research briefs.** Give an agent the past week's coverage of a topic before it writes a summary, with every source linked.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/google \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"news","query":"electric vehicles","postedWithin":"7d","country":"US","language":"en","limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/google \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"news","query":"electric vehicles","postedWithin":"7d","country":"US","language":"en","limit":20}'
```

## Inputs

Everything you can send in one news call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | ≤300 chars |
| postedWithin | enum |  |
| country | string | The Google News market and its language. ISO alpha-2 |
| language | string | BCP-47 |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| articleUrl | string |
| title | string |
| source | string |
| publishedAt | string |
| publishedTimestamp | integer |
| imageUrl | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| title | source | publishedAt | articleUrl | imageUrl | details |
|---|---|---|---|---|---|
| Kitebank opens its first branch in Europe | Daily Ledger | 2026-10-15T08:00:00Z | https://www.google.com/kitebank-opens-its-first-branch-in… | https://img.google.com/kitebank-opens-its-first-branch-in… | {} |
| Northfold raises $40M to automate finance teams | Tech Wire | 2026-10-13T14:30:00Z | https://www.google.com/northfold-raises-40m-to-automate-f… | https://img.google.com/northfold-raises-40m-to-automate-f… | {} |
| Fintech funding rebounds in Q3 | Market Desk | 2026-10-12T06:15:00Z | https://www.google.com/fintech-funding-rebounds-in-q3-1002 | https://img.google.com/fintech-funding-rebounds-in-q3.jpg | {} |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One article | 1 | $0.0018 |
| 10 articles | 10 | $0.018 |
| A full page | 100 | $0.18 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Google News API in the playground](https://apiforagents.dev/dashboard/run?platform=google&op=news): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Google account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Google in n8n](https://apiforagents.dev/integrations/n8n/google)
- [Google in Make](https://apiforagents.dev/integrations/make/google)
- [Google in Zapier](https://apiforagents.dev/integrations/zapier/google)
- [Google in Python](https://apiforagents.dev/integrations/python/google)
- [Google in LangChain](https://apiforagents.dev/integrations/langchain/google)
- [Google in Claude Code](https://apiforagents.dev/integrations/claude-code/google)

## Questions

### What does the Google News API return?

One row per article: title, the publisher, the published time, the article URL and an image URL.

### What do I pass in?

A query of up to 300 characters, and optionally postedWithin (1h, 1d, 7d, 1y or any), a country for the news market, a language and a limit of up to a hundred articles.

### How much does it cost?

$0.0018 per article at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=google&op=news (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Google Images API. Pay per record.

> Google Images results as JSON: image URL, source page, width, height and thumbnail, for any query. From $0.0009 per image.

Canonical: https://apiforagents.dev/platforms/google/images-api · Updated 2026-10-21

Search Google Images and get each result as JSON: the image URL, the page it came from, its width and height, orientation and a thumbnail.

- Price: $0.0009 / image
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/google

## What people build with the Google Images API

- **Find where an image lives.** Get the source page for each image, so an agent can read the page or credit the site.
- **Visual research.** Collect the top images for a product, place or topic, with their sizes, in one call.
- **Pick by size and shape.** Width, height, megapixels and orientation come back with every result, ready to filter.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/google \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"images","query":"Eiffel Tower at night","limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/google \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"images","query":"Eiffel Tower at night","limit":20}'
```

## Inputs

Everything you can send in one images call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | ≤300 chars |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| imageUrl | string |
| title | string |
| sourceDomain | string |
| sourcePageUrl | string |
| thumbnailUrl | string |
| imageType | string |
| imageWidth | integer |
| imageHeight | integer |
| megapixels | number |
| orientation | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| title | sourceDomain | imageType | imageWidth | imageHeight | megapixels |
|---|---|---|---|---|---|
| Minimal home office setup | northfold.example | photo | 1600 | 1067 | 1.7 |
| Home office with plants | interiors.example | photo | 1080 | 1350 | 1.5 |
| Standing desk in a small room | desks.example | photo | 2048 | 2048 | 4.2 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One image | 1 | $0.0009 |
| 10 images | 10 | $0.009 |
| A full page | 100 | $0.09 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Google Images API in the playground](https://apiforagents.dev/dashboard/run?platform=google&op=images): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Google account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Google in n8n](https://apiforagents.dev/integrations/n8n/google)
- [Google in Make](https://apiforagents.dev/integrations/make/google)
- [Google in Zapier](https://apiforagents.dev/integrations/zapier/google)
- [Google in Python](https://apiforagents.dev/integrations/python/google)
- [Google in LangChain](https://apiforagents.dev/integrations/langchain/google)
- [Google in Claude Code](https://apiforagents.dev/integrations/claude-code/google)

## Questions

### What does the Google Images API return?

One row per image: title, source domain, image type, width, height, megapixels, orientation, image URL, source page URL and thumbnail URL.

### What do I pass in?

A query of up to 300 characters and a limit of up to a hundred images.

### How much does it cost?

$0.0009 per image at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=google&op=images (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Google Shopping API. Pay per record.

> Google Shopping offers as JSON: title, merchant, price, rating and review count, by query and country. From $0.0027 per offer.

Canonical: https://apiforagents.dev/platforms/google/shopping-api · Updated 2026-10-21

Search Google Shopping for a product and get every offer as JSON: title, merchant, price, rating, review count and position. Set the country and language to see one market.

- Price: $0.0027 / offer
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/google

## What people build with the Google Shopping API

- **Price comparison.** See what each merchant charges for the same product and who sits at the top of the list.
- **Reseller monitoring.** Find which shops list your products and at what price, country by country.
- **Market checks.** Search a category and read prices and ratings across merchants before you set your own.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/google \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"shopping","query":"Sony WH-1000XM5","country":"US","language":"en","limit":20,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/google \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"shopping","query":"Sony WH-1000XM5","country":"US","language":"en","limit":20}'
```

## Inputs

Everything you can send in one shopping call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| query * | string | ≤300 chars |
| country | string | ISO alpha-2 |
| language | string | BCP-47 |
| postedWithin | enum |  |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| productId | string |
| productUrl | string |
| title | string |
| merchant | string |
| price | string |
| priceValue | number |
| rating | number |
| reviewCount | integer |
| position | integer |
| image | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| title | merchant | price | priceValue | rating | reviewCount |
|---|---|---|---|---|---|
| Sonora Buds Pro, Noise Cancelling | Sonora Store | $79.00 | 79 | 4.4 | 2310 |
| Sonora Buds Pro, Noise Cancelling | GadgetHub | $84.99 | 84.99 | 4.4 | 2310 |
| Sonora Buds Lite | Sonora Store | $49.00 | 49 | 4.1 | 860 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One offer | 1 | $0.0027 |
| 10 offers | 10 | $0.027 |
| A full page | 100 | $0.27 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Google Shopping API in the playground](https://apiforagents.dev/dashboard/run?platform=google&op=shopping): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Google account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Google in n8n](https://apiforagents.dev/integrations/n8n/google)
- [Google in Make](https://apiforagents.dev/integrations/make/google)
- [Google in Zapier](https://apiforagents.dev/integrations/zapier/google)
- [Google in Python](https://apiforagents.dev/integrations/python/google)
- [Google in LangChain](https://apiforagents.dev/integrations/langchain/google)
- [Google in Claude Code](https://apiforagents.dev/integrations/claude-code/google)

## Questions

### What does the Google Shopping API return?

One row per offer: title, merchant, price as shown and as a number, rating, review count, position, product id and product URL.

### What do I pass in?

A query of up to 300 characters, and optionally a country, a language, postedWithin (1h, 1d, 7d, 30d or any) and a limit of up to a hundred offers.

### How much does it cost?

$0.0027 per offer at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=google&op=shopping (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Google Play Reviews API. Pay per record.

> Google Play Store app reviews as JSON: text, rating, date, app version and developer reply. From $0.00009 per review, pay as you go.

Canonical: https://apiforagents.dev/platforms/google/play-store-reviews-api · Updated 2026-10-21

Read the Play Store reviews of up to five Android apps by package id or store URL: the text, rating, date, app version, helpful votes and the developer's reply. Sort by newest, highest rating or most helpful.

- Price: $0.00009 / review
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/google

## What people build with the Google Play Reviews API

- **Catch a bad release.** Read the newest reviews after an update and see if a version number keeps showing up next to one-star ratings.
- **Competitor research.** Find what users of a rival app ask for and complain about, in their own words.
- **Support follow-up.** See which reviews got a developer reply and which are still waiting.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/google \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"playReviews","subjects":["com.spotify.music"],"country":"US","language":"en","sort":"newest","limit":50,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/google \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"playReviews","subjects":["com.spotify.music"],"country":"US","language":"en","sort":"newest","limit":50}'
```

## Inputs

Everything you can send in one playReviews call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Package ids or Play Store URLs. 1-5 items |
| country | string | ISO alpha-2 |
| language | string | BCP-47 |
| sort | enum |  |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| reviewId | string |
| reviewUrl | string |
| reviewer | string |
| reviewerPhoto | string |
| rating | number |
| reviewText | string |
| posted | string |
| appVersion | string |
| helpfulVotes | integer |
| developerReply | string |
| replyDate | string |
| subratings | any |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| reviewer | rating | reviewText | appVersion | helpfulVotes | posted |
|---|---|---|---|---|---|
| Ravi K. | 5 | Fast and simple. Exactly what I needed. | 4.12.0 | 38 | 2026-10-14 |
| Lena M. | 2 | Keeps logging me out after the update. | 4.12.0 | 104 | 2026-10-13 |
| Sam T. | 4 | Great app, wish it had dark mode. | 4.11.2 | 12 | 2026-10-10 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One review | 1 | $0.00009 |
| 5 reviews | 5 | $0.00045 |
| A full page | 100 | $0.009 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Google Play Reviews API in the playground](https://apiforagents.dev/dashboard/run?platform=google&op=playReviews): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Google account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Google in n8n](https://apiforagents.dev/integrations/n8n/google)
- [Google in Make](https://apiforagents.dev/integrations/make/google)
- [Google in Zapier](https://apiforagents.dev/integrations/zapier/google)
- [Google in Python](https://apiforagents.dev/integrations/python/google)
- [Google in LangChain](https://apiforagents.dev/integrations/langchain/google)
- [Google in Claude Code](https://apiforagents.dev/integrations/claude-code/google)

## Questions

### What does the Google Play Reviews API return?

One row per review: reviewer, rating, text, app version, helpful votes, posted date, the developer's reply and its date, review id and URL.

### What do I pass in?

Up to five package ids (like com.spotify.music) or Play Store URLs, and optionally a country, a language, a sort (newest, rating_high or helpful) and a limit of up to a hundred reviews.

### How much does it cost?

$0.00009 per review at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=google&op=playReviews (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Work Email and Phone API. Pay per record.

> A person's work email and mobile number as JSON, by LinkedIn handle. Ask for email, phone or both. Pay only for values found.

Canonical: https://apiforagents.dev/platforms/contacts/work-email-and-phone-api · Updated 2026-10-21

Send a LinkedIn /in/ handle or profile URL and get back the person's work email, mobile number, or both. Up to ten people per call, billed per person and per part, with an optional check on every email before it counts.

- Price: Quoted per call
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/contacts

## What people build with the Work Email and Phone API

- **Sales outreach.** Reach the people who list their role publicly on LinkedIn: find the profile, then get the work email to write to.
- **Recruiting.** Contact a shortlist of candidates directly, by email or phone, from the profiles you already found.
- **Fix a wrong value.** If a number or email turns out to be wrong, ask again with tryAnotherSource and that part is bought from a different source.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/contacts \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reveal","subjects":["satyanadella"],"reveal":["email"],"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/contacts \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reveal","subjects":["satyanadella"],"reveal":["email"]}'
```

## Inputs

Everything you can send in one reveal call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | /in/<slug> handles or profile URLs. 1-10 items |
| reveal | enum list | Which parts to reveal. Both by default. A contact is an email AND a number; a phone is five emails' worth, so ask ["email"] when unneeded. |
| verify | boolean | Verify each email found before it counts: an address a verifier calls invalid is kept as a fact but does not satisfy the ask, and the next source is tried. A verdict costs a fraction of a cent per address. |
| tryAnotherSource | boolean | "What I hold is wrong. Get me another." EVERY part in reveal that your org holds is marked wrong and bought again from a source other than the one that gave it, at that part's price. So list only the part that is wrong. One call is one step: the next source's answer is returned even when it is the same value (flagged); ask again to go one source further. Marking is free and final. A part you do not hold is simply revealed. |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| publicId | string |
| profileUrl | string |
| name | string |
| title | string |
| company | string |
| emails | list of object |
| phones | list of object |
| firstName | string |
| lastName | string |
| headline | string |
| location | object |
| currentCompany | object |
| experience | list of object |
| education | list of object |
| skills | list of string |
| languages | list of object |
| linkedinUrl | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| publicId | profileUrl | emails | phones | details |
|---|---|---|---|---|
| ananya-rao | https://www.linkedin.com/in/ananya-rao | [{"value":"ananya.rao@paylane.example","type":"work","status | [{"value":"+91 98450 00000","type":"mobile"}] | {} |
| marcus-lee | https://www.linkedin.com/in/marcus-lee | [{"value":"marcus@northfold.example","type":"work","status": | [{"value":"+44 7700 900123","type":"mobile"}] | {} |
| sofia-ortiz | https://www.linkedin.com/in/sofia-ortiz | [{"value":"sofia.ortiz@kitebank.example","type":"work","stat | [] | {} |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| Any request |  | quoted free before the call |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Work Email and Phone API in the playground](https://apiforagents.dev/dashboard/run?platform=contacts&op=reveal): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Contacts account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Contacts in n8n](https://apiforagents.dev/integrations/n8n/contacts)
- [Contacts in Make](https://apiforagents.dev/integrations/make/contacts)
- [Contacts in Zapier](https://apiforagents.dev/integrations/zapier/contacts)
- [Contacts in Python](https://apiforagents.dev/integrations/python/contacts)
- [Contacts in LangChain](https://apiforagents.dev/integrations/langchain/contacts)
- [Contacts in Claude Code](https://apiforagents.dev/integrations/claude-code/contacts)

## Questions

### What does the Work Email and Phone API return?

One row per person: the LinkedIn handle and profile URL, the email with its type and, when you ask for checks, its status (valid, invalid, risky or unverified), and the phone with its type. Every answer also carries a trail: the sources tried, in order, with what each found, labelled by number rather than by name.

### What do I pass in?

Up to ten LinkedIn /in/ handles or profile URLs. reveal picks the parts, ["email", "phone"] by default; ask for ["email"] alone when you do not need the number, since a phone is priced at about five emails. Add verify: true to check each email, and tryAnotherSource: true to replace a part you hold that is wrong.

### Where should the LinkedIn handle come from?

From evidence: a search result, a pasted URL or a LinkedIn people search. A handle guessed from a name can belong to someone else and is still charged. LinkedIn member ids (the ones starting ACoAA or ACwAA) are not handles and are refused without charge.

### How much does it cost?

Each part (email or phone) is priced by what it costs to find, and the free quote ("estimateOnly": true) shows the most a call can cost before anything is spent. You pay only when a value is found: a part that comes back empty is not charged, and a part your account already holds is free.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=contacts&op=reveal (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Explore Data API. Pay per record.

> Raw rows as JSON from other public sites the named platforms do not cover. Pick a source, run it, pay per row at the source's own rate.

Canonical: https://apiforagents.dev/platforms/explore/data-api · Updated 2026-10-21

Get data from other public sites, beyond the platforms with their own endpoints. Find a source with the free sources call, read its inputs with the free schema call, then run it for up to a hundred rows, billed per row it returns.

- Price: Quoted per call
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/explore

## What people build with the Explore Data API

- **The long tail.** When a question needs data from a site the named platforms do not cover, an agent can search the sources and fetch from the one that fits.
- **Know the cost first.** The schema call gives a source's live inputs, a sample input and a money estimate before anything is spent.
- **One key for everything.** Explore runs on the same key, wallet and response envelope as every other endpoint.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/explore \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"run","source":"<source name from sources>","input":{},"limit":10,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/explore \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"run","source":"<source name from sources>","input":{},"limit":10}'
```

## Inputs

Everything you can send in one run call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| source * | string | The source's name exactly as sources listed it. ≤120 chars |
| input | string | The source's own input, shaped by schema. |
| limit | integer | Rows wanted. Every row costs real money, so name the count the question needs; the hard ceiling is 100. 1-100 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| Any request |  | quoted free before the call |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Explore Data API in the playground](https://apiforagents.dev/dashboard/run?platform=explore&op=run): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Explore account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Questions

### What does an explore run return?

The source's own rows, raw and unmapped: not fitted to a schema and not kept as measured data. Treat them as evidence to read and cite. For a named platform, its own endpoint answers with checked fields.

### What do I pass in?

source, the source's name exactly as the sources call listed it; input, the source's own fields shaped as the schema call described them; and limit, the rows you want, up to a hundred.

### How do I find a source?

Call sources with a plain-words query that names the site or the data you need, for example "quick commerce categories". It returns the best matches, what each returns and its price per row. Both sources and schema are free.

### How much does it cost?

Each source has its own rate per row, printed by the sources call. A run is billed per row the source actually returns, and a run that finds nothing is free. Quote first with "estimateOnly": true, which is free and is the most the call can cost.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=explore&op=run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# The best review data APIs ranked by what each returns.

> Eight review data sources ranked for 2026: Google Maps, Amazon, Tripadvisor, Booking.com, Yelp, Airbnb, Facebook and Google Play, with fields and prices.

Canonical: https://apiforagents.dev/best/best-review-data-apis · Updated 2026-10-21

The best review data sources are Google Maps reviews for local businesses, Amazon reviews for products and Tripadvisor or Booking.com reviews for travel, because each returns the review text, the rating, the date and the business's reply in one row. Yelp, Airbnb, Facebook and Google Play fill the gaps. Every one is priced per record, so you pay for the reviews that come back.

- Sources ranked: 8
- Google Maps reviews: $0.000225 per record
- Amazon reviews: $0.00045 per record
- Free trial: $0.10

## The ranking

| # | Source | What you get | Best for | Price |
|---|---|---|---|---|
| 1 | Google Maps reviews | Text, stars, date, reviewer with local-guide flag, owner response | Local businesses of every kind | $0.000225 per record |
| 2 | Amazon reviews | Text, rating, date, verified-purchase and Vine flags, helpful votes, variant, media | Product feedback on 12 marketplaces | $0.00045 per record |
| 3 | Tripadvisor reviews | Text, rating, dates, trip type, sub-ratings, owner response, reviewer | Hotels, restaurants and attractions | $0.0018 per record |
| 4 | Booking.com reviews | Liked and disliked text, score, date, traveler type, room, property response | Hotel guest sentiment | $0.0018 per record |
| 5 | Yelp reviews | Text, rating, date, reactions, reviewer profile, owner reply | Restaurants and local services | $0.000225 per record |
| 6 | Airbnb reviews | Text, rating, date, host response | Short-term rental feedback | $0.0018 per record |
| 7 | Facebook page reviews | Reviews and recommendations on a page | Brands and local pages on Facebook | $0.0022 per record |
| 8 | Google Play reviews | Text, rating, date, app version, developer reply, sub-ratings | Android app feedback | $0.00009 per record |

List prices are per record and some calls carry a minimum. Quote any call first with "estimateOnly": true: the quote is free and is the most the call can cost.

## Each source, in order

- **[1. Google Maps reviews](https://apiforagents.dev/platforms/google_maps/reviews-api).** Reviews for up to ten places per call, by Maps URL or place id, with the text, stars, date, reviewer and the owner's response. Four sort orders: newest, most relevant, highest and lowest. You need the place first, so pair it with the Google Maps search, which returns place ids.
- **[2. Amazon reviews](https://apiforagents.dev/platforms/amazon/reviews-api).** Customer reviews for up to ten products by ASIN or product URL, on any of 12 Amazon marketplaces. The verified-purchase and Vine flags, helpful votes and the variant reviewed make it the strongest source for product feedback. Amazon caps reviews at 100 per product, so treat it as a sample, not the full history.
- **[3. Tripadvisor reviews](https://apiforagents.dev/platforms/tripadvisor/reviews-api).** One operation reads reviews for hotels, restaurants and attractions alike, by Tripadvisor URL. Filter by a minimum date, by star values and by review language. You need the place URL first; the three Tripadvisor search operations return it.
- **[4. Booking.com reviews](https://apiforagents.dev/platforms/booking/reviews-api).** Guest reviews for up to ten properties, with what the guest liked and disliked as separate text, the score, traveler type and room. Sort by newest, oldest, relevance or score, stop at a date, or keep only Booking's score bands (superb, good, average, poor). Properties are named by their booking.com/hotel URL.
- **[5. Yelp reviews](https://apiforagents.dev/platforms/yelp/reviews-api).** Reviews for up to ten businesses by yelp.com/biz URL or slug, with reactions, the reviewer's profile and the owner's reply. The business profile operation adds review insights by topic with sentiment and review highlights, which saves reading every review. It only covers businesses that have a Yelp page.
- **[6. Airbnb reviews](https://apiforagents.dev/platforms/airbnb/reviews-api).** Reviews for up to ten listings by URL or room id, with the host's response. Set a locale and reviews written in other languages come back translated. The review rows are lighter than Booking.com's; per-category ratings sit on the listing card instead.
- **[7. Facebook page reviews](https://apiforagents.dev/platforms/facebook/reviews-api).** Reviews and recommendations on up to five pages per call, by page URL or handle. The page card adds the review count and recommend percentage. It takes fewer subjects per call than the other sources here.
- **[8. Google Play reviews](https://apiforagents.dev/platforms/google/play-store-reviews-api).** Play Store reviews for up to five apps by package id or store URL. Filter by country and language, sort by newest, highest rating or most helpful, and see which app version each review was written on. It is the only app store source on this list.

## How to choose

- Go where your customers write: Google Maps and Yelp for local businesses, Amazon for products, Tripadvisor, Booking.com and Airbnb for stays, Google Play for Android apps.
- Find the subject first. Every reviews operation takes a URL, id or ASIN, and the search operation on the same platform returns them.
- Need the trend, not the text? Google Maps, Yelp, Tripadvisor, Amazon, Booking.com, Airbnb and Facebook each have a free history operation that reads stored rating or review-count series for subjects already held.
- Quote before a large pull. The quote is free and is the most the call can cost.

> **Verdict** Start with Google Maps reviews for local businesses and Amazon reviews for products. Add Tripadvisor or Booking.com when the subject is a stay.

## The operations on this list

- [Google Maps Reviews API](https://apiforagents.dev/platforms/google_maps/reviews-api): Local businesses of every kind
- [Amazon Reviews API](https://apiforagents.dev/platforms/amazon/reviews-api): Product feedback on 12 marketplaces
- [Tripadvisor Reviews API](https://apiforagents.dev/platforms/tripadvisor/reviews-api): Hotels, restaurants and attractions
- [Booking.com Reviews API](https://apiforagents.dev/platforms/booking/reviews-api): Hotel guest sentiment
- [Yelp Reviews API](https://apiforagents.dev/platforms/yelp/reviews-api): Restaurants and local services
- [Airbnb Reviews API](https://apiforagents.dev/platforms/airbnb/reviews-api): Short-term rental feedback
- [Facebook Reviews API](https://apiforagents.dev/platforms/facebook/reviews-api): Brands and local pages on Facebook
- [Google Play Reviews API](https://apiforagents.dev/platforms/google/play-store-reviews-api): Android app feedback

## Questions

### Is there a free review data API?

New agents start with $0.10 free, enough to try every source here. After that each reviews call is paid per record. The history operations are free, but they only read series already stored.

### Can I get every review of a place?

Each call returns up to the limit you set, and Amazon caps reviews at 100 per product. Sort by newest to get the latest first.

### Which review sources include the business's reply?

Google Maps and Tripadvisor (owner response), Yelp (owner reply), Booking.com (property response), Airbnb (host response) and Google Play (developer reply).

### How much does a review cost?

Each reviews operation has its own list price: Google Maps $0.000225 per record, Amazon $0.00045 per record, Tripadvisor $0.0018 per record. Some calls carry a minimum, so quote first with "estimateOnly": true.

### Do I need a key from Google, Yelp or Amazon?

No. One account here reads all eight sources, and it never asks for a login on any of them.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# The best data sources for B2B lead generation.

> LinkedIn people and company search, work email and phone, Google Maps and Yelp listings, and job posts as hiring signals, ranked for B2B leads in 2026.

Canonical: https://apiforagents.dev/best/best-data-sources-for-b2b-lead-generation · Updated 2026-10-21

The best sources for B2B leads are LinkedIn people search to find the right person, the contacts lookup to reach them by work email or phone, and Google Maps search for local businesses, because together they cover who to call, how to reach them and where they are. LinkedIn company search and job listings on LinkedIn and Indeed tell you which accounts to work first.

- LinkedIn people search: $0.004 per record
- Work email and phone: quoted per call
- Google Maps search: $0.000225 per record
- Free trial: $0.10

## The ranking

| # | Source | What you get | Best for | Price |
|---|---|---|---|---|
| 1 | LinkedIn people search | Name, headline, location, skills, current and past positions | Finding decision makers by title | $0.004 per record |
| 2 | Work email and phone | Work email and mobile number per person | Reaching the people you found | quoted per call |
| 3 | Google Maps search | Places with category, phone, website, emails, socials, rating, hours | Local and small-business lists | $0.000225 per record |
| 4 | LinkedIn company search | Industry, size band, employee count, website, HQ, founding year | Building an account list | $0.004 per record |
| 5 | LinkedIn jobs | Open roles with company, location, salary text, listing date | Hiring signals | $0.001 per record |
| 6 | Indeed job search | Postings with company industry and size, salary, urgent-hire signal | Hiring signals outside LinkedIn | $0.000045 per record |
| 7 | Yelp search | Businesses with phone, website, rating, price level | Restaurants and service businesses | $0.000225 per record |

List prices are per record and some calls carry a minimum. Quote any call first with "estimateOnly": true: the quote is free and is the most the call can cost.

## Each source, in order

- **[1. LinkedIn people search](https://apiforagents.dev/platforms/linkedin/people-search-api).** Search one company's people, or all of LinkedIn, by current title, seniority, function, location, industry, company size and tenure. Flags for people who recently changed jobs or recently posted narrow the list to people worth a message now. It returns public profile data, not contact details.
- **[2. Work email and phone](https://apiforagents.dev/platforms/contacts/work-email-and-phone-api).** Give up to ten LinkedIn /in/ handles and get each person's work email and mobile number. Ask for email only when that is enough, add verify to check each address before it counts, and ask for another source when a value is wrong. It is the one source here that is not read from public pages; it is priced per call, and a part you already own is free.
- **[3. Google Maps search](https://apiforagents.dev/platforms/google_maps/search-api).** A keyword in a location returns full place cards with the phone, website, emails and socials a business lists, plus rating and hours. The website filter keeps only places without a website, or only those with one. Best for businesses you would find on a street, not by job title.
- **[4. LinkedIn company search](https://apiforagents.dev/platforms/linkedin/company-search-api).** Search companies by keyword with location, headcount band and industry filters. Each row carries industry, size bucket, employee count, followers, website, HQ, founding year and specialities. Pass the company handles into people search to find who works there.
- **[5. LinkedIn jobs](https://apiforagents.dev/platforms/linkedin/jobs-api).** A company hiring for a role may be about to buy for it. Search listings by title with location, company, workplace, experience level and posted-within filters; rows carry the company name, salary text, listing date and apply URL.
- **[6. Indeed job search](https://apiforagents.dev/platforms/indeed/jobs-api).** Every hit is a full posting with the company's industry and size, salary range, skills and hiring signals such as urgent hire and employer response rate. It searches 23 country sites. The only workplace filter is remote.
- **[7. Yelp search](https://apiforagents.dev/platforms/yelp/search-api).** A place and keyword with Yelp's own sort, price levels and feature filters; every hit is a full profile with phone, website and rating. Use it beside Google Maps when your buyers are restaurants or local services.

## How to choose

1. Selling to roles inside companies: LinkedIn company search to build the account list, people search to find the person, then the contacts lookup for the people you keep.
2. Selling to local businesses: Google Maps search first, Yelp as a second source.
3. Timing: job listings on LinkedIn and Indeed show who is growing a team right now.
4. Reveal last. Qualify people before you buy their contact details, and ask for email only when a phone is not needed.

> **Verdict** For most B2B teams: LinkedIn people search to find, the contacts lookup to reach, Google Maps search for local accounts.

## The operations on this list

- [LinkedIn People Search API](https://apiforagents.dev/platforms/linkedin/people-search-api): Finding decision makers by title
- [Work Email and Phone API](https://apiforagents.dev/platforms/contacts/work-email-and-phone-api): Reaching the people you found
- [Google Maps Search API](https://apiforagents.dev/platforms/google_maps/search-api): Local and small-business lists
- [LinkedIn Company Search API](https://apiforagents.dev/platforms/linkedin/company-search-api): Building an account list
- [LinkedIn Jobs API](https://apiforagents.dev/platforms/linkedin/jobs-api): Hiring signals
- [Indeed Jobs API](https://apiforagents.dev/platforms/indeed/jobs-api): Hiring signals outside LinkedIn
- [Yelp Search API](https://apiforagents.dev/platforms/yelp/search-api): Restaurants and service businesses

## Questions

### Where can I get B2B leads with email addresses?

Find the person with LinkedIn people search, then pass their /in/ handle to the contacts lookup for a work email and mobile number. Google Maps place cards also carry the emails a business lists publicly.

### Can I find businesses that have no website?

Yes. Google Maps search takes a website filter: "without" keeps only places that list no website.

### What if an email or number is wrong?

Reveal again with tryAnotherSource for that part only. It is bought again from a different source, at that part's price.

### Do I need a LinkedIn account?

No. The LinkedIn operations read public data and never ask for a login, cookie or session.

### How much does a lead cost?

Each step has its own price: LinkedIn people search $0.004 per record, Google Maps search $0.000225 per record, and the contacts lookup is quoted per call, billed per person and per part. Quote first with "estimateOnly": true.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# The best social media data APIs seven networks, one price list.

> Instagram, TikTok, YouTube, LinkedIn, X, Reddit and Facebook data APIs ranked for 2026: profiles, posts, comments and followers, priced per record.

Canonical: https://apiforagents.dev/best/best-social-media-data-apis · Updated 2026-10-21

The best social media data sources are Instagram and TikTok for creators and consumer brands, YouTube for video reach and LinkedIn for professional audiences, because each returns profiles, posts with engagement and comments from public pages. X and Reddit are best for what people say, and Facebook for pages, ads and events. All seven sit behind one account.

- Networks: 7
- Instagram: from $0.00045 per record
- TikTok: from $0.00045 per record
- Free trial: $0.10

## The ranking

| # | Source | What you get | Best for | Price |
|---|---|---|---|---|
| 1 | Instagram | Profiles, posts and reels, hashtags, comments, followers, similar accounts | Creators and consumer brands | from $0.00045 per record |
| 2 | TikTok | Profiles, posts with views and saves, search by keyword, hashtag or sound, Shop products | Short video and trends | from $0.00045 per record |
| 3 | YouTube | Channels, videos with views, likes and comments, top comments | Video reach | from $0.00045 per record |
| 4 | LinkedIn | Profiles, companies, posts, post search, comments, reactions, ads | Professional audiences | from $0.001 per record |
| 5 | X | Profiles, posts with views and bookmarks, post search, account search | Real-time talk | from $0.000225 per record |
| 6 | Reddit | Posts with score and upvote ratio, subreddit listings, comments, search | Honest opinions and threads | from $0.0045 per record |
| 7 | Facebook | Pages, posts, reels, comments, reviews, ads, events, Marketplace | Pages, ads and local reach | from $0.0022 per record |

List prices are per record and some calls carry a minimum. Quote any call first with "estimateOnly": true: the quote is free and is the most the call can cost.

## Each source, in order

- **[1. Instagram](https://apiforagents.dev/platforms/instagram).** Profile cards for up to ten accounts, with recent posts in the same call, plus hashtag feeds, comments by post URL, follower or following lists and related accounts. A free history operation keeps followers, media count and engagement rate over time for accounts already held. Private accounts are out of reach.
- **[2. TikTok](https://apiforagents.dev/platforms/tiktok).** Posts carry views, likes, comments, shares, saves, sound, hashtags and duration. Search posts by keyword, hashtag or sound URL, find accounts by keyword, and read TikTok Shop products with price, sold count and stock. Follower lists cover up to five accounts per call, each row a full profile.
- **[3. YouTube](https://apiforagents.dev/platforms/youtube).** Channel cards by @handle, channel id or URL, with recent videos in the same call. Each video carries views, likes, comments, duration and its publish date. There is no keyword search for videos, so you start from a channel or a video URL.
- **[4. LinkedIn](https://apiforagents.dev/platforms/linkedin).** Profiles with work history, company pages, people and company search, posts and post search, and who commented or reacted. Company-page posts are not served; a person's posts are.
- **[5. X](https://apiforagents.dev/platforms/x_twitter).** Posts carry likes, replies, reposts, quotes, views, bookmarks and the reply or quote lineage. Search finds accounts or posts by keyword across all authors. The blue badge is reported as isBlueVerified, a paid subscription, never as identity verification.
- **[6. Reddit](https://apiforagents.dev/platforms/reddit).** The post is the unit: score, upvote ratio, comment count and permalink on every row. Read a subreddit by hot, newest, top or rising, a user's submissions, or search all of Reddit by keyword. There is no profile card, because Reddit publishes none to measure.
- **[7. Facebook](https://apiforagents.dev/platforms/facebook).** Page cards with followers, talking-about, reviews and contact details; posts with reactions by type; reels with plays; and every ad a page runs in Meta's Ad Library. Follower lists take at most three pages per call.

## How to choose

- Follow the audience: Instagram and TikTok for consumers, LinkedIn for buyers at work, YouTube for long video, Reddit and X for discussion.
- Ask for profiles and recent posts in one call where the network allows it (Instagram, LinkedIn, X and YouTube do).
- Use the free history operations to watch growth instead of fetching the same profile every day.
- Every row says when it was measured, so an agent can tell fresh numbers from old ones.

## The operations on this list

- [Instagram Profile API](https://apiforagents.dev/platforms/instagram/profile-api): Creators and consumer brands
- [Instagram Posts API](https://apiforagents.dev/platforms/instagram/posts-api): Creators and consumer brands
- [Instagram Hashtag API](https://apiforagents.dev/platforms/instagram/hashtag-api): Creators and consumer brands
- [Instagram Similar Accounts API](https://apiforagents.dev/platforms/instagram/similar-accounts-api): Creators and consumer brands
- [TikTok Posts API](https://apiforagents.dev/platforms/tiktok/posts-api): Short video and trends
- [TikTok Video Search API](https://apiforagents.dev/platforms/tiktok/video-search-api): Short video and trends
- [TikTok Shop API](https://apiforagents.dev/platforms/tiktok/shop-api): Short video and trends
- [YouTube Channel API](https://apiforagents.dev/platforms/youtube/channel-api): Video reach
- [YouTube Videos API](https://apiforagents.dev/platforms/youtube/videos-api): Video reach
- [LinkedIn Profile API](https://apiforagents.dev/platforms/linkedin/profile-api): Professional audiences
- [LinkedIn Company API](https://apiforagents.dev/platforms/linkedin/company-api): Professional audiences
- [LinkedIn Post Search API](https://apiforagents.dev/platforms/linkedin/post-search-api): Professional audiences
- [X Posts API](https://apiforagents.dev/platforms/x_twitter/posts-api): Real-time talk
- [X Post Search API](https://apiforagents.dev/platforms/x_twitter/post-search-api): Real-time talk
- [Reddit Search API](https://apiforagents.dev/platforms/reddit/search-api): Honest opinions and threads
- [Reddit Subreddit API](https://apiforagents.dev/platforms/reddit/subreddit-api): Honest opinions and threads
- [Facebook Page API](https://apiforagents.dev/platforms/facebook/page-api): Pages, ads and local reach
- [Facebook Posts API](https://apiforagents.dev/platforms/facebook/posts-api): Pages, ads and local reach
- [Facebook Ad Library API](https://apiforagents.dev/platforms/facebook/ad-library-api): Pages, ads and local reach

## Questions

### Can one API cover all these networks?

Yes. Instagram, TikTok, YouTube, LinkedIn, X, Reddit and Facebook all answer through one account and one balance here, with the same request shape.

### Do I need accounts on each network?

No. Every operation reads public pages and never asks for a login, cookie or session.

### Can I track follower growth over time?

Yes, for profiles already held. Instagram, TikTok, YouTube, X, Facebook and LinkedIn have free history operations that read stored follower series. Reddit's history tracks post score and comment count.

### Can I read private profiles or messages?

No. Only public data: nothing behind a login, no private accounts, no inboxes.

### How is it priced?

Per record, with a list price per platform: Instagram from $0.00045 per record, TikTok from $0.00045 per record, YouTube from $0.00045 per record. Quote any call free with "estimateOnly": true.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# The best influencer data APIs for finding and vetting creators.

> Instagram, TikTok and YouTube ranked as influencer data APIs for 2026: followers, engagement, recent posts, similar accounts and growth history.

Canonical: https://apiforagents.dev/best/best-influencer-data-apis · Updated 2026-10-21

The best influencer data sources are Instagram, TikTok and YouTube, because that is where most creators brands work with publish, and each returns follower counts, recent posts with engagement and a free growth history. Instagram adds similar-account discovery and public business contact fields, TikTok adds search by hashtag or sound, and YouTube adds views per video.

- Platforms: 3
- Instagram: from $0.00045 per record
- YouTube: from $0.00045 per record
- Free trial: $0.10

## The ranking

| # | Source | What you get | Best for | Price |
|---|---|---|---|---|
| 1 | Instagram profiles and similar accounts | Profiles, recent posts, related accounts, business email and phone fields | Discovery and vetting | $0.0018 per record |
| 2 | TikTok profiles and post search | Followers, total likes, video count, posts with views, shares and saves | Trend-led creators | $0.0022 per record |
| 3 | YouTube channels and videos | Channel cards, videos with views, likes, comments, duration, publish date | Long-form and review creators | $0.00045 per record |
| 4 | Instagram comments | Top comments on posts by URL | Checking the audience talks back | $0.00045 per record |

List prices are per record and some calls carry a minimum. Quote any call first with "estimateOnly": true: the quote is free and is the most the call can cost.

## Each source, in order

- **[1. Instagram profiles and similar accounts](https://apiforagents.dev/platforms/instagram/profile-api).** Find creators with account search, or with the similar operation, which lists accounts related to one you already like. Profile cards can include the business email and phone fields an account lists publicly, and the free history operation tracks followers and engagement rate for accounts already held.
- **[2. TikTok profiles and post search](https://apiforagents.dev/platforms/tiktok/profile-api).** Profiles carry followers, total likes, video count, verification and business or seller flags. Posts carry views, shares and saves, so you can work out engagement per video. Search posts by hashtag or sound URL to see who is making content around a trend.
- **[3. YouTube channels and videos](https://apiforagents.dev/platforms/youtube/channel-api).** Channel cards plus recent videos with views, likes, comments, duration and publish date, in one call. The free history operation reads stored subscriber, video and view counts. There is no video search here, so start from channels you already know.
- **[4. Instagram comments](https://apiforagents.dev/platforms/instagram/comments-api).** Top comments on up to ten posts per call, by post or reel URL. Reading them shows whether an audience replies with real words or only emoji and links. Commenters come back as free text, not full profiles.

## How to choose

1. Discover: Instagram account search and similar accounts, TikTok account search and post search by hashtag or sound.
2. Vet: pull the profile with recent posts in one call and compare likes and comments with follower count.
3. Check the audience: read comments on a few recent posts.
4. Watch: let the free history operations track growth for the creators you shortlist.

## The operations on this list

- [Instagram Profile API](https://apiforagents.dev/platforms/instagram/profile-api): Discovery and vetting
- [TikTok Profile API](https://apiforagents.dev/platforms/tiktok/profile-api): Trend-led creators
- [YouTube Channel API](https://apiforagents.dev/platforms/youtube/channel-api): Long-form and review creators
- [Instagram Comments API](https://apiforagents.dev/platforms/instagram/comments-api): Checking the audience talks back

## Questions

### How do I find influencers in a niche?

Search Instagram or TikTok accounts by keyword, then ask Instagram for accounts similar to the best ones. On TikTok, search posts by hashtag or sound to find who is active on a topic.

### Can I get an influencer's email?

Instagram profile cards can carry the business email and phone an account lists publicly; ask for the contact fields. The contacts lookup here works by LinkedIn handle only.

### Is engagement rate included?

Posts carry likes and comments (and views, shares and saves on TikTok), so you can compute it. Instagram's free history operation also stores an engagement rate series for accounts already held.

### How fresh are the numbers?

Every row carries the time it was measured. A fresh fetch is charged per record; your own answer is free while it is fresh.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# The best price tracking APIs for ecommerce in 2026.

> Amazon, Shopify, Google Shopping, Farfetch, StockX and GOAT ranked for price tracking in 2026: prices, stock, variants and free stored price history.

Canonical: https://apiforagents.dev/best/best-ecommerce-price-tracking-apis · Updated 2026-10-21

The best price tracking sources are Amazon for marketplace products, Shopify for brands' own stores and Google Shopping for prices across merchants, because each returns the current price and stock, and Amazon and Shopify keep a free stored price history. Farfetch, StockX and GOAT cover luxury fashion and resale.

- Amazon: from $0.00045 per record
- Shopify: from $0.0009 per record
- Price history: Free on 5 of 6
- Free trial: $0.10

## The ranking

| # | Source | What you get | Best for | Price |
|---|---|---|---|---|
| 1 | Amazon products | Price, list price, deal and Prime flags, availability, best-sellers rank, seller | Marketplace products on 12 marketplaces | $0.0014 per record |
| 2 | Shopify stores | Every product and variant with SKU, price and stock, sale flag | Brands' own stores | $0.0009 per record |
| 3 | Google Shopping | Offers with title, merchant, price, rating, review count | Comparing merchants | $0.0027 per record |
| 4 | Farfetch | Price, full price, discount, per-size stock, seller boutique | Luxury fashion | $0.0009 per record |
| 5 | StockX | Last sale, lowest ask, highest bid, 90-day and 12-month averages | Resale market prices | $0.0009 per record |
| 6 | GOAT | Asking price per size with condition, max offer, retail price | Sneaker asks by size | $0.0009 per record |

List prices are per record and some calls carry a minimum. Quote any call first with "estimateOnly": true: the quote is free and is the most the call can cost.

## Each source, in order

- **[1. Amazon products](https://apiforagents.dev/platforms/amazon/product-api).** Full product cards for up to ten ASINs or URLs, or a keyword search with search rank. Every fetch adds a price point, and the free history operation reads price, list price, rating, best-sellers rank and the bought-past-month figure over time.
- **[2. Shopify stores](https://apiforagents.dev/platforms/shopify/products-api).** Point it at any Shopify-powered store URL, up to five per call, and get the catalogue: price range, sale flag, stock and every variant with its SKU, price and stock. History tracks price range, stock and variant count. It only works on stores that run on Shopify.
- **[3. Google Shopping](https://apiforagents.dev/platforms/google/shopping-api).** Offers for a query with the merchant, price, rating and review count, filtered by country, language and how recent. It shows the spread of prices across sellers in one call. There is no stored history for it, so keep the rows yourself if you need a series.
- **[4. Farfetch](https://apiforagents.dev/platforms/farfetch/product-api).** Product cards, keyword search, and any designer, category or sale page in page order. Prices follow the storefront locale, so read the currency field. History covers price, full price, discount and stock.
- **[5. StockX](https://apiforagents.dev/platforms/stockx/product-api).** Live market data for up to ten products, size by size, with sales counts and volatility. A country code prices it for that region. The free history operation stores every market figure it reads.
- **[6. GOAT](https://apiforagents.dev/platforms/goat/product-api).** Every size with its asking price, condition and availability, plus the max offer and retail price. Search, brand or collection pages, and a country code for regional prices. History stores lowest ask, max offer and retail price.

## How to choose

- Tracking your own listings or rivals on Amazon: Amazon products by ASIN, then the free history.
- Tracking direct-to-consumer brands: Shopify, one call per up to five stores.
- Finding who sells a product cheaper: Google Shopping.
- Fashion and resale: Farfetch at retail, StockX and GOAT on the resale market.
- History only reads what earlier fetches captured, so fetch on a schedule and read the series for free.

> **Verdict** Amazon for marketplaces, Shopify for brand stores, Google Shopping to compare merchants.

## The operations on this list

- [Amazon Product API](https://apiforagents.dev/platforms/amazon/product-api): Marketplace products on 12 marketplaces
- [Shopify Products API](https://apiforagents.dev/platforms/shopify/products-api): Brands' own stores
- [Google Shopping API](https://apiforagents.dev/platforms/google/shopping-api): Comparing merchants
- [Farfetch Product API](https://apiforagents.dev/platforms/farfetch/product-api): Luxury fashion
- [StockX Product API](https://apiforagents.dev/platforms/stockx/product-api): Resale market prices
- [GOAT Product API](https://apiforagents.dev/platforms/goat/product-api): Sneaker asks by size

## Questions

### Can I track Amazon prices over time?

Yes. Every fetch adds a price point for that product and marketplace, and the history operation reads the stored series free: price, list price, rating, ratings count, best-sellers rank and bought-past-month.

### Which Amazon marketplaces are covered?

Twelve: .com, .in, .co.uk, .de, .fr, .it, .es, .ca, .com.au, .co.jp, .com.mx and .com.br. A product URL carries its own marketplace.

### Can I monitor any Shopify store?

Any Shopify-powered storefront, by its URL, up to five stores per call. Stores on other platforms are not read by this operation.

### Is price history free?

Yes on Amazon, Shopify, Farfetch, StockX and GOAT: the history operations are free and read points earlier fetches stored. Google Shopping has no stored history.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# The best quick commerce data APIs for India: Blinkit, Instamart, Zepto.

> Blinkit, Swiggy Instamart and Zepto data APIs ranked: price, MRP, discount and stock at one dark store, by pincode or store id, with free price history.

Canonical: https://apiforagents.dev/best/best-quick-commerce-data-apis-india · Updated 2026-10-21

The three quick commerce sources to track in India are Blinkit, Swiggy Instamart and Zepto, and here all three work the same way: a product's price, MRP, discount and stock at one dark store, right now, with the store named by id, pincode or coordinates. Rank them by where your shoppers are; for a brand, run all three for the same pincode.

- Apps: 3
- Store by: Id, pincode, lat/lon
- Price: from $0.0009 per record
- Price history: Free

## The ranking

| # | Source | What you get | Best for | Price |
|---|---|---|---|---|
| 1 | Blinkit | Price, MRP, discount, stock count, rating, seller, manufacturer | Grocery and essentials by pincode | $0.0009 per record |
| 2 | Swiggy Instamart | Price, MRP, discount, stock count, rating, seller, manufacturer | The same shelf, a second app | $0.0009 per record |
| 3 | Zepto | Price, MRP, discount, stock count, rating, seller, manufacturer | The third app in the same city | $0.0009 per record |

List prices are per record and some calls carry a minimum. Quote any call first with "estimateOnly": true: the quote is free and is the most the call can cost.

## Each source, in order

- **[1. Blinkit](https://apiforagents.dev/platforms/blinkit/price-and-stock-api).** Product detail for up to ten blinkit.com product URLs at one store, search results as a shopper there sees them with rank, and one shelf of the app's own menu. Category names must match the app exactly, for example "Atta, Rice & Dal" with "Atta".
- **[2. Swiggy Instamart](https://apiforagents.dev/platforms/instamart/price-and-stock-api).** The same three operations for swiggy.com/instamart product URLs: products, search and category, each at one dark store. Instamart's menu names differ from Blinkit's ("Atta, Rice and Dal"), so copy them from the app.
- **[3. Zepto](https://apiforagents.dev/platforms/zepto/price-and-stock-api).** Products by zepto.com URL, search and category, at one store. Zepto's own menu reads differently again ("Atta Rice Oil Dals"). A category name that is not on the menu is refused and nothing is charged.

## How to choose

- Name the store well. A store id from an earlier answer is the most exact; a pincode with its city picks the nearest serving store; latitude with longitude picks the store serving that point.
- Search to see what a shopper sees and where your product ranks; category to read one shelf; products for exact items by URL.
- Prices and stock are per store. To compare a city, run several pincodes.
- Use the free history operation for price, MRP, discount, stock count and rating over time at a store.

## The operations on this list

- [Blinkit Price and Stock API](https://apiforagents.dev/platforms/blinkit/price-and-stock-api): Grocery and essentials by pincode
- [Instamart Price and Stock API](https://apiforagents.dev/platforms/instamart/price-and-stock-api): The same shelf, a second app
- [Zepto Price and Stock API](https://apiforagents.dev/platforms/zepto/price-and-stock-api): The third app in the same city

## Questions

### Can I get one price for a whole city?

No. Prices, MRP, discounts and stock are per dark store. Pick the pincodes that matter and run each one.

### Do I need the exact category name?

Yes. Category and sub-category must be the app's own menu names and belong together. A name that is not on the menu is refused and nothing is charged.

### Is there price history for Blinkit, Instamart and Zepto?

Yes. Every fetch adds a point for that product at that store, and the history operation reads the series free.

### How much does it cost?

Blinkit from $0.0009 per record, Swiggy Instamart from $0.0009 per record, Zepto from $0.0009 per record. Quote first with "estimateOnly": true.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# The best job data APIs LinkedIn, Indeed, Naukri, Upwork.

> LinkedIn jobs, Indeed, Naukri and Upwork ranked as job data APIs for 2026: listings, salary, skills, applicant counts and each board's own filters.

Canonical: https://apiforagents.dev/best/best-job-data-apis · Updated 2026-10-21

The best job data sources are LinkedIn jobs for professional roles, Indeed for reach across 23 country sites, Naukri for India and Upwork for freelance work, because each returns full postings with the board's own filters. Pick by where the jobs you care about are posted.

- Boards: 4
- Indeed search: $0.000045 per record
- LinkedIn jobs: $0.001 per record
- Free trial: $0.10

## The ranking

| # | Source | What you get | Best for | Price |
|---|---|---|---|---|
| 1 | LinkedIn jobs | Title, company, location, salary text, listing date, apply URL, description | Professional and tech roles | $0.001 per record |
| 2 | Indeed | Postings with salary range and period, skills, benefits, employer signals | Volume across 23 countries | $0.000045 per record |
| 3 | Naukri | Skills, experience band, salary or benchmark CTC, applicants and views | Jobs in India | $0.0018 per record |
| 4 | Upwork | Budget, skills, client profile and spend, proposal counts | Freelance and contract work | $0.0027 per record |

List prices are per record and some calls carry a minimum. Quote any call first with "estimateOnly": true: the quote is free and is the most the call can cost.

## Each source, in order

- **[1. LinkedIn jobs](https://apiforagents.dev/platforms/linkedin/jobs-api).** Search by title with location, company, industry, workplace, employment type, experience level, posted-within and minimum-salary filters, plus Easy Apply and under-ten-applicants flags. Every row carries the description and the apply URL.
- **[2. Indeed](https://apiforagents.dev/platforms/indeed/jobs-api).** Search as a seeker would, a keyword and a place on one country's site, filtered by employment type, how recent and remote. Each hit is a full posting with the company's industry and size, salary, skills, benefits and signals like urgent hire. A second operation reads up to ten postings by job key or URL.
- **[3. Naukri](https://apiforagents.dev/platforms/naukri/jobs-api).** A keyword or a pasted Naukri search URL with the board's filters: experience, workplace, salary in lakhs, locations and Naukri's coded department, role, industry and company-type filters. Every search returns and bills at least 50 rows, so it suits bulk pulls. History tracks applicants, views and vacancies.
- **[4. Upwork](https://apiforagents.dev/platforms/upwork/jobs-api).** Search with Upwork's own filters: hourly or fixed budget bounds, experience level, client hiring history, project length, hours per week and client country. Each hit carries live proposal counts (applicants, interviewing, invites, hired). A search returns at least five rows.

## How to choose

- Roles at companies worldwide: LinkedIn jobs first, Indeed for wider reach in the same country.
- India: Naukri, with LinkedIn and Indeed's India site beside it.
- Freelance demand and pricing: Upwork.
- Applicant trends: Naukri and Upwork keep free history of applicant and proposal counts for postings already held.

## The operations on this list

- [LinkedIn Jobs API](https://apiforagents.dev/platforms/linkedin/jobs-api): Professional and tech roles
- [Indeed Jobs API](https://apiforagents.dev/platforms/indeed/jobs-api): Volume across 23 countries
- [Naukri Jobs API](https://apiforagents.dev/platforms/naukri/jobs-api): Jobs in India
- [Upwork Jobs API](https://apiforagents.dev/platforms/upwork/jobs-api): Freelance and contract work

## Questions

### Which job APIs include salary?

LinkedIn rows carry the salary text, Indeed the salary range and period, Naukri the salary or a benchmark CTC, and Upwork the hourly or fixed budget.

### Can I get the full job description?

LinkedIn rows include the description, Indeed hits are full postings, and Naukri adds the full description and requirements when you set fetchDetails.

### Which countries does Indeed cover here?

23: US, GB, CA, AU, IN, DE, FR, JP, BR, MX, IT, ES, NL, BE, CH, AT, SG, HK, IE, NZ, AR, CL and CO.

### Can I track how many people applied?

Yes for Naukri (applicants, views, vacancies) and Upwork (applicants, interviewing, invites sent, hired), through free history operations on postings already held.

### Is there a free job data API?

New agents start with $0.10 free. After that each listing is paid per record; quote first with "estimateOnly": true.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# The best travel data APIs stays, prices, reviews, places.

> Booking.com, Airbnb, Tripadvisor and Google Maps ranked as travel data APIs for 2026: stay prices, availability, reviews, ratings and places nearby.

Canonical: https://apiforagents.dev/best/best-travel-data-apis · Updated 2026-10-21

The best travel data sources are Booking.com for hotel prices and availability, Airbnb for rentals, Tripadvisor for reviews and things to do, and Google Maps for every place around them, because together they cover where to stay, what it costs for given dates, what guests said and what is nearby.

- Booking.com: from $0.0018 per record
- Airbnb: from $0.0018 per record
- Tripadvisor: from $0.0018 per record
- Free trial: $0.10

## The ranking

| # | Source | What you get | Best for | Price |
|---|---|---|---|---|
| 1 | Booking.com | Price from, guest score, rooms with availability and price, facilities, policies | Hotel prices for dates | $0.0018 per record |
| 2 | Airbnb | Nightly and total price, availability, category ratings, amenities, house rules, host | Rentals and apartments | $0.0018 per record |
| 3 | Tripadvisor | Hotels, restaurants and attractions with rating, rank, offers, reviews | Things to do and reviews | from $0.0018 per record |
| 4 | Google Maps | Places with hours, popular times, rating, address and coordinates | Everything near the stay | $0.000225 per record |

List prices are per record and some calls carry a minimum. Quote any call first with "estimateOnly": true: the quote is free and is the most the call can cost.

## Each source, in order

- **[1. Booking.com](https://apiforagents.dev/platforms/booking/search-api).** Search a destination for a stay with property type, minimum stars, minimum guest score, price bounds and sort, or read up to ten properties by URL. Rooms come back with availability and price for the dates, and guest reviews have their own operation. Without dates a property has no price to show.
- **[2. Airbnb](https://apiforagents.dev/platforms/airbnb/listings-api).** Full cards for up to ten listings by URL or room id, priced for a stay with adults, children, infants, pets and currency. There is no search by destination, so you start from listing URLs. Without dates a card comes back unpriced.
- **[3. Tripadvisor](https://apiforagents.dev/platforms/tripadvisor).** Cards and search for hotels, restaurants and attractions. Hotels add class, rooms, amenities and offers for a stay; attractions add ticket offers and booking links. Reviews carry trip type and sub-ratings.
- **[4. Google Maps](https://apiforagents.dev/platforms/google_maps/places-api).** Search any keyword in a location, or read places by Maps URL, with hours, popular times, attributes and coordinates. History stores live occupancy as well as rating. It has no stay prices.

## How to choose

- Hotel prices for set dates: Booking.com search, then properties for the shortlist.
- Rentals: Airbnb listings by URL, priced for the party and the dates.
- Where to eat and what to do: Tripadvisor search, then Google Maps for hours and busy times.
- Price changes: the free history operations store each priced fetch tagged with its stay.

## The operations on this list

- [Booking.com Search API](https://apiforagents.dev/platforms/booking/search-api): Hotel prices for dates
- [Airbnb Listings API](https://apiforagents.dev/platforms/airbnb/listings-api): Rentals and apartments
- [Tripadvisor Hotels API](https://apiforagents.dev/platforms/tripadvisor/hotels-api): Things to do and reviews
- [Tripadvisor Attraction Search API](https://apiforagents.dev/platforms/tripadvisor/attraction-search-api): Things to do and reviews
- [Tripadvisor Reviews API](https://apiforagents.dev/platforms/tripadvisor/reviews-api): Things to do and reviews
- [Google Maps Places API](https://apiforagents.dev/platforms/google_maps/places-api): Everything near the stay

## Questions

### Can I get hotel prices for specific dates?

Yes. Booking.com and Airbnb take a stay with check-in and check-out; Tripadvisor hotel cards add offers for a stay when dates are given.

### Can I search Airbnb by city?

Not here. Airbnb listings are read by URL or room id. Use Booking.com search when you need to search a destination.

### Can I track hotel price changes?

Yes. Every priced fetch adds a point tagged with that stay, and history reads it free: price from and guest score on Booking.com, price per night and total on Airbnb.

### Which currency do prices come back in?

The one you ask for. Booking.com, Airbnb and Tripadvisor take an ISO 4217 currency code.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# The best local business data APIs phone, website, hours, ratings.

> Google Maps, Yelp, Tripadvisor and Facebook pages ranked as local business data APIs for 2026: phone, website, hours, ratings and reviews per business.

Canonical: https://apiforagents.dev/best/best-local-business-data-apis · Updated 2026-10-21

The best local business data source is Google Maps, because a keyword and a location return full cards with phone, website, hours, rating and coordinates for the businesses Maps lists. Yelp adds review insights and health inspections, Tripadvisor covers restaurants and attractions, and Facebook pages add followers and ads status.

- Google Maps: from $0.000225 per record
- Yelp: from $0.000225 per record
- Sources ranked: 4
- Free trial: $0.10

## The ranking

| # | Source | What you get | Best for | Price |
|---|---|---|---|---|
| 1 | Google Maps | Category, phone, website, emails, socials, hours, popular times, rating | Any local business list | $0.000225 per record |
| 2 | Yelp | Phone, website, menu, review insights, popular dishes, health inspections | Restaurants and services | $0.000225 per record |
| 3 | Tripadvisor | Restaurants and attractions with rank, cuisines, hours, menu, price level | Hospitality and tourism | $0.0018 per record |
| 4 | Facebook pages | Followers, talking-about, reviews and recommend %, contact, hours, ads status | A business's social presence | $0.009 per record |

List prices are per record and some calls carry a minimum. Quote any call first with "estimateOnly": true: the quote is free and is the most the call can cost.

## Each source, in order

- **[1. Google Maps](https://apiforagents.dev/platforms/google_maps/search-api).** Search a keyword in a location with minimum-rating and website filters, or read up to ten places by Maps URL or place id. Cards carry the rating and star breakdown, review keywords, address and coordinates, opening and special hours, and closed or unclaimed flags.
- **[2. Yelp](https://apiforagents.dev/platforms/yelp/business-api).** Search a place and keyword with Yelp's sort, price levels and feature filters, or read businesses by URL. Profiles add review insights by topic with sentiment, popular dishes, health inspections and Q&A. It only covers businesses with a Yelp page.
- **[3. Tripadvisor](https://apiforagents.dev/platforms/tripadvisor/restaurants-api).** Restaurant cards add cuisines, dishes, hours, menu and price level; attraction cards add types and ticket offers; every card carries its rank in the area. Search restaurants by destination or by dish.
- **[4. Facebook pages](https://apiforagents.dev/platforms/facebook/page-api).** Page cards for up to ten pages by URL or handle, with category, contact, address, hours, price range, social links and whether the page runs ads. There is no page search by location, so start from page URLs.

## How to choose

- Build the list with Google Maps search; add Yelp for restaurants and services.
- Enrich each business with its Facebook page when social reach matters.
- Keep it current with the free history operations, which store rating and review count over time.

> **Verdict** Google Maps first, Yelp second, Tripadvisor and Facebook to fill in.

## The operations on this list

- [Google Maps Search API](https://apiforagents.dev/platforms/google_maps/search-api): Any local business list
- [Yelp Business API](https://apiforagents.dev/platforms/yelp/business-api): Restaurants and services
- [Tripadvisor Restaurants API](https://apiforagents.dev/platforms/tripadvisor/restaurants-api): Hospitality and tourism
- [Facebook Page API](https://apiforagents.dev/platforms/facebook/page-api): A business's social presence

## Questions

### How do I get a list of businesses in a city?

Run Google Maps search with a keyword and a location; every hit is a full place card. Yelp search does the same for businesses on Yelp.

### Can I get business email addresses?

Google Maps cards carry the emails and socials a business lists. Facebook page cards carry the page's contact details.

### Can I find businesses without a website?

Yes. Google Maps search takes website "without" to keep only places that list none.

### How do I know a business is still open?

Google Maps cards carry closed flags and opening hours, and every row says when it was measured.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# The best social listening sources find what people say by keyword.

> Reddit, X, LinkedIn post search, TikTok, Instagram hashtags and YouTube comments ranked for social listening in 2026: public posts found by keyword.

Canonical: https://apiforagents.dev/best/best-social-listening-data-sources · Updated 2026-10-21

The best social listening sources are Reddit search and X post search, because both find posts by keyword across all authors, which is what listening needs. LinkedIn post search covers professional talk, TikTok finds videos by keyword, hashtag or sound, and Instagram hashtags and YouTube comments fill in the rest.

- Sources ranked: 6
- Reddit search: $0.0045 per record
- X post search: $0.000225 per record
- Free trial: $0.10

## The ranking

| # | Source | What you get | Best for | Price |
|---|---|---|---|---|
| 1 | Reddit search | Posts with score, upvote ratio, comment count, permalink | Long, honest discussion | $0.0045 per record |
| 2 | X post search | Posts with likes, replies, reposts, quotes, views | Fast-moving reactions | $0.000225 per record |
| 3 | LinkedIn post search | Post text, kind, date, likes, comments, reposts, permalink | Professional and B2B talk | $0.002 per record |
| 4 | TikTok post search | Posts with views, likes, comments, shares, saves, sound, hashtags | Trends and products on video | $0.0018 per record |
| 5 | Instagram hashtags | Posts tagged with a hashtag, top or newest | Brand and campaign tags | $0.00045 per record |
| 6 | YouTube comments | Top comments on videos by URL or id | Reactions to specific videos | $0.00045 per record |

List prices are per record and some calls carry a minimum. Quote any call first with "estimateOnly": true: the quote is free and is the most the call can cost.

## Each source, in order

- **[1. Reddit search](https://apiforagents.dev/platforms/reddit/search-api).** Posts across all of Reddit matching a keyword, sorted by relevance, hot, top, newest or most commented. The posted-within filter applies to top only. Follow up with the comments operation to read the threads that matter.
- **[2. X post search](https://apiforagents.dev/platforms/x_twitter/post-search-api).** Posts by keyword across all authors, newest-relevant first. It takes a query and a limit and nothing else, so narrow with the words you search.
- **[3. LinkedIn post search](https://apiforagents.dev/platforms/linkedin/post-search-api).** Posts by keyword, narrowed by who is tagged, content type and how recent, sorted by relevance or date. A query is always needed, even when you filter by mentions. Comments and reactions on the posts you find have their own operations.
- **[4. TikTok post search](https://apiforagents.dev/platforms/tiktok/video-search-api).** Posts by keyword, by hashtag or by sound URL, exactly one per call. Each row carries the engagement and the sound used. Top-level comments on the posts you find are one call away.
- **[5. Instagram hashtags](https://apiforagents.dev/platforms/instagram/hashtag-api).** Posts tagged with a hashtag, ranked or chronological. Instagram's search here finds accounts, not posts, so you listen through hashtags.
- **[6. YouTube comments](https://apiforagents.dev/platforms/youtube/comments-api).** Top comments on up to ten videos per call. There is no video search here, so pick the videos first, for example a channel's recent uploads or a review of your product.

## How to choose

- Brand and product mentions: Reddit search and X post search on the name.
- B2B topics: LinkedIn post search.
- Consumer trends: TikTok post search by hashtag or sound, Instagram hashtags.
- Reactions to one piece of content: comments on that post or video.
- Rows are posts and comments with engagement, not sentiment scores; let your model judge the tone.

## The operations on this list

- [Reddit Search API](https://apiforagents.dev/platforms/reddit/search-api): Long, honest discussion
- [X Post Search API](https://apiforagents.dev/platforms/x_twitter/post-search-api): Fast-moving reactions
- [LinkedIn Post Search API](https://apiforagents.dev/platforms/linkedin/post-search-api): Professional and B2B talk
- [TikTok Video Search API](https://apiforagents.dev/platforms/tiktok/video-search-api): Trends and products on video
- [Instagram Hashtag API](https://apiforagents.dev/platforms/instagram/hashtag-api): Brand and campaign tags
- [YouTube Comments API](https://apiforagents.dev/platforms/youtube/comments-api): Reactions to specific videos

## Questions

### Can I monitor brand mentions on Reddit and X?

Yes. Search Reddit and X posts by your brand's name. Each row carries engagement, and each says when it was measured.

### Can I filter by date?

Reddit's posted-within filter applies to the top sort; LinkedIn post search takes posted-within with every sort; Instagram hashtags can sort newest. X post search takes no date filter.

### Does it include sentiment?

No. You get the post or comment text with its engagement. Sentiment is for your model to judge.

### How is listening priced?

Per record: Reddit search $0.0045 per record, X post search $0.000225 per record, LinkedIn post search $0.002 per record. Quote first with "estimateOnly": true.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# The best ad intelligence sources see what competitors run.

> Facebook ads from Meta's Ad Library, the LinkedIn Ad Library and Google search, ranked for ad intelligence in 2026: creatives, copy, dates, links.

Canonical: https://apiforagents.dev/best/best-ad-intelligence-data-sources · Updated 2026-10-21

The best ad intelligence sources are the Facebook ads operation, which reads every ad a page runs in Meta's Ad Library, and the LinkedIn Ad Library operation, because both return the creative, the copy, the dates and where the ad links. Google search then shows which pages rank for the same words, though it returns organic results, not ads.

- Facebook ads: $0.0045 per record
- LinkedIn Ad Library: $0.002 per record
- Google search: $0.0009 per record
- Free trial: $0.10

## The ranking

| # | Source | What you get | Best for | Price |
|---|---|---|---|---|
| 1 | Facebook ads | Creative, headline, CTA, link, dates, platforms, advertiser, EU reach | Consumer brands on Meta | $0.0045 per record |
| 2 | LinkedIn Ad Library | Headline, body, format, media, click URL, impressions, targeting location, days active | B2B advertisers | $0.002 per record |
| 3 | Facebook page cards | Ads status, followers, category, contact | A quick check of who advertises | $0.009 per record |
| 4 | Google search | Ranked links, titles, snippets, related questions | Landing pages and organic rivals | $0.0009 per record |

List prices are per record and some calls carry a minimum. Quote any call first with "estimateOnly": true: the quote is free and is the most the call can cost.

## Each source, in order

- **[1. Facebook ads](https://apiforagents.dev/platforms/facebook/ad-library-api).** Every ad up to five pages run in Meta's Ad Library, active or stopped. Rows carry the creative, headline, call to action, link, dates, the platforms it ran on and EU reach.
- **[2. LinkedIn Ad Library](https://apiforagents.dev/platforms/linkedin/ads-library-api).** All live ads on an advertiser's Ad Library page, or one ad's detail, by Ad Library URL. Rows carry the impressions, targeting location, start and end dates and days active. You need the Ad Library URL, not a company handle.
- **[3. Facebook page cards](https://apiforagents.dev/platforms/facebook/page-api).** Each page card says whether the page is running ads, so you can check ten competitors in one call before reading their ads in full.
- **[4. Google search](https://apiforagents.dev/platforms/google/search-api).** Web results for a query with rank, filtered by country, site, date range or file type. It returns organic results, not paid search ads. Billed per page of about ten results.

## How to choose

- Selling to consumers: Facebook ads first, page cards to see who is active.
- Selling to businesses: the LinkedIn Ad Library for each competitor.
- After the ad: open the click URLs and run Google search on the offer to see who else ranks.

## The operations on this list

- [Facebook Ad Library API](https://apiforagents.dev/platforms/facebook/ad-library-api): Consumer brands on Meta
- [LinkedIn Ad Library API](https://apiforagents.dev/platforms/linkedin/ads-library-api): B2B advertisers
- [Facebook Page API](https://apiforagents.dev/platforms/facebook/page-api): A quick check of who advertises
- [Google Search API](https://apiforagents.dev/platforms/google/search-api): Landing pages and organic rivals

## Questions

### Can I see how much a competitor spends on ads?

There is no spend field. LinkedIn ad rows carry impressions and days active; Facebook ad rows carry EU reach and the dates.

### Can I see ads that have stopped running?

Yes on Facebook: set status to inactive. LinkedIn ad rows carry start and end dates.

### Does this cover paid Google search ads?

No. Google search here returns organic results: links, titles, snippets and rank.

### How much does it cost?

Facebook ads $0.0045 per record, LinkedIn Ad Library $0.002 per record. Quote first with "estimateOnly": true.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# The best sneaker and resale data APIs StockX, GOAT, Farfetch.

> StockX, GOAT and Farfetch ranked as sneaker and resale data APIs for 2026: last sales, asks, bids, size-level prices and free stored market history.

Canonical: https://apiforagents.dev/best/best-sneaker-and-resale-data-apis · Updated 2026-10-21

The best sneaker and resale data source is StockX, because its rows carry market data size by size: last sale, lowest ask, highest bid, 90-day and 12-month averages and sales counts. GOAT adds asks by size with condition and a max offer, and Farfetch covers luxury fashion at retail with stock per size.

- StockX: from $0.0009 per record
- GOAT: from $0.0009 per record
- Farfetch: from $0.0009 per record
- Market history: Free

## The ranking

| # | Source | What you get | Best for | Price |
|---|---|---|---|---|
| 1 | StockX | Last sale, asks, bids, 90-day and 12-month averages, 72-hour sales, volatility | Market price and demand | $0.0009 per record |
| 2 | GOAT | Asking price per size, condition, availability, max offer, retail price | Asks by size and condition | $0.0009 per record |
| 3 | Farfetch | Price, full price, discount, per-size availability, seller boutique | Luxury fashion at retail | $0.0009 per record |

List prices are per record and some calls carry a minimum. Quote any call first with "estimateOnly": true: the quote is free and is the most the call can cost.

## Each source, in order

- **[1. StockX](https://apiforagents.dev/platforms/stockx/product-api).** Full detail for up to ten products by URL or slug, with every size's ask, bid and last sale, plus retail price and release date. Search, brand and category pages too, and a country code for regional prices. History stores every market figure free.
- **[2. GOAT](https://apiforagents.dev/platforms/goat/product-api).** Every size with its asking price, condition and availability, plus max offer, retail price, release date and colorway. Search, brand or collection pages, priced by country code. History stores lowest ask, max offer and retail price.
- **[3. Farfetch](https://apiforagents.dev/platforms/farfetch/product-api).** Product cards with per-size availability, SKU and price, the seller boutique and category path; keyword search; and any designer, category or sale page. Prices follow the storefront locale, so read the currency.

## How to choose

- Pricing a pair to buy or sell: StockX for the last sale and bids, GOAT for asks by condition.
- Tracking retail markdowns on designer pieces: Farfetch and its discount history.
- Fetch on a schedule; history reads the stored series free.

## The operations on this list

- [StockX Product API](https://apiforagents.dev/platforms/stockx/product-api): Market price and demand
- [GOAT Product API](https://apiforagents.dev/platforms/goat/product-api): Asks by size and condition
- [Farfetch Product API](https://apiforagents.dev/platforms/farfetch/product-api): Luxury fashion at retail

## Questions

### Can I get prices by shoe size?

Yes. StockX returns every size's ask, bid and last sale; GOAT every size's asking price, condition and availability; Farfetch per-size availability with SKU and price.

### Can I see prices for my country?

StockX and GOAT take a two-letter country code and price in that region. Farfetch prices follow the storefront locale.

### Is there sales history?

StockX's free history reads stored last sale, asks, bids, averages, sales counts and volatility for products already held.

### Do I need product URLs?

No. Each source has keyword search and listing pages; every hit is a full product card with its URL.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# The best web search APIs for AI agents.

> Google web search, News, Shopping and Images ranked as search APIs for AI agents in 2026: ranked links, snippets, dates and prices, quoted first.

Canonical: https://apiforagents.dev/best/best-web-search-apis-for-ai-agents · Updated 2026-10-21

For an AI agent, the best web search source is Google web search, because it returns ranked links with titles, snippets, related questions and searches, and accepts the operators agents already know (site:, intitle:, OR). Google News is best for anything dated, Shopping for prices and Images for pictures with their source pages.

- Surfaces: 4
- Google web search: $0.0009 per record
- Web search billed: Per page of about ten
- Free trial: $0.10

## The ranking

| # | Source | What you get | Best for | Price |
|---|---|---|---|---|
| 1 | Google web search | Link, title, snippet, domain, rank, related questions and searches | General research | $0.0009 per record |
| 2 | Google News | Headline, publisher, date, link | Anything with a date | $0.0018 per record |
| 3 | Google Shopping | Title, merchant, price, rating, review count | Prices across merchants | $0.0027 per record |
| 4 | Google Images | Image URL, source page, dimensions, thumbnail | Pictures with their source | $0.0009 per record |

List prices are per record and some calls carry a minimum. Quote any call first with "estimateOnly": true: the quote is free and is the most the call can cost.

## Each source, in order

- **[1. Google web search](https://apiforagents.dev/platforms/google/search-api).** Up to five pages per call, billed per page of about ten results. Filter by country, language, one site, a date range, file type, or sites similar to a domain. It returns links and snippets, not the page text, so fetch the pages you need.
- **[2. Google News](https://apiforagents.dev/platforms/google/news-api).** News articles for a query, filtered to the last hour, day, week or year, by country and language. Use it when the agent must know what changed recently.
- **[3. Google Shopping](https://apiforagents.dev/platforms/google/shopping-api).** Shopping offers for a query, filtered by country, language and how recent. One call shows what several merchants charge for the same thing.
- **[4. Google Images](https://apiforagents.dev/platforms/google/images-api).** Image results for a query, each with the page it came from and its size. It takes a query and a limit only.

## How to choose

- Facts and sources: web search, with site: or the site filter when the agent knows where to look.
- Recent events: News with posted-within.
- What people think, not what pages say: add Reddit search or X post search.
- Every call can be quoted first and capped with maxUsd, so a looping agent cannot overspend.

## The operations on this list

- [Google Search API](https://apiforagents.dev/platforms/google/search-api): General research
- [Google News API](https://apiforagents.dev/platforms/google/news-api): Anything with a date
- [Google Shopping API](https://apiforagents.dev/platforms/google/shopping-api): Prices across merchants
- [Google Images API](https://apiforagents.dev/platforms/google/images-api): Pictures with their source

## Questions

### Can my agent pay for search on its own?

Yes. It signs itself up, starts with $0.10 free, quotes each call with "estimateOnly": true and spends a prepaid balance. Only a person can add money.

### Can the agent search one site only?

Yes: write site: in the query, or set the site filter to a domain or path such as reddit.com.

### Does it return the page content?

No. Web search returns links, titles, snippets, domains and rank. The agent fetches the pages it needs.

### Can I search news from the last hour?

Yes. Google News takes posted-within of one hour, one day, seven days, one year or any time.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# The best data APIs for AI agents one pick for each job.

> One pick per job for AI agents in 2026: LinkedIn for people, Google Maps for places, Amazon for products, Indeed for jobs, Google for the web, and more.

Canonical: https://apiforagents.dev/best/best-data-apis-for-ai-agents · Updated 2026-10-21

The best data source for an AI agent depends on the job: LinkedIn for people and companies, Google Maps for places, Amazon for products, Indeed for jobs, Booking.com for stays, Google for the open web and Reddit for opinions. All of them answer through one account here, so the agent signs itself up once, quotes each call and pays per record.

- Platforms: 26
- Sign-up: One call
- Free trial: $0.10
- Quote: Free, before each call

## One pick per job

| # | Source | What you get | Best for | Price |
|---|---|---|---|---|
| 1 | People and companies: LinkedIn | Profiles, companies, people search, posts, jobs | Who works where | from $0.001 per record |
| 2 | Places: Google Maps | Place cards, search, reviews | Any business with an address | from $0.000225 per record |
| 3 | Products: Amazon | Product cards, search, reviews, price history | What things cost and what buyers say | from $0.00045 per record |
| 4 | Jobs: Indeed | Full postings with salary, skills, employer signals | Who is hiring | from $0.000045 per record |
| 5 | Stays: Booking.com | Properties, search, guest reviews | Hotel prices for dates | from $0.0018 per record |
| 6 | The open web: Google | Web results, news, images, shopping, Play reviews | Everything else that is public | from $0.00009 per record |
| 7 | Opinions: Reddit | Posts with score, comments, search | What people really think | from $0.0045 per record |
| 8 | Creators: Instagram | Profiles, posts, hashtags, followers, similar accounts | Influencers and brands | from $0.00045 per record |
| 9 | Contact details: Contacts | Work email and mobile number by LinkedIn handle | Reaching a person | quoted per call |
| 10 | The long tail: Explore | Raw rows from sources outside the platform tools | When nothing above fits | quoted per call |

List prices are per record and some calls carry a minimum. Quote any call first with "estimateOnly": true: the quote is free and is the most the call can cost.

## Each source, in order

- **[1. People and companies: LinkedIn](https://apiforagents.dev/platforms/linkedin).** Profiles with work history, company pages, and people search by title, seniority and company. The richest source for questions about people at work. Company-page posts are not served.
- **[2. Places: Google Maps](https://apiforagents.dev/platforms/google_maps).** Search a keyword in a location, read places by URL and pull reviews. Cards carry phone, website, hours and rating.
- **[3. Products: Amazon](https://apiforagents.dev/platforms/amazon).** Products and search on 12 marketplaces, reviews with verified-purchase flags, and a free price history.
- **[4. Jobs: Indeed](https://apiforagents.dev/platforms/indeed).** Keyword and place search on 23 country sites; every hit is a full posting. Use LinkedIn jobs beside it for professional roles.
- **[5. Stays: Booking.com](https://apiforagents.dev/platforms/booking).** Search a destination for a stay and read rooms with availability and price. Without dates there is no price.
- **[6. The open web: Google](https://apiforagents.dev/platforms/google).** Ranked links and snippets with search operators, plus news, images and shopping offers. Web search is billed per page of about ten results.
- **[7. Opinions: Reddit](https://apiforagents.dev/platforms/reddit).** Search all of Reddit by keyword, read a subreddit by sort, and pull comment threads. There is no user profile card.
- **[8. Creators: Instagram](https://apiforagents.dev/platforms/instagram).** Profiles with recent posts in one call, hashtag feeds and similar accounts. Free history tracks follower growth.
- **[9. Contact details: Contacts](https://apiforagents.dev/platforms/contacts/work-email-and-phone-api).** Up to ten people per call by /in/ handle, with an optional email check. Priced per call, billed per person and per part; the one source here that is not read from public pages.
- **[10. The long tail: Explore](https://apiforagents.dev/platforms/explore/data-api).** Search what is reachable for free, read a source's input fields and estimate, then run it. Rows come back raw and unverified, not mapped into a schema, so use the platform tools first.

## Why one account matters to an agent

An agent that needs five sources should not need five sign-ups, five keys and five bills. Here it registers itself in one call, starts with $0.10 free, and reads the operations as plain text from llms.txt.

Before it spends, it can quote any call free with "estimateOnly": true and cap it with "maxUsd". Every answer says when each row was measured, what was missing and why, and what the call cost, so the agent does not invent the gaps.

> **Verdict** Start with the platform tool for the job. Reach for Explore only when none of them covers it.

## The operations on this list

- [LinkedIn Profile API](https://apiforagents.dev/platforms/linkedin/profile-api): Who works where
- [LinkedIn People Search API](https://apiforagents.dev/platforms/linkedin/people-search-api): Who works where
- [Google Maps Search API](https://apiforagents.dev/platforms/google_maps/search-api): Any business with an address
- [Google Maps Places API](https://apiforagents.dev/platforms/google_maps/places-api): Any business with an address
- [Google Maps Reviews API](https://apiforagents.dev/platforms/google_maps/reviews-api): Any business with an address
- [Amazon Product API](https://apiforagents.dev/platforms/amazon/product-api): What things cost and what buyers say
- [Amazon Reviews API](https://apiforagents.dev/platforms/amazon/reviews-api): What things cost and what buyers say
- [Indeed Jobs API](https://apiforagents.dev/platforms/indeed/jobs-api): Who is hiring
- [Booking.com Search API](https://apiforagents.dev/platforms/booking/search-api): Hotel prices for dates
- [Booking.com Hotels API](https://apiforagents.dev/platforms/booking/hotels-api): Hotel prices for dates
- [Google Search API](https://apiforagents.dev/platforms/google/search-api): Everything else that is public
- [Reddit Search API](https://apiforagents.dev/platforms/reddit/search-api): What people really think
- [Instagram Profile API](https://apiforagents.dev/platforms/instagram/profile-api): Influencers and brands
- [Instagram Hashtag API](https://apiforagents.dev/platforms/instagram/hashtag-api): Influencers and brands
- [Work Email and Phone API](https://apiforagents.dev/platforms/contacts/work-email-and-phone-api): Reaching a person
- [Explore Data API](https://apiforagents.dev/platforms/explore/data-api): When nothing above fits

## Questions

### Can an AI agent buy data on its own?

Yes. It registers itself with one POST and starts on a $0.10 trial. A person claims the agent later with a code, only when it is time to pay.

### How does an agent avoid overspending?

It spends a prepaid balance, quotes calls free with estimateOnly, and maxUsd refuses anything above a ceiling. Only a person can add money.

### What data is not covered?

Anything behind a login: private profiles, inboxes and messages. Contacts (work email and phone) is the one source that is not read from public pages.

### How many platforms are there?

26, from LinkedIn, Instagram and TikTok to Amazon, Blinkit, Indeed, Booking.com and Google, plus Explore for the long tail.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# The best competitor research sources size, ads, reviews, hiring, prices.

> Company pages, ad libraries, reviews, job listings and store prices ranked as competitor research data sources for 2026, with what each returns.

Canonical: https://apiforagents.dev/best/best-competitor-research-data-sources · Updated 2026-10-21

The best competitor research sources are LinkedIn company pages for size and growth, the Facebook and LinkedIn ad libraries for what they promote, reviews for what customers say, job listings for where they invest and Shopify or Amazon for what they charge. Each answers a different question, so a full picture takes several of them.

- Sources ranked: 7
- LinkedIn company pages: $0.004 per record
- Facebook ads: $0.0045 per record
- Free trial: $0.10

## The ranking

| # | Source | What you get | Best for | Price |
|---|---|---|---|---|
| 1 | LinkedIn company pages | Industry, size band, employee count, followers, website, HQ, specialities | Size and growth | $0.004 per record |
| 2 | Facebook ads | Creative, headline, CTA, link, dates, platforms, EU reach | Consumer messaging | $0.0045 per record |
| 3 | LinkedIn Ad Library | Headline, body, format, click URL, impressions, days active | B2B messaging | $0.002 per record |
| 4 | Amazon reviews | Text, rating, verified-purchase flag, helpful votes, variant | What their buyers complain about | $0.00045 per record |
| 5 | Google Maps reviews | Text, stars, date, owner response | Local competitors | $0.000225 per record |
| 6 | LinkedIn jobs | Open roles with title, location, salary text, description | Where they are investing | $0.001 per record |
| 7 | Shopify store catalogue | Every product and variant with price, stock, sale flag | Direct-to-consumer pricing | $0.0009 per record |

List prices are per record and some calls carry a minimum. Quote any call first with "estimateOnly": true: the quote is free and is the most the call can cost.

## Each source, in order

- **[1. LinkedIn company pages](https://apiforagents.dev/platforms/linkedin/company-api).** Company pages for up to ten handles per call. The free history operation stores followers and employee count for companies already held, so headcount growth is one free call after the first fetch.
- **[2. Facebook ads](https://apiforagents.dev/platforms/facebook/ad-library-api).** Every ad a competitor's page runs in Meta's Ad Library, active or stopped. Shows the offers and the landing pages they push.
- **[3. LinkedIn Ad Library](https://apiforagents.dev/platforms/linkedin/ads-library-api).** A competitor's live LinkedIn ads by Ad Library URL, with impressions, targeting location and how long each has run.
- **[4. Amazon reviews](https://apiforagents.dev/platforms/amazon/reviews-api).** Reviews for up to ten competing products per call. Sort the low ratings into themes to find gaps you can fill. Amazon caps reviews at 100 per product.
- **[5. Google Maps reviews](https://apiforagents.dev/platforms/google_maps/reviews-api).** Reviews for up to ten competing places, sorted lowest first if you want the complaints. The owner's responses show how each one handles them.
- **[6. LinkedIn jobs](https://apiforagents.dev/platforms/linkedin/jobs-api).** Filter listings by company name to see which teams a competitor is growing and where. The description often names the tools and markets involved.
- **[7. Shopify store catalogue](https://apiforagents.dev/platforms/shopify/products-api).** A competitor's full Shopify catalogue, up to five stores per call, with every variant's price and stock. The free history tracks price and stock changes. Use Amazon products for rivals that sell on Amazon.

## How to choose

- How big and how fast: LinkedIn company pages plus free history.
- What they say: Facebook ads and the LinkedIn Ad Library.
- What customers say about them: Amazon or Google Maps reviews.
- What they plan: LinkedIn jobs filtered by company.
- What they charge: Shopify or Amazon, fetched on a schedule.

## The operations on this list

- [LinkedIn Company API](https://apiforagents.dev/platforms/linkedin/company-api): Size and growth
- [Facebook Ad Library API](https://apiforagents.dev/platforms/facebook/ad-library-api): Consumer messaging
- [LinkedIn Ad Library API](https://apiforagents.dev/platforms/linkedin/ads-library-api): B2B messaging
- [Amazon Reviews API](https://apiforagents.dev/platforms/amazon/reviews-api): What their buyers complain about
- [Google Maps Reviews API](https://apiforagents.dev/platforms/google_maps/reviews-api): Local competitors
- [LinkedIn Jobs API](https://apiforagents.dev/platforms/linkedin/jobs-api): Where they are investing
- [Shopify Products API](https://apiforagents.dev/platforms/shopify/products-api): Direct-to-consumer pricing

## Questions

### How can I track a competitor's headcount?

Read their LinkedIn company page for the employee count. The free history operation then stores the series for companies already held.

### Can I see what a competitor is hiring for?

Yes. Search LinkedIn jobs with their name in the companies filter, or search Indeed with their name as the keyword.

### Can I monitor competitor prices?

Yes. Fetch their Shopify store or Amazon products on a schedule; each fetch adds a price point and history reads the series free.

### Can I see competitor ads?

Yes, on Facebook (Meta's Ad Library, by page) and LinkedIn (by Ad Library URL).

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 11 things to build with Instagram data.

> Ideas to build with public Instagram data: creator shortlists, hashtag feeds, growth dashboards and comment digests, each with the operations it calls.

Canonical: https://apiforagents.dev/ideas/instagram-data · Updated 2026-10-21

Instagram data is good for finding creators, watching what people post under a tag and tracking how accounts grow. Each idea below names the operations it calls, so you can quote it and run it today.

- Operations: 8
- Price: from $0.00045 per record
- Free to start: $0.10

## The ideas

- **[A creator shortlist builder](https://apiforagents.dev/platforms/instagram/account-search-api).** For brands and agencies picking creators for a campaign. It finds accounts by keyword, then pulls each profile card to compare followers and recent posts side by side. Uses search and profiles.
- **[A lookalike creator finder](https://apiforagents.dev/platforms/instagram/similar-accounts-api).** For marketers who already like one creator and want more like them. It lists related accounts and reads their profiles for a human to review. Uses similar and profiles.
- **[A hashtag listening feed](https://apiforagents.dev/platforms/instagram/hashtag-api).** For social teams tracking a campaign tag or a product name. It pulls posts tagged with it, top or newest, into a daily feed. Uses hashtag.
- **[A competitor content tracker](https://apiforagents.dev/platforms/instagram/posts-api).** For marketers who want to see what a rival posts and how it lands. It reads the account's recent grid or Reels with engagement every week. Uses posts.
- **[A follower growth dashboard](https://apiforagents.dev/platforms/instagram/profile-api).** For agencies reporting on client accounts. It reads profile cards on a schedule and charts the stored follower series, which is free to read. Uses profiles and history.
- **[A comment digest for launch posts](https://apiforagents.dev/platforms/instagram/comments-api).** For brand and product teams after a launch. It collects top comments on chosen posts and has a model sort praise, questions and complaints. Uses comments.
- **[A business contact list from public profiles](https://apiforagents.dev/platforms/instagram/account-search-api).** For B2B sellers who work with shops and studios on Instagram. Asking for the contact fields adds the business email and phone an account publishes on its profile. Uses search and profiles.
- **[A creator audit before a paid deal](https://apiforagents.dev/platforms/instagram/posts-api).** For brands about to pay a creator. It checks recent posts and the stored engagement rate series so the decision rests on more than one number. Uses posts and history.
- **[An audience overlap check](https://apiforagents.dev/platforms/instagram/followers-api).** For partnership teams comparing two accounts. It reads a sample of each account's followers and counts the accounts that appear in both. Uses followers.
- **[A Reels performance report](https://apiforagents.dev/platforms/instagram/posts-api).** For creators and agencies who post short video. It reads the Reels tab only and ranks recent Reels by views and likes. Uses posts.
- **[A niche research assistant](https://apiforagents.dev/platforms/instagram/account-search-api).** For founders and analysts asking who the biggest accounts in a topic are. An agent searches, reads the profiles and recent posts, and answers with links. Uses search, profiles and posts.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A creator shortlist builder | search, profiles | Up to 25 accounts per search | search: $0.00045 per record |
| A lookalike creator finder | similar, profiles | Up to 50 related accounts | similar: $0.00045 per record |
| A hashtag listening feed | hashtag | Up to 50 posts | hashtag: $0.00045 per record |
| A competitor content tracker | posts | Up to 48 posts | posts: $0.0018 per record |
| A follower growth dashboard | profiles, history | Up to 10 accounts | profiles: $0.0018 per record |
| A comment digest for launch posts | comments | Up to 100 comments | comments: $0.00045 per record |
| A business contact list from public profiles | search, profiles | Up to 10 profiles | search: $0.00045 per record |
| A creator audit before a paid deal | posts, history | Up to 48 posts | posts: $0.0018 per record |
| An audience overlap check | followers | Up to 100 accounts per list | followers: $0.000675 per record |
| A Reels performance report | posts | Up to 48 Reels | posts: $0.0018 per record |
| A niche research assistant | search, profiles, posts | Up to 25 accounts per search | search: $0.00045 per record |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Quote the first call for free: send the profiles request with "estimateOnly": true and read the price before anything is spent.
3. Run the same call with "maxUsd" set as a ceiling, and keep the rows it returns.
4. Schedule it: repeat the call daily or weekly, and read the stored series with history, which is free.

## Operations used

- [Instagram Profile API](https://apiforagents.dev/platforms/instagram/profile-api): $0.0018 per record. Profile cards for up to ten accounts.
- [Instagram Posts API](https://apiforagents.dev/platforms/instagram/posts-api): $0.0018 per record. One account's recent posts, newest first.
- [Instagram Account Search API](https://apiforagents.dev/platforms/instagram/account-search-api): $0.00045 per record. Instagram's own account search.
- [Instagram Similar Accounts API](https://apiforagents.dev/platforms/instagram/similar-accounts-api): $0.00045 per record. Accounts related to one account, for finding more like it.
- [Instagram Hashtag API](https://apiforagents.dev/platforms/instagram/hashtag-api): $0.00045 per record. Posts TAGGED with a hashtag.
- [Instagram Comments API](https://apiforagents.dev/platforms/instagram/comments-api): $0.00045 per record. Top comments on up to ten Instagram POSTS, by /p/ or /reel/ URL (or a bare shortcode).
- [Instagram Followers API](https://apiforagents.dev/platforms/instagram/followers-api): $0.000675 per record. The followers OR the following list of up to ten public accounts.

## Questions

### Where should the usernames come from?

From evidence: a search result, the similar operation, a follower list, or a pasted URL. A username typed from a guess can belong to someone else and is still charged.

### Do I need a Instagram account to build these?

No. The API reads public data and never asks for your login, password or cookie.

### What does a run cost?

Instagram records are priced from $0.00045 per record. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 14 things to build with LinkedIn data.

> Ideas to build with public LinkedIn data: lead lists, hiring signals, job-change alerts, ad trackers and account briefs, each with the operations it calls.

Canonical: https://apiforagents.dev/ideas/linkedin-data · Updated 2026-10-21

LinkedIn data is good for finding the right people and companies, and for spotting signals like hiring, job changes and what people post. Each idea below names the operations it calls, so an agent can quote it and run it.

- Operations: 13
- Price: from $0.001 per record
- Free to start: $0.10

## The ideas

- **[A B2B lead list builder](https://apiforagents.dev/platforms/linkedin/people-search-api).** For sales teams with a clear customer profile. It searches people by title, seniority, industry and company size, then saves each match to a sheet or CRM. Uses searchPeople.
- **[An account brief before a sales call](https://apiforagents.dev/platforms/linkedin/company-api).** For account executives who want context fast. It reads the company page, what the company is hiring for and recent posts that mention it, and writes a one-page brief. Uses companies, jobs and searchPosts.
- **[A job-change alert for champions](https://apiforagents.dev/platforms/linkedin/profile-api).** For customer success and sales teams. It re-reads the profiles of past buyers each month and flags anyone whose current position has changed. Uses profiles.
- **[A hiring-signal feed](https://apiforagents.dev/platforms/linkedin/jobs-api).** For vendors whose product fits a team that is growing. It searches new job listings for a role in chosen locations and lists the companies posting them. Uses jobs.
- **[A company list by market](https://apiforagents.dev/platforms/linkedin/company-search-api).** For founders and analysts sizing a market. It searches companies by keyword, location, industry and headcount band and exports the list. Uses searchCompanies.
- **[A buying committee map](https://apiforagents.dev/platforms/linkedin/people-search-api).** For sellers working one target account. It searches that company's people by function and seniority to show who leads each team. Uses searchPeople.
- **[A post engagement lead finder](https://apiforagents.dev/platforms/linkedin/reactions-api).** For marketers who post on a topic. It lists the people who reacted to or commented on a post, with their headlines, for a human to review. Uses postReactions and postComments.
- **[A topic listening feed](https://apiforagents.dev/platforms/linkedin/post-search-api).** For product and research teams. It searches posts by keyword from the last week, newest first, and sends a short digest. Uses searchPosts.
- **[A founder content benchmark](https://apiforagents.dev/platforms/linkedin/posts-api).** For founders and ghostwriters. It reads the recent posts of peers with likes, comments and reposts to see which formats get replies. Uses posts.
- **[A competitor ad tracker](https://apiforagents.dev/platforms/linkedin/ads-library-api).** For growth teams. It reads a rival's ads from the Ad Library with headline, format, impressions and days active, and flags new ones. Uses adsLibrary.
- **[A candidate sourcing assistant](https://apiforagents.dev/platforms/linkedin/people-search-api).** For recruiters. It searches people by title, location and years of experience, then reads full profiles with skills and positions for a shortlist. Uses searchPeople and profiles.
- **[A CRM enrichment job](https://apiforagents.dev/platforms/linkedin/profile-api).** For revenue operations teams with stale records. It refreshes headline, location and current position for each contact by LinkedIn handle. Uses profiles.
- **[A prospect interest digest](https://apiforagents.dev/platforms/linkedin/profile-comments-api).** For sellers who want a real reason to reach out. It reads what a prospect has commented on and reacted to lately and lists the topics. Uses profileComments and profileReactions.
- **[A company page growth tracker](https://apiforagents.dev/platforms/linkedin/company-api).** For marketing teams watching competitors. It reads company pages on a schedule and charts the stored follower series, which is free to read. Uses companies and history.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A B2B lead list builder | searchPeople | Up to 50 people | searchPeople: $0.004 per record |
| An account brief before a sales call | companies, jobs, searchPosts | 1 company, up to 50 listings | companies: $0.004 per record |
| A job-change alert for champions | profiles | Up to 10 profiles | profiles: $0.004 per record |
| A hiring-signal feed | jobs | Up to 50 listings | jobs: $0.001 per record |
| A company list by market | searchCompanies | Up to 50 companies | searchCompanies: $0.004 per record |
| A buying committee map | searchPeople | Up to 50 people | searchPeople: $0.004 per record |
| A post engagement lead finder | postReactions, postComments | Up to 100 reactions | postReactions: $0.002 per record |
| A topic listening feed | searchPosts | Up to 50 posts | searchPosts: $0.002 per record |
| A founder content benchmark | posts | Up to 50 posts | posts: $0.002 per record |
| A competitor ad tracker | adsLibrary | Up to 100 ads | adsLibrary: $0.002 per record |
| A candidate sourcing assistant | searchPeople, profiles | Up to 50 people | searchPeople: $0.004 per record |
| A CRM enrichment job | profiles | Up to 10 profiles | profiles: $0.004 per record |
| A prospect interest digest | profileComments, profileReactions | Up to 100 comments | profileComments: $0.002 per record |
| A company page growth tracker | companies, history | Up to 10 companies | companies: $0.004 per record |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Quote the first call for free: send the searchPeople request with "estimateOnly": true and read the price before anything is spent.
3. Run the same call with "maxUsd" set as a ceiling, and keep the rows it returns.
4. Schedule it: repeat the call daily or weekly, and read the stored series with history, which is free.

## Operations used

- [LinkedIn People Search API](https://apiforagents.dev/platforms/linkedin/people-search-api): $0.004 per record. People search.
- [LinkedIn Profile API](https://apiforagents.dev/platforms/linkedin/profile-api): $0.004 per record. Profile cards for up to ten people, by /in/<slug> vanity handle (a full profile URL is accepted and reduced to its slug).
- [LinkedIn Company API](https://apiforagents.dev/platforms/linkedin/company-api): $0.004 per record. Company pages for up to ten /company/<slug> handles or URLs.
- [LinkedIn Jobs API](https://apiforagents.dev/platforms/linkedin/jobs-api): $0.001 per record. Job listings search: `query` is the job-title anchor, the rest narrow it.
- [LinkedIn Post Search API](https://apiforagents.dev/platforms/linkedin/post-search-api): $0.002 per record. Search LinkedIn POSTS by keyword.
- [LinkedIn Company Search API](https://apiforagents.dev/platforms/linkedin/company-search-api): $0.004 per record. Company search by keyword and structured filters.
- [LinkedIn Reactions API](https://apiforagents.dev/platforms/linkedin/reactions-api): $0.002 per record. Reactions on up to ten LinkedIn POSTS, by post URL.
- [LinkedIn Comments API](https://apiforagents.dev/platforms/linkedin/comments-api): $0.002 per record. Comments on up to ten LinkedIn POSTS, by post URL.
- [LinkedIn Posts API](https://apiforagents.dev/platforms/linkedin/posts-api): $0.002 per record. A person's recent posts with engagement.
- [LinkedIn Ad Library API](https://apiforagents.dev/platforms/linkedin/ads-library-api): $0.002 per record. Ads from the LinkedIn Ad Library, by Ad Library URL.
- [LinkedIn Profile Comments API](https://apiforagents.dev/platforms/linkedin/profile-comments-api): $0.002 per record. A profile's OWN commenting activity.
- [LinkedIn Profile Reactions API](https://apiforagents.dev/platforms/linkedin/profile-reactions-api): $0.002 per record. A profile's OWN reactions.

## Questions

### Where should the handles come from?

From evidence: a people search, a company search, or a pasted URL. A handle typed from a guess can belong to someone else and is still charged.

### Do I need a LinkedIn account to build these?

No. The API reads public data and never asks for your login, password or cookie.

### What does a run cost?

LinkedIn records are priced from $0.001 per record. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 10 things to build with YouTube data.

> Ideas to build with public YouTube data: sponsor shortlists, channel growth dashboards, comment miners and upload trackers, mapped to the operations used.

Canonical: https://apiforagents.dev/ideas/youtube-data · Updated 2026-10-21

YouTube data is good for judging channels, tracking what they upload and hearing what viewers say in the comments. Each idea below names the operations it calls, so you can quote it and run it.

- Operations: 4
- Price: from $0.00045 per record
- Free to start: $0.10

## The ideas

- **[A sponsor shortlist for brands](https://apiforagents.dev/platforms/youtube/channel-api).** For marketers picking channels to sponsor. It compares subscriber counts with the views on each channel's recent videos. Uses channels and videos.
- **[A channel growth dashboard](https://apiforagents.dev/platforms/youtube/channel-api).** For agencies and creators. It reads channel cards on a schedule and charts subscribers and total views from the stored series, which is free. Uses channels and history.
- **[A viewer question miner](https://apiforagents.dev/platforms/youtube/comments-api).** For creators planning their next video. It collects top comments on recent videos and has a model pull out the questions viewers repeat. Uses comments.
- **[A competitor upload tracker](https://apiforagents.dev/platforms/youtube/videos-api).** For content teams. Each week it lists a rival channel's new videos with views, likes and comments. Uses videos.
- **[A product feedback digest from review videos](https://apiforagents.dev/platforms/youtube/comments-api).** For hardware and app makers. It reads top comments on review videos of their product and sorts them into praise and complaints. Uses comments.
- **[A topic gap finder](https://apiforagents.dev/platforms/youtube/channel-api).** For creators entering a niche. It reads recent videos from the niche's channels and compares views with channel size to see which topics travel. Uses channels and videos.
- **[A sponsored video check-in](https://apiforagents.dev/platforms/youtube/videos-api).** For brands after a paid video goes live. It reads the channel's videos since the launch date and the top comments on the sponsored one. Uses videos and comments.
- **[A creator research assistant](https://apiforagents.dev/platforms/youtube/channel-api).** For agents asked how often a channel posts and how its videos do. One call returns channel cards with their recent videos. Uses channels.
- **[A niche video dataset](https://apiforagents.dev/platforms/youtube/videos-api).** For researchers and analysts. It builds a table of titles, views and likes across a list of channels for later study. Uses videos.
- **[A learning playlist builder](https://apiforagents.dev/platforms/youtube/channel-api).** For students and teachers. It reads the latest videos from a list of teaching channels and keeps a weekly reading list. Uses channels.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A sponsor shortlist for brands | channels, videos | Up to 10 channels | channels: $0.00045 per record |
| A channel growth dashboard | channels, history | Up to 10 channels | channels: $0.00045 per record |
| A viewer question miner | comments | Up to 100 comments | comments: $0.00045 per record |
| A competitor upload tracker | videos | Up to 50 videos | videos: $0.00045 per record |
| A product feedback digest from review videos | comments | Up to 100 comments | comments: $0.00045 per record |
| A topic gap finder | channels, videos | Up to 50 videos per channel | channels: $0.00045 per record |
| A sponsored video check-in | videos, comments | Up to 50 videos | videos: $0.00045 per record |
| A creator research assistant | channels | Up to 10 channels with videos | channels: $0.00045 per record |
| A niche video dataset | videos | Up to 50 videos per channel | videos: $0.00045 per record |
| A learning playlist builder | channels | Up to 10 channels | channels: $0.00045 per record |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Quote the first call for free: send the channels request with "estimateOnly": true and read the price before anything is spent.
3. Run the same call with "maxUsd" set as a ceiling, and keep the rows it returns.
4. Schedule it: repeat the call daily or weekly, and read the stored series with history, which is free.

## Operations used

- [YouTube Channel API](https://apiforagents.dev/platforms/youtube/channel-api): $0.00045 per record. Channel cards for up to ten channels, by @handle, UC… id or pasted channel URL.
- [YouTube Videos API](https://apiforagents.dev/platforms/youtube/videos-api): $0.00045 per record. One channel's recent videos with views, likes and comments.
- [YouTube Comments API](https://apiforagents.dev/platforms/youtube/comments-api): $0.00045 per record. Top comments on up to ten VIDEOS, by watch/shorts URL or bare video id.

## Questions

### Where should the handles come from?

From evidence: a channel page, a search result, or a pasted URL. A handle typed from a guess can belong to someone else and is still charged.

### Do I need a YouTube account to build these?

No. The API reads public data and never asks for your login, password or cookie.

### What does a run cost?

YouTube records are priced from $0.00045 per record. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 10 things to build with X / Twitter data.

> Ideas to build with public X (Twitter) data: brand mention monitors, expert finders, founder digests and growth charts, each with the operations it calls.

Canonical: https://apiforagents.dev/ideas/x-twitter-data · Updated 2026-10-21

X data is good for hearing what people say about a topic right now and for following specific accounts. Each idea below names the operations it calls, so you can quote it and run it.

- Operations: 5
- Price: from $0.000225 per record
- Free to start: $0.10

## The ideas

- **[A brand mention monitor](https://apiforagents.dev/platforms/x_twitter/post-search-api).** For marketing and support teams. It searches posts for the brand name every hour and sends new ones to a channel. Uses searchPosts.
- **[A competitor announcement tracker](https://apiforagents.dev/platforms/x_twitter/posts-api).** For product marketers. It reads the recent posts of rival accounts and flags launches and pricing news. Uses posts.
- **[A follower growth chart](https://apiforagents.dev/platforms/x_twitter/profile-api).** For creators and agencies. It reads profile cards on a schedule and charts the stored follower and post counts, which are free to read. Uses profiles and history.
- **[An expert finder](https://apiforagents.dev/platforms/x_twitter/account-search-api).** For journalists, event organisers and recruiters. It finds accounts by topic or bio phrase, then ranks them by followers for a human to review. Uses search and profiles.
- **[An outage and bug radar](https://apiforagents.dev/platforms/x_twitter/post-search-api).** For support and engineering teams. It searches posts that mention the product with words like down or broken and routes them to the on-call person. Uses searchPosts.
- **[A portfolio founder digest](https://apiforagents.dev/platforms/x_twitter/posts-api).** For investors. It reads what portfolio founders posted this week and writes a short summary. Uses posts.
- **[A newsroom tip feed](https://apiforagents.dev/platforms/x_twitter/post-search-api).** For reporters covering a beat. It searches posts on the beat's keywords and keeps the most relevant new ones. Uses searchPosts.
- **[A pre-call research note](https://apiforagents.dev/platforms/x_twitter/profile-api).** For sellers and recruiters. One call returns a person's public profile with their recent posts, so the agent can suggest a talking point. Uses profiles.
- **[A creator vetting check](https://apiforagents.dev/platforms/x_twitter/profile-api).** For brands planning a partnership. It reads the profile and recent posts with engagement before anyone signs. Uses profiles and posts.
- **[A topic dataset for research](https://apiforagents.dev/platforms/x_twitter/post-search-api).** For researchers and students. It collects posts that match a keyword into a table for later analysis. Uses searchPosts.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A brand mention monitor | searchPosts | Up to 50 posts | searchPosts: $0.000225 per record |
| A competitor announcement tracker | posts | Up to 50 posts | posts: $0.000225 per record |
| A follower growth chart | profiles, history | Up to 10 accounts | profiles: $0.000225 per record |
| An expert finder | search, profiles | Up to 25 accounts | search: $0.000225 per record |
| An outage and bug radar | searchPosts | Up to 50 posts | searchPosts: $0.000225 per record |
| A portfolio founder digest | posts | Up to 50 posts per account | posts: $0.000225 per record |
| A newsroom tip feed | searchPosts | Up to 50 posts | searchPosts: $0.000225 per record |
| A pre-call research note | profiles | Up to 10 accounts with posts | profiles: $0.000225 per record |
| A creator vetting check | profiles, posts | Up to 50 posts | profiles: $0.000225 per record |
| A topic dataset for research | searchPosts | Up to 50 posts | searchPosts: $0.000225 per record |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Quote the first call for free: send the searchPosts request with "estimateOnly": true and read the price before anything is spent.
3. Run the same call with "maxUsd" set as a ceiling, and keep the rows it returns.
4. Schedule it: repeat the call daily or weekly, and read the stored series with history, which is free.

## Operations used

- [X Post Search API](https://apiforagents.dev/platforms/x_twitter/post-search-api): $0.000225 per record. Find POSTS by keyword.
- [X Profile API](https://apiforagents.dev/platforms/x_twitter/profile-api): $0.000225 per record. Profile cards for up to ten accounts, by @handle or pasted profile URL.
- [X Posts API](https://apiforagents.dev/platforms/x_twitter/posts-api): $0.000225 per record. One account's recent posts with engagement.
- [X Account Search API](https://apiforagents.dev/platforms/x_twitter/account-search-api): $0.000225 per record. Find ACCOUNTS by keyword.

## Questions

### Where should the handles come from?

From evidence: an account search, a post you read, or a pasted URL. A handle typed from a guess can belong to someone else and is still charged.

### Do I need a X / Twitter account to build these?

No. The API reads public data and never asks for your login, password or cookie.

### What does a run cost?

X / Twitter records are priced from $0.000225 per record. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 11 things to build with Reddit data.

> Ideas to build with public Reddit data: pain point finders, subreddit digests, feedback radars and research assistants, each with the operations it calls.

Canonical: https://apiforagents.dev/ideas/reddit-data · Updated 2026-10-21

Reddit data is good for hearing how people describe their problems and what they think of products, in their own words. Each idea below names the operations it calls, so you can quote it and run it.

- Operations: 5
- Price: from $0.0045 per record
- Free to start: $0.10

## The ideas

- **[A product feedback radar](https://apiforagents.dev/platforms/reddit/search-api).** For product teams. It searches Reddit for the product name, newest first, and sends each new thread to the team. Uses search.
- **[A pain point finder for founders](https://apiforagents.dev/platforms/reddit/search-api).** For founders testing an idea. It searches phrases like is there a tool for, then reads the top comments to see what people already use. Uses search and comments.
- **[A weekly subreddit digest](https://apiforagents.dev/platforms/reddit/subreddit-api).** For anyone who follows a few communities. It reads the top posts of the week in chosen subreddits and writes a short summary with links. Uses subreddit.
- **[A competitor comparison tracker](https://apiforagents.dev/platforms/reddit/search-api).** For marketers. It searches threads that compare two products and reads the comments to see why people pick one. Uses search and comments.
- **[A launch thread tracker](https://apiforagents.dev/platforms/reddit/comments-api).** For teams who posted a launch. It reads the comments and charts the stored score and comment count, which are free to read. Uses comments and history.
- **[A content question bank](https://apiforagents.dev/platforms/reddit/subreddit-api).** For content and SEO teams. It reads top posts in a subreddit and their comments to list the questions people keep asking. Uses subreddit and comments.
- **[A rising topic alert](https://apiforagents.dev/platforms/reddit/subreddit-api).** For community and news teams. It reads the rising listing of a subreddit and flags posts that climb fast. Uses subreddit.
- **[A customer research assistant](https://apiforagents.dev/platforms/reddit/search-api).** For researchers asked what people say about something. An agent searches, reads the comments and answers with quotes and links. Uses search and comments.
- **[A buying advice helper](https://apiforagents.dev/platforms/reddit/search-api).** For shoppers comparing products. It finds threads where people recommend products in a category and summarises the reasons, with links. Uses search and comments.
- **[A moderator queue helper](https://apiforagents.dev/platforms/reddit/subreddit-api).** For volunteer moderators. It reads the newest posts in their subreddit and flags the ones a human should look at first. Uses subreddit.
- **[A discussion dataset](https://apiforagents.dev/platforms/reddit/search-api).** For researchers and students. It collects posts on a topic across Reddit into a table for later study. Uses search and subreddit.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A product feedback radar | search | Up to 50 posts | search: $0.0045 per record |
| A pain point finder for founders | search, comments | Up to 50 posts | search: $0.0045 per record |
| A weekly subreddit digest | subreddit | Up to 50 posts per subreddit | subreddit: $0.0045 per record |
| A competitor comparison tracker | search, comments | Up to 50 posts | search: $0.0045 per record |
| A launch thread tracker | comments, history | Up to 100 comments | comments: $0.0045 per record |
| A content question bank | subreddit, comments | Up to 50 posts | subreddit: $0.0045 per record |
| A rising topic alert | subreddit | Up to 50 posts | subreddit: $0.0045 per record |
| A customer research assistant | search, comments | Up to 50 posts | search: $0.0045 per record |
| A buying advice helper | search, comments | Up to 50 posts | search: $0.0045 per record |
| A moderator queue helper | subreddit | Up to 50 posts | subreddit: $0.0045 per record |
| A discussion dataset | search, subreddit | Up to 50 posts | search: $0.0045 per record |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Quote the first call for free: send the search request with "estimateOnly": true and read the price before anything is spent.
3. Run the same call with "maxUsd" set as a ceiling, and keep the rows it returns.
4. Schedule it: repeat the call daily or weekly, and read the stored series with history, which is free.

## Operations used

- [Reddit Search API](https://apiforagents.dev/platforms/reddit/search-api): $0.0045 per record. Posts across all of Reddit matching a keyword.
- [Reddit Comments API](https://apiforagents.dev/platforms/reddit/comments-api): $0.0045 per record. Top comments on up to ten POSTS, by permalink or bare post id.
- [Reddit Subreddit API](https://apiforagents.dev/platforms/reddit/subreddit-api): $0.0045 per record. A subreddit's listing under one sort.

## Questions

### Can I read a single user's posts?

Yes. The posts operation returns one user's recent submissions with score, comment count and upvote ratio.

### Do I need a Reddit account to build these?

No. The API reads public data and never asks for your login, password or cookie.

### What does a run cost?

Reddit records are priced from $0.0045 per record. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 12 things to build with TikTok data.

> Ideas to build with public TikTok data: creator discovery, hashtag and sound trackers, TikTok Shop price watches and campaign reports, by operation.

Canonical: https://apiforagents.dev/ideas/tiktok-data · Updated 2026-10-21

TikTok data is good for finding creators, following trends by hashtag or sound, and reading products in TikTok Shop. Each idea below names the operations it calls, so you can quote it and run it.

- Operations: 9
- Price: from $0.00045 per record
- Free to start: $0.10

## The ideas

- **[A creator discovery tool](https://apiforagents.dev/platforms/tiktok/account-search-api).** For brands and agencies. It finds accounts by keyword, and every hit comes back as a full profile with followers, likes and video count. Uses search.
- **[A hashtag trend board](https://apiforagents.dev/platforms/tiktok/video-search-api).** For social teams. It reads posts under chosen hashtags and ranks them by views, likes and shares. Uses searchPosts.
- **[A sound tracker for music teams](https://apiforagents.dev/platforms/tiktok/video-search-api).** For labels and artist managers. It reads posts that use a track by its sound URL and shows how they perform. Uses searchPosts.
- **[A TikTok Shop price watch](https://apiforagents.dev/platforms/tiktok/shop-api).** For sellers. It searches Shop products for a keyword and records price, discount and sold count for each. Uses shop.
- **[A product research list](https://apiforagents.dev/platforms/tiktok/shop-api).** For people deciding what to sell. It ranks Shop products in a niche by rating and sold count, with seller and stock per variant. Uses shop.
- **[A campaign results report](https://apiforagents.dev/platforms/tiktok/video-api).** For agencies running paid creators. It reads each campaign post by URL and reports views, likes, comments, shares and saves. Uses videos.
- **[A creator growth dashboard](https://apiforagents.dev/platforms/tiktok/profile-api).** For talent managers. It reads profile cards on a schedule and charts the stored follower and like counts, which are free to read. Uses profiles and history.
- **[A comment insight digest](https://apiforagents.dev/platforms/tiktok/comments-api).** For brands. It reads top-level comments on their posts and groups questions, praise and complaints. Uses comments.
- **[A competitor content tracker](https://apiforagents.dev/platforms/tiktok/posts-api).** For content teams. It reads a rival account's recent posts with sound, hashtags and duration, to see what they test. Uses posts.
- **[An audience sample for partnerships](https://apiforagents.dev/platforms/tiktok/followers-api).** For brands vetting a partner. It reads a sample of an account's followers, each a full profile, to see who follows it. Uses followers.
- **[A customer video finder](https://apiforagents.dev/platforms/tiktok/video-search-api).** For brands looking for customer videos to feature. It searches posts by the brand name and reads the creators' profiles before anyone asks for permission. Uses searchPosts and profiles.
- **[A trend research assistant](https://apiforagents.dev/platforms/tiktok/video-search-api).** For analysts asked what is popular about a topic this week. An agent searches posts, reads their comments and answers with links. Uses searchPosts and comments.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A creator discovery tool | search | Up to 100 accounts | search: $0.00045 per record |
| A hashtag trend board | searchPosts | Up to 100 posts | searchPosts: $0.0018 per record |
| A sound tracker for music teams | searchPosts | Up to 100 posts | searchPosts: $0.0018 per record |
| A TikTok Shop price watch | shop | Up to 100 products | shop: $0.013 per record |
| A product research list | shop | Up to 100 products | shop: $0.013 per record |
| A campaign results report | videos | Up to 10 posts | videos: $0.00045 per record |
| A creator growth dashboard | profiles, history | Up to 10 accounts | profiles: $0.0022 per record |
| A comment insight digest | comments | Up to 100 comments | comments: $0.00045 per record |
| A competitor content tracker | posts | Up to 100 posts | posts: $0.0018 per record |
| An audience sample for partnerships | followers | Up to 100 profiles | followers: $0.0009 per record |
| A customer video finder | searchPosts, profiles | Up to 100 posts | searchPosts: $0.0018 per record |
| A trend research assistant | searchPosts, comments | Up to 100 posts | searchPosts: $0.0018 per record |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Quote the first call for free: send the search request with "estimateOnly": true and read the price before anything is spent.
3. Run the same call with "maxUsd" set as a ceiling, and keep the rows it returns.
4. Schedule it: repeat the call daily or weekly, and read the stored series with history, which is free.

## Operations used

- [TikTok Video Search API](https://apiforagents.dev/platforms/tiktok/video-search-api): $0.0018 per record. Posts by keyword, by hashtag, or by sound URL.
- [TikTok Shop API](https://apiforagents.dev/platforms/tiktok/shop-api): $0.013 per record. TikTok Shop products for a keyword.
- [TikTok Profile API](https://apiforagents.dev/platforms/tiktok/profile-api): $0.0022 per record. Profile cards for up to ten accounts by @handle or profile URL.
- [TikTok Comments API](https://apiforagents.dev/platforms/tiktok/comments-api): $0.00045 per record. Top-level comments on up to ten posts by URL.
- [TikTok Account Search API](https://apiforagents.dev/platforms/tiktok/account-search-api): $0.00045 per record. Find accounts by keyword.
- [TikTok Video API](https://apiforagents.dev/platforms/tiktok/video-api): $0.00045 per record. Full cards for up to ten posts by video or photo URL.
- [TikTok Posts API](https://apiforagents.dev/platforms/tiktok/posts-api): $0.0018 per record. One account's recent posts.
- [TikTok Followers API](https://apiforagents.dev/platforms/tiktok/followers-api): $0.0009 per record. The followers OR following of up to five accounts, each row a full profile.

## Questions

### Can I search by hashtag and by sound in one call?

No. searchPosts takes exactly one of a keyword, a hashtag or a sound URL. Run one call for each.

### Do I need a TikTok account to build these?

No. The API reads public data and never asks for your login, password or cookie.

### What does a run cost?

TikTok records are priced from $0.00045 per record. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 13 things to build with Facebook data.

> Ideas to build with public Facebook data: ad trackers, page review monitors, event finders and Marketplace price checks, each with the operations used.

Canonical: https://apiforagents.dev/ideas/facebook-data · Updated 2026-10-21

Facebook data is good for watching what pages post and advertise, reading reviews, and finding events and Marketplace listings. Each idea below names the operations it calls, so you can quote it and run it.

- Operations: 10
- Price: from $0.0022 per record
- Free to start: $0.10

## The ideas

- **[A competitor ad tracker](https://apiforagents.dev/platforms/facebook/ad-library-api).** For growth teams and agencies. It reads every active ad a rival page runs, with creative, headline, call to action and dates, and flags new ones. Uses ads.
- **[A local business lead list](https://apiforagents.dev/platforms/facebook/page-api).** For agencies selling to small businesses. From a list of page URLs it reads category, contact, hours and whether the page runs ads. Uses pages.
- **[A page review monitor](https://apiforagents.dev/platforms/facebook/reviews-api).** For multi-location businesses. It reads new reviews and recommendations and sends low ones to the right manager. Uses reviews.
- **[A local events finder](https://apiforagents.dev/platforms/facebook/events-api).** For people looking for things to do. It searches events by keyword and shows date, venue, how many are going and ticket links. Uses events.
- **[An event vendor lead list](https://apiforagents.dev/platforms/facebook/events-api).** For caterers, photographers and venues. It finds events in their field and reads the host pages for public contact details. Uses events and pages.
- **[A Marketplace price check](https://apiforagents.dev/platforms/facebook/marketplace-api).** For buyers. It reads listings from a Marketplace search URL and shows price, condition and location so a fair price is clear. Uses marketplace.
- **[A resale pricing dataset](https://apiforagents.dev/platforms/facebook/marketplace-api).** For resellers and analysts. It reads listings in a category each week and keeps a table of asking prices by condition. Uses marketplace.
- **[A page growth dashboard](https://apiforagents.dev/platforms/facebook/page-api).** For social teams. It reads page cards on a schedule and charts the stored followers, talking-about and recommend series, which are free to read. Uses pages and history.
- **[A content benchmark](https://apiforagents.dev/platforms/facebook/posts-api).** For marketers. It reads a rival page's recent posts with reactions by type, shares and views. Uses posts.
- **[A reels performance tracker](https://apiforagents.dev/platforms/facebook/reels-api).** For video teams. It reads a page's recent reels with plays and duration and ranks them. Uses reels.
- **[A comment triage helper](https://apiforagents.dev/platforms/facebook/comments-api).** For community managers. It reads new comments on the page's posts, with replies, and lists the ones that need an answer. Uses comments.
- **[A public group digest](https://apiforagents.dev/platforms/facebook/posts-api).** For members of busy public groups. It reads the group's recent posts and writes a weekly summary with links. Uses posts.
- **[An ad activity signal for agencies](https://apiforagents.dev/platforms/facebook/page-api).** For ad agencies. It checks which pages on a list run ads and reads the live ones, so outreach can start from what a business already does. Uses pages and ads.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A competitor ad tracker | ads | Up to 100 ads | ads: $0.0045 per record |
| A local business lead list | pages | Up to 10 pages | pages: $0.009 per record |
| A page review monitor | reviews | Up to 100 reviews | reviews: $0.0022 per record |
| A local events finder | events | Up to 100 events | events: $0.009 per record |
| An event vendor lead list | events, pages | Up to 100 events | events: $0.009 per record |
| A Marketplace price check | marketplace | Up to 100 listings | marketplace: $0.009 per record |
| A resale pricing dataset | marketplace | Up to 100 listings | marketplace: $0.009 per record |
| A page growth dashboard | pages, history | Up to 10 pages | pages: $0.009 per record |
| A content benchmark | posts | Up to 100 posts | posts: $0.0045 per record |
| A reels performance tracker | reels | Up to 100 reels | reels: $0.0045 per record |
| A comment triage helper | comments | Up to 100 comments | comments: $0.0022 per record |
| A public group digest | posts | Up to 100 posts | posts: $0.0045 per record |
| An ad activity signal for agencies | pages, ads | Up to 10 pages | pages: $0.009 per record |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Quote the first call for free: send the pages request with "estimateOnly": true and read the price before anything is spent.
3. Run the same call with "maxUsd" set as a ceiling, and keep the rows it returns.
4. Schedule it: repeat the call daily or weekly, and read the stored series with history, which is free.

## Operations used

- [Facebook Page API](https://apiforagents.dev/platforms/facebook/page-api): $0.009 per record. Page cards for up to ten pages by URL or handle.
- [Facebook Ad Library API](https://apiforagents.dev/platforms/facebook/ad-library-api): $0.0045 per record. Every ad a page runs in Meta's Ad Library.
- [Facebook Events API](https://apiforagents.dev/platforms/facebook/events-api): $0.009 per record. Events by keyword.
- [Facebook Marketplace API](https://apiforagents.dev/platforms/facebook/marketplace-api): $0.009 per record. Marketplace listings from a category or search URL.
- [Facebook Posts API](https://apiforagents.dev/platforms/facebook/posts-api): $0.0045 per record. Recent posts of a page, profile or group.
- [Facebook Reviews API](https://apiforagents.dev/platforms/facebook/reviews-api): $0.0022 per record. Reviews/recommendations on up to five pages.
- [Facebook Reels API](https://apiforagents.dev/platforms/facebook/reels-api): $0.0045 per record. Recent reels of a page.
- [Facebook Comments API](https://apiforagents.dev/platforms/facebook/comments-api): $0.0022 per record. Comments on up to five posts, reels or photos by permalink.

## Questions

### Can I read private profiles or private groups?

No. Only public pages, public posts and public listings are read.

### Do I need a Facebook account to build these?

No. The API reads public data and never asks for your login, password or cookie.

### What does a run cost?

Facebook records are priced from $0.0022 per record. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 12 things to build with Amazon data.

> Ideas to build with public Amazon data: price drop alerts, rank trackers, review insight reports and shopping assistants, mapped to the operations used.

Canonical: https://apiforagents.dev/ideas/amazon-data · Updated 2026-10-21

Amazon data is good for watching prices, ranks and stock, and for reading what buyers say in reviews. Each idea below names the operations it calls, across twelve marketplaces, so you can quote it and run it.

- Operations: 4
- Price: from $0.00045 per record
- Free to start: $0.10

## The ideas

- **[A price drop alert](https://apiforagents.dev/platforms/amazon/product-api).** For shoppers waiting on a purchase. It reads products by ASIN each day and sends a note when the price falls below a set level. Uses products and history.
- **[A competitor price monitor for sellers](https://apiforagents.dev/platforms/amazon/product-api).** For brands and resellers. It reads rival products daily and charts price and best-sellers rank from the stored series, which is free. Uses products and history.
- **[A review insight report](https://apiforagents.dev/platforms/amazon/reviews-api).** For product teams. It reads customer reviews with rating, verified flag and text, and groups the complaints by theme. Uses reviews.
- **[A search rank tracker](https://apiforagents.dev/platforms/amazon/search-api).** For sellers. It runs a keyword search on one marketplace and records where each of their products ranks. Uses search.
- **[A product research list](https://apiforagents.dev/platforms/amazon/search-api).** For people choosing a product to launch. It searches a category keyword and compares price, rating, rating count and rank. Uses search.
- **[A cross-marketplace price comparison](https://apiforagents.dev/platforms/amazon/product-api).** For brands that sell in many countries. It reads the same ASIN on several marketplaces and puts the prices side by side. Uses products.
- **[A listing quality checker](https://apiforagents.dev/platforms/amazon/product-api).** For agencies managing listings. It compares images, specs and variants on a client's product with the top competitors. Uses products and search.
- **[A stock and seller watch](https://apiforagents.dev/platforms/amazon/product-api).** For brands. It reads availability and seller on their products and flags when either changes. Uses products.
- **[A shopping assistant](https://apiforagents.dev/platforms/amazon/search-api).** For shoppers. An agent searches a category, reads the reviews of the top results and explains the trade-offs with links. Uses search and reviews.
- **[A deal finder](https://apiforagents.dev/platforms/amazon/search-api).** For deal newsletters and shoppers. It searches a category and keeps the hits with the deal flag, with list price and price side by side. Uses search.
- **[A product gap finder](https://apiforagents.dev/platforms/amazon/search-api).** For founders and product teams. It reads the low-star reviews of top sellers in a category to list what buyers wish were different. Uses search and reviews.
- **[A demand trend dataset](https://apiforagents.dev/platforms/amazon/product-api).** For analysts. It reads products on a schedule and keeps the stored bought-past-month and rank series, which are free to read. Uses products and history.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A price drop alert | products, history | Up to 10 products | products: $0.0014 per record |
| A competitor price monitor for sellers | products, history | Up to 10 products | products: $0.0014 per record |
| A review insight report | reviews | Up to 100 reviews per product | reviews: $0.00045 per record |
| A search rank tracker | search | Up to 50 products | search: $0.00045 per record |
| A product research list | search | Up to 50 products | search: $0.00045 per record |
| A cross-marketplace price comparison | products | Up to 10 products per marketplace | products: $0.0014 per record |
| A listing quality checker | products, search | Up to 10 products | products: $0.0014 per record |
| A stock and seller watch | products | Up to 10 products | products: $0.0014 per record |
| A shopping assistant | search, reviews | Up to 50 products | search: $0.00045 per record |
| A deal finder | search | Up to 50 products | search: $0.00045 per record |
| A product gap finder | search, reviews | Up to 100 reviews per product | search: $0.00045 per record |
| A demand trend dataset | products, history | Up to 10 products | products: $0.0014 per record |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Quote the first call for free: send the products request with "estimateOnly": true and read the price before anything is spent.
3. Run the same call with "maxUsd" set as a ceiling, and keep the rows it returns.
4. Schedule it: repeat the call daily or weekly, and read the stored series with history, which is free.

## Operations used

- [Amazon Product API](https://apiforagents.dev/platforms/amazon/product-api): $0.0014 per record. Full product cards for up to ten products.
- [Amazon Search API](https://apiforagents.dev/platforms/amazon/search-api): $0.00045 per record. Keyword search on one marketplace.
- [Amazon Reviews API](https://apiforagents.dev/platforms/amazon/reviews-api): $0.00045 per record. Customer reviews for up to ten products.

## Questions

### Which Amazon marketplaces are covered?

com, in, co.uk, de, fr, it, es, ca, com.au, co.jp, com.mx and com.br. Pick one per call.

### Do I need a Amazon account to build these?

No. The API reads public data and never asks for your login, password or cookie.

### What does a run cost?

Amazon records are priced from $0.00045 per record. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 10 things to build with Shopify data.

> Ideas to build with public Shopify store data: catalogue watches, price change alerts, stock-out monitors and product feeds, each with the operations used.

Canonical: https://apiforagents.dev/ideas/shopify-data · Updated 2026-10-21

Shopify data is good for reading a store's full catalogue and watching prices, sales and stock change over time. Each idea below names the operations it calls, so you can quote it and run it.

- Operations: 2
- Price: from $0.0009 per record
- Free to start: $0.10

## The ideas

- **[A competitor catalogue watch](https://apiforagents.dev/platforms/shopify/products-api).** For direct-to-consumer brands. It reads a rival store's catalogue each week and lists products that are new since the last run. Uses products.
- **[A price change alert](https://apiforagents.dev/platforms/shopify/products-api).** For brands and buyers. It charts each product's price range from the stored series, which is free, and flags changes. Uses products and history.
- **[A sale tracker](https://apiforagents.dev/platforms/shopify/products-api).** For deal sites and shoppers. It reads the sale flag across a set of stores and lists what is on sale today. Uses products.
- **[A stock-out monitor](https://apiforagents.dev/platforms/shopify/products-api).** For brands that sell through independent retailers. It checks stock on their products in each retailer's store. Uses products and history.
- **[A product feed for a comparison site](https://apiforagents.dev/platforms/shopify/products-api).** For small comparison and gift sites. It gathers products from several stores into one list with price, stock and variants. Uses products.
- **[A reseller price check](https://apiforagents.dev/platforms/shopify/products-api).** For brands. It reads the stores that carry their products and compares the prices they show. Uses products.
- **[A niche market map](https://apiforagents.dev/platforms/shopify/products-api).** For founders and analysts. It compares catalogue size, price ranges and variant counts across stores in one niche. Uses products.
- **[A pricing research dataset](https://apiforagents.dev/platforms/shopify/products-api).** For analysts. It reads stores on a schedule and keeps the stored price and stock series for later study. Uses products and history.
- **[A gift finder agent](https://apiforagents.dev/platforms/shopify/products-api).** For shoppers. An agent reads a short list of independent stores and suggests products in a price range that are in stock. Uses products.
- **[A store qualifier for app and agency sellers](https://apiforagents.dev/platforms/shopify/products-api).** For agencies and app makers selling to stores. It reads a store's catalogue size and variant counts to see whether it fits. Uses products.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A competitor catalogue watch | products | Up to 100 products per store | products: $0.0009 per record |
| A price change alert | products, history | Up to 100 products per store | products: $0.0009 per record |
| A sale tracker | products | Up to 5 stores | products: $0.0009 per record |
| A stock-out monitor | products, history | Up to 5 stores | products: $0.0009 per record |
| A product feed for a comparison site | products | Up to 100 products per store | products: $0.0009 per record |
| A reseller price check | products | Up to 5 stores | products: $0.0009 per record |
| A niche market map | products | Up to 5 stores | products: $0.0009 per record |
| A pricing research dataset | products, history | Up to 5 stores | products: $0.0009 per record |
| A gift finder agent | products | Up to 100 products per store | products: $0.0009 per record |
| A store qualifier for app and agency sellers | products | Up to 5 stores | products: $0.0009 per record |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Quote the first call for free: send the products request with "estimateOnly": true and read the price before anything is spent.
3. Run the same call with "maxUsd" set as a ceiling, and keep the rows it returns.
4. Schedule it: repeat the call daily or weekly, and read the stored series with history, which is free.

## Operations used

- [Shopify Products API](https://apiforagents.dev/platforms/shopify/products-api): $0.0009 per record. The catalogue of up to five Shopify storefronts.

## Questions

### What do I pass in?

Up to five storefronts per call, by store URL. Each returns its products with price range, sale flag, stock, variants and options.

### Do I need a Shopify account to build these?

No. The API reads public data and never asks for your login, password or cookie.

### What does a run cost?

Shopify records are priced from $0.0009 per record. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 10 things to build with Farfetch data.

> Ideas to build with public Farfetch data: designer price drop alerts, size alerts, sale page monitors and personal shopper agents, by operation.

Canonical: https://apiforagents.dev/ideas/farfetch-data · Updated 2026-10-21

Farfetch data is good for watching designer prices, discounts and size availability across boutiques. Each idea below names the operations it calls, so you can quote it and run it.

- Operations: 4
- Price: from $0.0009 per record
- Free to start: $0.10

## The ideas

- **[A designer price drop alert](https://apiforagents.dev/platforms/farfetch/product-api).** For shoppers watching a piece. It reads the product each day and sends a note when the discount grows. Uses products and history.
- **[A size back-in-stock alert](https://apiforagents.dev/platforms/farfetch/product-api).** For shoppers waiting on a size. It reads per-size availability and flags when the size returns. Uses products.
- **[A sale page monitor](https://apiforagents.dev/platforms/farfetch/listings-api).** For deal newsletters. It reads a sale listing page and lists items that are new since the last run. Uses listing.
- **[A brand pricing report](https://apiforagents.dev/platforms/farfetch/search-api).** For brands and wholesale teams. It searches the brand name and reports prices and discounts across boutiques. Uses search.
- **[A boutique map for a designer](https://apiforagents.dev/platforms/farfetch/search-api).** For brand teams. It reads the seller boutique on each of the designer's products to see who carries what. Uses search and products.
- **[A markdown timing dataset](https://apiforagents.dev/platforms/farfetch/listings-api).** For analysts and buyers. It reads a category listing on a schedule and keeps the stored discount series, which is free. Uses listing and history.
- **[A resale pricing reference](https://apiforagents.dev/platforms/farfetch/search-api).** For resellers. It compares a piece's current price and full price with what they plan to ask. Uses search.
- **[A personal shopper agent](https://apiforagents.dev/platforms/farfetch/search-api).** For shoppers. An agent searches for a described item and keeps only pieces in their size and budget. Uses search and products.
- **[A category assortment tracker](https://apiforagents.dev/platforms/farfetch/listings-api).** For multi-brand retailers. It reads a category page and counts products by designer each week. Uses listing.
- **[A designer sale share report](https://apiforagents.dev/platforms/farfetch/listings-api).** For fashion analysts. It reads designer listing pages and compares how much of each is discounted. Uses listing.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A designer price drop alert | products, history | Up to 10 products | products: $0.0009 per record |
| A size back-in-stock alert | products | Up to 10 products | products: $0.0009 per record |
| A sale page monitor | listing | Up to 100 products | listing: $0.0009 per record |
| A brand pricing report | search | Up to 100 products | search: $0.0009 per record |
| A boutique map for a designer | search, products | Up to 100 products | search: $0.0009 per record |
| A markdown timing dataset | listing, history | Up to 100 products | listing: $0.0009 per record |
| A resale pricing reference | search | Up to 100 products | search: $0.0009 per record |
| A personal shopper agent | search, products | Up to 100 products | search: $0.0009 per record |
| A category assortment tracker | listing | Up to 100 products | listing: $0.0009 per record |
| A designer sale share report | listing | Up to 100 products | listing: $0.0009 per record |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Quote the first call for free: send the products request with "estimateOnly": true and read the price before anything is spent.
3. Run the same call with "maxUsd" set as a ceiling, and keep the rows it returns.
4. Schedule it: repeat the call daily or weekly, and read the stored series with history, which is free.

## Operations used

- [Farfetch Product API](https://apiforagents.dev/platforms/farfetch/product-api): $0.0009 per record. Full product detail for up to ten Farfetch product URLs or item ids.
- [Farfetch Listings API](https://apiforagents.dev/platforms/farfetch/listings-api): $0.0009 per record. Any designer, category or sale listing page URL.
- [Farfetch Search API](https://apiforagents.dev/platforms/farfetch/search-api): $0.0009 per record. Keyword search across Farfetch.

## Questions

### Can I read any listing page?

Yes. listing takes any designer, category or sale listing page URL and returns its products in page order.

### Do I need a Farfetch account to build these?

No. The API reads public data and never asks for your login, password or cookie.

### What does a run cost?

Farfetch records are priced from $0.0009 per record. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 10 things to build with GOAT data.

> Ideas to build with public GOAT data: size-level price alerts, resale margin checks, release trackers and collection value trackers, by operation.

Canonical: https://apiforagents.dev/ideas/goat-data · Updated 2026-10-21

GOAT data is good for reading sneaker and apparel prices size by size, with the highest offer and retail price. Each idea below names the operations it calls, so you can quote it and run it.

- Operations: 4
- Price: from $0.0009 per record
- Free to start: $0.10

## The ideas

- **[A size-level price alert](https://apiforagents.dev/platforms/goat/product-api).** For buyers watching one pair. It reads the product and sends a note when the asking price in their size drops. Uses products.
- **[A resale margin calculator](https://apiforagents.dev/platforms/goat/product-api).** For resellers. It compares retail price with the asking price per size to show where the spread is. Uses products.
- **[A cross-market price check](https://apiforagents.dev/platforms/goat/product-api).** For resellers who list in more than one place. It reads GOAT prices to set beside StockX for the same product. Uses products.
- **[A brand release tracker](https://apiforagents.dev/platforms/goat/listings-api).** For sneaker blogs and collectors. It reads a brand or collection page and lists products that are new since the last run. Uses listing.
- **[A max offer watch for sellers](https://apiforagents.dev/platforms/goat/product-api).** For sellers holding stock. It tracks the highest offer on their products and flags when it rises. Uses products and history.
- **[A price history chart](https://apiforagents.dev/platforms/goat/product-api).** For collectors and analysts. It charts lowest ask and highest offer from the stored series, which is free to read. Uses products and history.
- **[A country price comparison](https://apiforagents.dev/platforms/goat/product-api).** For buyers and resellers. It reads the same products with different country codes to compare prices. Uses products.
- **[A collection value tracker](https://apiforagents.dev/platforms/goat/product-api).** For collectors. They list the pairs they own and see current asking prices and how they changed. Uses products and history.
- **[A sneaker search assistant](https://apiforagents.dev/platforms/goat/search-api).** For shoppers. An agent searches by keyword and keeps the hits available in their size. Uses search.
- **[A resale price dataset](https://apiforagents.dev/platforms/goat/listings-api).** For researchers and analysts. It reads brand pages and product details into a table of retail and asking prices. Uses listing and products.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A size-level price alert | products | Up to 10 products | products: $0.0009 per record |
| A resale margin calculator | products | Up to 10 products | products: $0.0009 per record |
| A cross-market price check | products | Up to 10 products | products: $0.0009 per record |
| A brand release tracker | listing | Up to 100 products | listing: $0.0009 per record |
| A max offer watch for sellers | products, history | Up to 10 products | products: $0.0009 per record |
| A price history chart | products, history | Up to 10 products | products: $0.0009 per record |
| A country price comparison | products | Up to 10 products | products: $0.0009 per record |
| A collection value tracker | products, history | Up to 10 products | products: $0.0009 per record |
| A sneaker search assistant | search | Up to 100 products | search: $0.0009 per record |
| A resale price dataset | listing, products | Up to 100 products | listing: $0.0009 per record |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Quote the first call for free: send the products request with "estimateOnly": true and read the price before anything is spent.
3. Run the same call with "maxUsd" set as a ceiling, and keep the rows it returns.
4. Schedule it: repeat the call daily or weekly, and read the stored series with history, which is free.

## Operations used

- [GOAT Product API](https://apiforagents.dev/platforms/goat/product-api): $0.0009 per record. Full detail for up to ten GOAT products by URL or slug.
- [GOAT Listings API](https://apiforagents.dev/platforms/goat/listings-api): $0.0009 per record. A brand or collection page URL.
- [GOAT Search API](https://apiforagents.dev/platforms/goat/search-api): $0.0009 per record. Keyword search on GOAT.

## Questions

### Can prices be read for other countries?

Yes. products, search and listing take a country code (ISO alpha-2).

### Do I need a GOAT account to build these?

No. The API reads public data and never asks for your login, password or cookie.

### What does a run cost?

GOAT records are priced from $0.0009 per record. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 10 things to build with StockX data.

> Ideas to build with public StockX data: market dashboards, bid and ask alerts, demand trackers and collection value tools, mapped to the operations used.

Canonical: https://apiforagents.dev/ideas/stockx-data · Updated 2026-10-21

StockX data is good for reading live resale markets: last sale, averages, sales counts and every size's ask and bid. Each idea below names the operations it calls, so you can quote it and run it.

- Operations: 4
- Price: from $0.0009 per record
- Free to start: $0.10

## The ideas

- **[A product market dashboard](https://apiforagents.dev/platforms/stockx/product-api).** For resellers. It shows last sale, 90-day average and sales counts for the products they trade. Uses products.
- **[A size-level bid and ask alert](https://apiforagents.dev/platforms/stockx/product-api).** For traders. It reads every size's ask and bid and flags when the gap in a size narrows. Uses products.
- **[A demand signal tracker](https://apiforagents.dev/platforms/stockx/product-api).** For analysts. It keeps the stored 72-hour and 90-day sales series, which are free, to see which products speed up. Uses products and history.
- **[A collection value tool](https://apiforagents.dev/platforms/stockx/product-api).** For collectors. They list what they own and see each item valued at its last sale. Uses products.
- **[A listing price helper](https://apiforagents.dev/platforms/stockx/product-api).** For sellers. It suggests an asking price from the last sale and the lowest ask in their size, for them to accept or change. Uses products.
- **[A category page monitor](https://apiforagents.dev/platforms/stockx/listings-api).** For blogs and stores. It reads a brand or category page and lists products that are new since the last run. Uses listing.
- **[A release week monitor](https://apiforagents.dev/platforms/stockx/product-api).** For resellers after a release. It reads the product daily and charts sales and last sale over the first days. Uses products and history.
- **[A cross-market spread finder](https://apiforagents.dev/platforms/stockx/product-api).** For resellers who list in two places. It reads StockX prices to set beside GOAT for the same product. Uses products.
- **[A resale price dataset](https://apiforagents.dev/platforms/stockx/search-api).** For researchers. It searches a category and keeps 12-month averages and sales counts for each product. Uses search and products.
- **[A below-average deal finder](https://apiforagents.dev/platforms/stockx/product-api).** For buyers. It flags products whose lowest ask sits under their 12-month average price. Uses products.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A product market dashboard | products | Up to 10 products | products: $0.0009 per record |
| A size-level bid and ask alert | products | Up to 10 products | products: $0.0009 per record |
| A demand signal tracker | products, history | Up to 10 products | products: $0.0009 per record |
| A collection value tool | products | Up to 10 products | products: $0.0009 per record |
| A listing price helper | products | Up to 10 products | products: $0.0009 per record |
| A category page monitor | listing | Up to 100 products | listing: $0.0009 per record |
| A release week monitor | products, history | Up to 10 products | products: $0.0009 per record |
| A cross-market spread finder | products | Up to 10 products | products: $0.0009 per record |
| A resale price dataset | search, products | Up to 100 products | search: $0.0009 per record |
| A below-average deal finder | products | Up to 10 products | products: $0.0009 per record |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Quote the first call for free: send the products request with "estimateOnly": true and read the price before anything is spent.
3. Run the same call with "maxUsd" set as a ceiling, and keep the rows it returns.
4. Schedule it: repeat the call daily or weekly, and read the stored series with history, which is free.

## Operations used

- [StockX Product API](https://apiforagents.dev/platforms/stockx/product-api): $0.0009 per record. Full detail with live market data for up to ten StockX products.
- [StockX Listings API](https://apiforagents.dev/platforms/stockx/listings-api): $0.0009 per record. A brand or category page URL.
- [StockX Search API](https://apiforagents.dev/platforms/stockx/search-api): $0.0009 per record. Keyword search on StockX.

## Questions

### Is the market data per size?

Yes. products returns every size's ask, bid and last sale, next to the product's overall averages.

### Do I need a StockX account to build these?

No. The API reads public data and never asks for your login, password or cookie.

### What does a run cost?

StockX records are priced from $0.0009 per record. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 10 things to build with Blinkit data.

> Ideas to build with public Blinkit data: pincode price trackers, stock-out monitors, search rank trackers and basket cost tools, each with its operations.

Canonical: https://apiforagents.dev/ideas/blinkit-data · Updated 2026-10-21

Blinkit data is good for seeing price, discount, stock and search rank as a shopper at one store sees them. Each idea below names the operations it calls, so you can quote it and run it.

- Operations: 4
- Price: from $0.0009 per record
- Free to start: $0.10

## The ideas

- **[A price and discount tracker by pincode](https://apiforagents.dev/platforms/blinkit/price-and-stock-api).** For brand and pricing teams. It reads their products at stores in chosen pincodes and records price, MRP and discount. Uses products and history.
- **[A stock-out monitor for brands](https://apiforagents.dev/platforms/blinkit/price-and-stock-api).** For sales teams at packaged goods brands. It reads stock counts at chosen stores and flags items that run out. Uses products.
- **[A search rank tracker](https://apiforagents.dev/platforms/blinkit/search-api).** For brand teams. It searches the words a shopper types and records where each of their products ranks. Uses search.
- **[A category assortment report](https://apiforagents.dev/platforms/blinkit/category-api).** For category managers. It reads one category page at a store and lists every product with price and stock. Uses category.
- **[A city price comparison](https://apiforagents.dev/platforms/blinkit/price-and-stock-api).** For pricing analysts. It reads the same products at stores in different cities and compares price and discount. Uses products.
- **[A competitor launch watch](https://apiforagents.dev/platforms/blinkit/category-api).** For brand teams. It reads a category page each week and lists products that are new since the last run. Uses category.
- **[A weekly basket cost tracker](https://apiforagents.dev/platforms/blinkit/price-and-stock-api).** For households and journalists. It prices the same basket of products at one store each week. Uses products and history.
- **[An MRP and selling price audit](https://apiforagents.dev/platforms/blinkit/price-and-stock-api).** For brands. It compares MRP with the selling price on their products across stores. Uses products.
- **[A rating watch](https://apiforagents.dev/platforms/blinkit/price-and-stock-api).** For brand teams. It charts rating and rating count from the stored series, which is free to read. Uses products and history.
- **[A distribution check](https://apiforagents.dev/platforms/blinkit/search-api).** For sales teams. It searches for the brand at stores in many pincodes to see where it shows up. Uses search.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A price and discount tracker by pincode | products, history | Up to 10 products | products: $0.0009 per record |
| A stock-out monitor for brands | products | Up to 10 products | products: $0.0009 per record |
| A search rank tracker | search | Up to 100 listings | search: $0.0009 per record |
| A category assortment report | category | Up to 100 products | category: $0.0009 per record |
| A city price comparison | products | Up to 10 products per store | products: $0.0009 per record |
| A competitor launch watch | category | Up to 100 products | category: $0.0009 per record |
| A weekly basket cost tracker | products, history | Up to 10 products | products: $0.0009 per record |
| An MRP and selling price audit | products | Up to 10 products | products: $0.0009 per record |
| A rating watch | products, history | Up to 10 products | products: $0.0009 per record |
| A distribution check | search | Up to 100 listings | search: $0.0009 per record |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Quote the first call for free: send the search request with "estimateOnly": true and read the price before anything is spent.
3. Run the same call with "maxUsd" set as a ceiling, and keep the rows it returns.
4. Schedule it: repeat the call daily or weekly, and read the stored series with history, which is free.

## Operations used

- [Blinkit Price and Stock API](https://apiforagents.dev/platforms/blinkit/price-and-stock-api): $0.0009 per record. Full product detail at one store.
- [Blinkit Search API](https://apiforagents.dev/platforms/blinkit/search-api): $0.0009 per record. Search the app as a shopper at that store would.
- [Blinkit Category API](https://apiforagents.dev/platforms/blinkit/category-api): $0.0009 per record. One category page at one store.

## Questions

### How do I choose the store?

Every call takes a store: by store id, or by city, pincode, or latitude and longitude. Prices and stock are what a shopper at that store sees.

### Do I need a Blinkit account to build these?

No. The API reads public data and never asks for your login, password or cookie.

### What does a run cost?

Blinkit records are priced from $0.0009 per record. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 10 things to build with Instamart data.

> Ideas to build with public Swiggy Instamart data: shelf rank trackers, price checks by pincode, stock monitors and category reports, by operation.

Canonical: https://apiforagents.dev/ideas/instamart-data · Updated 2026-10-21

Swiggy Instamart data is good for seeing price, stock and search rank as a shopper at one store sees them. Each idea below names the operations it calls, so you can quote it and run it.

- Operations: 4
- Price: from $0.0009 per record
- Free to start: $0.10

## The ideas

- **[A digital shelf rank tracker](https://apiforagents.dev/platforms/instamart/search-api).** For brand teams. It searches the terms shoppers type at a store and records the rank of each of their products. Uses search.
- **[A pincode price check](https://apiforagents.dev/platforms/instamart/price-and-stock-api).** For pricing analysts. It reads products at stores in chosen pincodes and records price, MRP and discount. Uses products.
- **[A stock alert for brands](https://apiforagents.dev/platforms/instamart/price-and-stock-api).** For sales teams. It reads stock counts at chosen stores and flags products that run low or out. Uses products and history.
- **[A category shelf report](https://apiforagents.dev/platforms/instamart/category-api).** For category managers. It reads one category page at a store with price and stock for every product. Uses category.
- **[A new product watch](https://apiforagents.dev/platforms/instamart/category-api).** For competitors and analysts. It reads a category page each week and lists products that were not there before. Uses category.
- **[A discount depth chart](https://apiforagents.dev/platforms/instamart/price-and-stock-api).** For pricing teams. It charts discount from the stored series, which is free, to see how often a product goes on offer. Uses products and history.
- **[A grocery list pricer](https://apiforagents.dev/platforms/instamart/price-and-stock-api).** For shoppers and household budget apps. It prices a fixed list of products at one store each week. Uses products.
- **[A cross-app price comparison](https://apiforagents.dev/platforms/instamart/price-and-stock-api).** For analysts. It reads Instamart prices to set beside Blinkit and Zepto for the same products in one area. Uses products.
- **[A seller and manufacturer check](https://apiforagents.dev/platforms/instamart/search-api).** For brands. It reads seller and manufacturer on listings of their products to spot unexpected sellers. Uses search and products.
- **[A rating tracker](https://apiforagents.dev/platforms/instamart/price-and-stock-api).** For brand teams. It charts rating and rating count from the stored series. Uses products and history.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A digital shelf rank tracker | search | Up to 100 listings | search: $0.0009 per record |
| A pincode price check | products | Up to 10 products | products: $0.0009 per record |
| A stock alert for brands | products, history | Up to 10 products | products: $0.0009 per record |
| A category shelf report | category | Up to 100 products | category: $0.0009 per record |
| A new product watch | category | Up to 100 products | category: $0.0009 per record |
| A discount depth chart | products, history | Up to 10 products | products: $0.0009 per record |
| A grocery list pricer | products | Up to 10 products | products: $0.0009 per record |
| A cross-app price comparison | products | Up to 10 products | products: $0.0009 per record |
| A seller and manufacturer check | search, products | Up to 100 listings | search: $0.0009 per record |
| A rating tracker | products, history | Up to 10 products | products: $0.0009 per record |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Quote the first call for free: send the search request with "estimateOnly": true and read the price before anything is spent.
3. Run the same call with "maxUsd" set as a ceiling, and keep the rows it returns.
4. Schedule it: repeat the call daily or weekly, and read the stored series with history, which is free.

## Operations used

- [Instamart Price and Stock API](https://apiforagents.dev/platforms/instamart/price-and-stock-api): $0.0009 per record. Full product detail at one store.
- [Instamart Search API](https://apiforagents.dev/platforms/instamart/search-api): $0.0009 per record. Search the app as a shopper at that store would.
- [Instamart Category API](https://apiforagents.dev/platforms/instamart/category-api): $0.0009 per record. One category page at one store.

## Questions

### How do I choose the store?

Every call takes a store: by store id, or by city, pincode, or latitude and longitude. A category name must match the app's own menu, or the call is refused and nothing is charged.

### Do I need a Swiggy Instamart account to build these?

No. The API reads public data and never asks for your login, password or cookie.

### What does a run cost?

Swiggy Instamart records are priced from $0.0009 per record. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 10 things to build with Zepto data.

> Ideas to build with public Zepto data: price and stock monitors, search rank trackers, assortment reports and basket pricers, each with its operations.

Canonical: https://apiforagents.dev/ideas/zepto-data · Updated 2026-10-21

Zepto data is good for reading what a shopper at one store sees: price, MRP, discount, stock and rank. Each idea below names the operations it calls, so you can quote it and run it.

- Operations: 4
- Price: from $0.0009 per record
- Free to start: $0.10

## The ideas

- **[A brand price monitor](https://apiforagents.dev/platforms/zepto/price-and-stock-api).** For brand and pricing teams. It reads their products at chosen stores daily and records price and discount. Uses products and history.
- **[An out-of-stock alert](https://apiforagents.dev/platforms/zepto/price-and-stock-api).** For sales teams. It reads stock counts at chosen stores and flags items that run out. Uses products.
- **[A search visibility tracker](https://apiforagents.dev/platforms/zepto/search-api).** For brand teams. It searches the terms shoppers use and records where each product ranks. Uses search.
- **[An assortment report](https://apiforagents.dev/platforms/zepto/category-api).** For category managers. It reads a category page at a store and lists every product with price and stock. Uses category.
- **[A competitor range watch](https://apiforagents.dev/platforms/zepto/category-api).** For brand teams. It reads a category page weekly and lists new products. Uses category.
- **[A city-by-city price report](https://apiforagents.dev/platforms/zepto/price-and-stock-api).** For analysts. It reads the same products at stores in different cities and compares the prices. Uses products.
- **[A household basket pricer](https://apiforagents.dev/platforms/zepto/price-and-stock-api).** For shoppers and personal finance apps. It prices the same basket at one store every week. Uses products and history.
- **[A pack size value check](https://apiforagents.dev/platforms/zepto/search-api).** For shoppers and consumer writers. It reads specifications and price to compare value across pack sizes. Uses search and products.
- **[A rating and review count tracker](https://apiforagents.dev/platforms/zepto/price-and-stock-api).** For brand teams. It charts rating and rating count from the stored series, which is free. Uses products and history.
- **[A distribution map](https://apiforagents.dev/platforms/zepto/search-api).** For sales teams. It searches for the brand at stores in many pincodes and maps where it is listed. Uses search.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A brand price monitor | products, history | Up to 10 products | products: $0.0009 per record |
| An out-of-stock alert | products | Up to 10 products | products: $0.0009 per record |
| A search visibility tracker | search | Up to 100 listings | search: $0.0009 per record |
| An assortment report | category | Up to 100 products | category: $0.0009 per record |
| A competitor range watch | category | Up to 100 products | category: $0.0009 per record |
| A city-by-city price report | products | Up to 10 products per store | products: $0.0009 per record |
| A household basket pricer | products, history | Up to 10 products | products: $0.0009 per record |
| A pack size value check | search, products | Up to 100 listings | search: $0.0009 per record |
| A rating and review count tracker | products, history | Up to 10 products | products: $0.0009 per record |
| A distribution map | search | Up to 100 listings | search: $0.0009 per record |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Quote the first call for free: send the search request with "estimateOnly": true and read the price before anything is spent.
3. Run the same call with "maxUsd" set as a ceiling, and keep the rows it returns.
4. Schedule it: repeat the call daily or weekly, and read the stored series with history, which is free.

## Operations used

- [Zepto Price and Stock API](https://apiforagents.dev/platforms/zepto/price-and-stock-api): $0.0009 per record. Full product detail at one store.
- [Zepto Search API](https://apiforagents.dev/platforms/zepto/search-api): $0.0009 per record. Search the app as a shopper at that store would.
- [Zepto Category API](https://apiforagents.dev/platforms/zepto/category-api): $0.0009 per record. One category page at one store.

## Questions

### How do I choose the store?

Every call takes a store: by store id, or by city, pincode, or latitude and longitude.

### Do I need a Zepto account to build these?

No. The API reads public data and never asks for your login, password or cookie.

### What does a run cost?

Zepto records are priced from $0.0009 per record. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 10 things to build with Indeed data.

> Ideas to build with public Indeed data: hiring-signal lead lists, salary benchmarks, job alert agents and skills reports, mapped to the operations used.

Canonical: https://apiforagents.dev/ideas/indeed-data · Updated 2026-10-21

Indeed data is good for reading who is hiring, for what, where and at what pay, across 23 countries. Each idea below names the operations it calls, so you can quote it and run it.

- Operations: 2
- Price: from $0.000045 per record
- Free to start: $0.10

## The ideas

- **[A hiring-signal lead list](https://apiforagents.dev/platforms/indeed/jobs-api).** For vendors whose product fits a growing team. It searches new postings for a role and lists the employers posting them. Uses search.
- **[A salary benchmark](https://apiforagents.dev/platforms/indeed/jobs-api).** For HR teams and job seekers. It reads postings for a role in a place and summarises the salaries they list. Uses search.
- **[A job alert agent](https://apiforagents.dev/platforms/indeed/jobs-api).** For job seekers. It runs a search for postings from the last day, newest first, and sends the matches each morning. Uses search.
- **[A skills demand report](https://apiforagents.dev/platforms/indeed/jobs-api).** For training providers and students. It reads postings for a role and counts the skills they ask for. Uses search.
- **[A competitor hiring tracker](https://apiforagents.dev/platforms/indeed/jobs-api).** For strategy teams. It searches by a competitor's name each week to see which roles they open. Uses search.
- **[A remote job board](https://apiforagents.dev/platforms/indeed/jobs-api).** For niche job sites. It searches remote postings for a field in chosen countries and lists them. Uses search.
- **[A labour market dataset](https://apiforagents.dev/platforms/indeed/jobs-api).** For researchers and journalists. It keeps postings by role and country in a table for later study. Uses search.
- **[A posting detail refresher](https://apiforagents.dev/platforms/indeed/job-details-api).** For job aggregators. It re-reads full postings by job key to keep stored details current. Uses jobs.
- **[A staffing agency lead feed](https://apiforagents.dev/platforms/indeed/jobs-api).** For staffing firms. It searches contract and temporary postings and lists the employers behind them. Uses search.
- **[A career coach assistant](https://apiforagents.dev/platforms/indeed/jobs-api).** For career coaches and their clients. An agent reads postings for a target role and lists the common requirements. Uses search and jobs.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A hiring-signal lead list | search | Up to 100 postings | search: $0.000045 per record |
| A salary benchmark | search | Up to 100 postings | search: $0.000045 per record |
| A job alert agent | search | Up to 100 postings | search: $0.000045 per record |
| A skills demand report | search | Up to 100 postings | search: $0.000045 per record |
| A competitor hiring tracker | search | Up to 100 postings | search: $0.000045 per record |
| A remote job board | search | Up to 100 postings | search: $0.000045 per record |
| A labour market dataset | search | Up to 100 postings | search: $0.000045 per record |
| A posting detail refresher | jobs | Up to 10 postings | jobs: $0.000045 per record |
| A staffing agency lead feed | search | Up to 100 postings | search: $0.000045 per record |
| A career coach assistant | search, jobs | Up to 100 postings | search: $0.000045 per record |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Quote the first call for free: send the search request with "estimateOnly": true and read the price before anything is spent.
3. Run the same call with "maxUsd" set as a ceiling, and keep the rows it returns.
4. Schedule it: repeat the call daily or weekly and compare each run with the last one you kept.

## Operations used

- [Indeed Jobs API](https://apiforagents.dev/platforms/indeed/jobs-api): $0.000045 per record. Search Indeed the way a seeker would.
- [Indeed Job Details API](https://apiforagents.dev/platforms/indeed/job-details-api): $0.000045 per record. Full postings for up to ten Indeed job keys or job URLs.

## Questions

### Which countries can I search?

US, GB, CA, AU, IN, DE, FR, JP, BR, MX, IT, ES, NL, BE, CH, AT, SG, HK, IE, NZ, AR, CL and CO.

### Do I need a Indeed account to build these?

No. The API reads public data and never asks for your login, password or cookie.

### What does a run cost?

Indeed records are priced from $0.000045 per record. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 10 things to build with Naukri data.

> Ideas to build with public Naukri data: India hiring signals, job alerts, applicant competition trackers and campus hiring research, by operation.

Canonical: https://apiforagents.dev/ideas/naukri-data · Updated 2026-10-21

Naukri data is good for reading the Indian job market: who is hiring, for what experience, where and in what work mode. Each idea below names the operations it calls, so you can quote it and run it.

- Operations: 2
- Price: from $0.0018 per record
- Free to start: $0.10

## The ideas

- **[An India hiring-signal lead list](https://apiforagents.dev/platforms/naukri/jobs-api).** For B2B vendors selling in India. It searches new postings for a role and lists the companies hiring. Uses search.
- **[A salary band count](https://apiforagents.dev/platforms/naukri/jobs-api).** For HR teams. It runs the same search across salary filters to see how many postings fall in each band. Uses search.
- **[A daily job alert](https://apiforagents.dev/platforms/naukri/jobs-api).** For job seekers. It searches postings from the last day, newest first, and sends the matches. Uses search.
- **[A consultant demand tracker](https://apiforagents.dev/platforms/naukri/jobs-api).** For staffing firms. It filters postings by who posted them, company or consultant, to see where agencies are active. Uses search.
- **[An applicant competition tracker](https://apiforagents.dev/platforms/naukri/jobs-api).** For job seekers and recruiters. It charts applicants and views on postings from the stored series, which is free. Uses search and history.
- **[A work mode report](https://apiforagents.dev/platforms/naukri/jobs-api).** For analysts. It compares how many postings for a role are remote, hybrid or onsite. Uses search.
- **[An experience demand map](https://apiforagents.dev/platforms/naukri/jobs-api).** For training providers. It searches a role at different experience levels to see where demand sits. Uses search.
- **[A campus hiring research tool](https://apiforagents.dev/platforms/naukri/jobs-api).** For colleges and placement cells. It searches entry-level postings by course filters and lists the employers. Uses search.
- **[A competitor hiring watch](https://apiforagents.dev/platforms/naukri/jobs-api).** For strategy teams. It searches a competitor's name weekly to see which roles they open. Uses search.
- **[A city jobs dataset](https://apiforagents.dev/platforms/naukri/jobs-api).** For researchers and journalists. It keeps postings by role and city in a table for later study. Uses search.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| An India hiring-signal lead list | search | Up to 200 postings | search: $0.0018 per record |
| A salary band count | search | Up to 200 postings | search: $0.0018 per record |
| A daily job alert | search | Up to 200 postings | search: $0.0018 per record |
| A consultant demand tracker | search | Up to 200 postings | search: $0.0018 per record |
| An applicant competition tracker | search, history | Up to 200 postings | search: $0.0018 per record |
| A work mode report | search | Up to 200 postings | search: $0.0018 per record |
| An experience demand map | search | Up to 200 postings | search: $0.0018 per record |
| A campus hiring research tool | search | Up to 200 postings | search: $0.0018 per record |
| A competitor hiring watch | search | Up to 200 postings | search: $0.0018 per record |
| A city jobs dataset | search | Up to 200 postings | search: $0.0018 per record |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Quote the first call for free: send the search request with "estimateOnly": true and read the price before anything is spent.
3. Run the same call with "maxUsd" set as a ceiling, and keep the rows it returns.
4. Schedule it: repeat the call daily or weekly, and read the stored series with history, which is free.

## Operations used

- [Naukri Jobs API](https://apiforagents.dev/platforms/naukri/jobs-api): $0.0018 per record. Search Naukri.

## Questions

### Why do some filters take numbers?

Coded filters such as department, industry and company type take Naukri's own numeric ids, the same ones its search URLs carry. You can also paste a Naukri search URL as the query.

### Do I need a Naukri account to build these?

No. The API reads public data and never asks for your login, password or cookie.

### What does a run cost?

Naukri records are priced from $0.0018 per record. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 10 things to build with Upwork data.

> Ideas to build with public Upwork data: freelancer job feeds, agency lead finders, rate benchmarks and proposal helpers, each with the operations it calls.

Canonical: https://apiforagents.dev/ideas/upwork-data · Updated 2026-10-21

Upwork data is good for finding work that fits, judging clients and seeing what the market pays for a skill. Each idea below names the operations it calls, so you can quote it and run it.

- Operations: 2
- Price: from $0.0027 per record
- Free to start: $0.10

## The ideas

- **[A job feed for freelancers](https://apiforagents.dev/platforms/upwork/jobs-api).** For freelancers. It searches new postings for their skill within a budget or hourly range and sends the matches. Uses search.
- **[A lead finder for agencies](https://apiforagents.dev/platforms/upwork/jobs-api).** For small agencies. It searches postings with larger budgets from clients with a hiring history. Uses search.
- **[An hourly rate benchmark](https://apiforagents.dev/platforms/upwork/jobs-api).** For freelancers setting rates. It reads hourly ranges on postings for a skill and summarises them. Uses search.
- **[A competition check](https://apiforagents.dev/platforms/upwork/jobs-api).** For freelancers deciding where to bid. It charts proposals and interviews on postings from the stored series, which is free. Uses search and history.
- **[A skill demand tracker](https://apiforagents.dev/platforms/upwork/jobs-api).** For course creators and freelancers. It counts postings for a skill every week. Uses search.
- **[A client quality filter](https://apiforagents.dev/platforms/upwork/jobs-api).** For freelancers. It keeps postings from clients with a hiring history and reads the client profile on each. Uses search.
- **[A proposal drafting assistant](https://apiforagents.dev/platforms/upwork/jobs-api).** For freelancers. An agent reads a posting and drafts a reply for the freelancer to edit and send. Uses search.
- **[A long-term work finder](https://apiforagents.dev/platforms/upwork/jobs-api).** For freelancers who want steady work. It searches ongoing projects with full-time hours. Uses search.
- **[A client location report](https://apiforagents.dev/platforms/upwork/jobs-api).** For agencies. It searches postings by client location to see where demand for a service comes from. Uses search.
- **[An expert-level demand dataset](https://apiforagents.dev/platforms/upwork/jobs-api).** For researchers and educators. It keeps postings by skill and experience level in a table. Uses search.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A job feed for freelancers | search | Up to 100 postings | search: $0.0027 per record |
| A lead finder for agencies | search | Up to 100 postings | search: $0.0027 per record |
| An hourly rate benchmark | search | Up to 100 postings | search: $0.0027 per record |
| A competition check | search, history | Up to 100 postings | search: $0.0027 per record |
| A skill demand tracker | search | Up to 100 postings | search: $0.0027 per record |
| A client quality filter | search | Up to 100 postings | search: $0.0027 per record |
| A proposal drafting assistant | search | Up to 100 postings | search: $0.0027 per record |
| A long-term work finder | search | Up to 100 postings | search: $0.0027 per record |
| A client location report | search | Up to 100 postings | search: $0.0027 per record |
| An expert-level demand dataset | search | Up to 100 postings | search: $0.0027 per record |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Quote the first call for free: send the search request with "estimateOnly": true and read the price before anything is spent.
3. Run the same call with "maxUsd" set as a ceiling, and keep the rows it returns.
4. Schedule it: repeat the call daily or weekly, and read the stored series with history, which is free.

## Operations used

- [Upwork Jobs API](https://apiforagents.dev/platforms/upwork/jobs-api): $0.0027 per record. Search Upwork jobs with the marketplace's own filters.

## Questions

### Can I filter by fixed price and hourly work?

Yes. search can include hourly and fixed-price postings, with minimum and maximum rates or budgets.

### Do I need a Upwork account to build these?

No. The API reads public data and never asks for your login, password or cookie.

### What does a run cost?

Upwork records are priced from $0.0027 per record. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 10 things to build with work email and phone data.

> Ideas to build with work email and phone data, found by LinkedIn handle: sales outreach, CRM enrichment, recruiting and verified email lists.

Canonical: https://apiforagents.dev/ideas/work-email-and-phone-data · Updated 2026-10-21

Work email and phone data is good for reaching people who list their role publicly on LinkedIn: buyers, hiring managers and partners. Each idea below starts from a LinkedIn handle you found and uses one operation, reveal.

- Operations: 1
- Price: priced per call
- Free to start: $0.10
- Per call: Up to 10 people

## The ideas

- **[A sales outreach list from a people search](https://apiforagents.dev/platforms/contacts/work-email-and-phone-api).** For B2B sales teams. After a LinkedIn people search for a role, it gets the work email of each person a seller will write to, one by one. Uses reveal.
- **[A CRM enrichment step](https://apiforagents.dev/platforms/contacts/work-email-and-phone-api).** For revenue operations teams. It fills a missing work email on CRM records that already hold a LinkedIn URL. Uses reveal.
- **[A recruiter's contact step](https://apiforagents.dev/platforms/contacts/work-email-and-phone-api).** For recruiters with a shortlist. It gets the email or phone of each candidate so the recruiter can reach them directly. Uses reveal.
- **[A checked email list before a campaign](https://apiforagents.dev/platforms/contacts/work-email-and-phone-api).** For marketers. It asks for verify on each email so addresses a verifier calls invalid do not count. Uses reveal.
- **[A call list for a sales team](https://apiforagents.dev/platforms/contacts/work-email-and-phone-api).** For sales teams that call. It asks for the phone only, for the few accounts worth a call. Uses reveal.
- **[A wrong number fix flow](https://apiforagents.dev/platforms/contacts/work-email-and-phone-api).** For any team using the data. When a number or email turns out wrong, it asks again with tryAnotherSource for that part. Uses reveal.
- **[An event follow-up helper](https://apiforagents.dev/platforms/contacts/work-email-and-phone-api).** For people who met others at a conference. It gets the work email of the people they met, from the handles they swapped. Uses reveal.
- **[A partnership outreach tool](https://apiforagents.dev/platforms/contacts/work-email-and-phone-api).** For partnership managers. It gets the work email of the partnerships lead at each company on a short list. Uses reveal.
- **[An investor and founder intro helper](https://apiforagents.dev/platforms/contacts/work-email-and-phone-api).** For investors and founders. It gets the email of a founder or partner found in a public profile, for a personal note. Uses reveal.
- **[A reviewed intro agent](https://apiforagents.dev/platforms/contacts/work-email-and-phone-api).** For sellers using an agent. The agent finds the person, gets the email and drafts a short note that a human reads and sends. Uses reveal.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A sales outreach list from a people search | reveal | Up to 10 people | reveal: quoted per call |
| A CRM enrichment step | reveal | Up to 10 people | reveal: quoted per call |
| A recruiter's contact step | reveal | Up to 10 people | reveal: quoted per call |
| A checked email list before a campaign | reveal | Up to 10 people | reveal: quoted per call |
| A call list for a sales team | reveal | Up to 10 people | reveal: quoted per call |
| A wrong number fix flow | reveal | Up to 10 people | reveal: quoted per call |
| An event follow-up helper | reveal | Up to 10 people | reveal: quoted per call |
| A partnership outreach tool | reveal | Up to 10 people | reveal: quoted per call |
| An investor and founder intro helper | reveal | Up to 10 people | reveal: quoted per call |
| A reviewed intro agent | reveal | Up to 10 people | reveal: quoted per call |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Find the people first, for example with a LinkedIn people search, and keep the /in/ handles you saw.
3. Quote the reveal for free with "estimateOnly": true, asking only for the part you need: email, phone or both.
4. Run it with "maxUsd" set. A part your account already holds is free, and a part that comes back empty is not charged.

## Operations used

- [Work Email and Phone API](https://apiforagents.dev/platforms/contacts/work-email-and-phone-api): quoted per call. Work email and mobile number for up to ten people, by LinkedIn /in/ handle or profile URL.

## Questions

### Where should the LinkedIn handle come from?

From evidence: a people search, a search result or a pasted profile URL. A handle guessed from a name can belong to someone else and is still charged.

### Is this for bulk mailing?

No. It is built for reaching people one by one about their work. Write to people whose public role fits what you offer, and respect their replies.

### What does a run cost?

Each call is priced by its quote. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 10 things to build with public web data.

> Ideas to build with public web data from sites the named platforms do not cover: long-tail research agents, source catalogues and one-off datasets.

Canonical: https://apiforagents.dev/ideas/public-web-data · Updated 2026-10-21

Explore is good for questions that need a public site the named platforms do not cover. Each idea below uses three operations: sources and schema to find a source and price it for free, then run to fetch the rows.

- Operations: 3
- Price: priced per call
- Free to start: $0.10

## The ideas

- **[A long-tail research agent](https://apiforagents.dev/platforms/explore/data-api).** For agents that hit a question no named platform answers. It searches the sources, reads the schema and fetches rows from the one that fits. Uses sources, schema and run.
- **[A source catalogue for a data team](https://apiforagents.dev/platforms/explore).** For data teams. It browses the whole source index for free and keeps a list of what each source returns and its price per row. Uses sources.
- **[A cost-checked data pull](https://apiforagents.dev/platforms/explore/data-api).** For analysts on a budget. It reads the money estimate from schema before any run, so the cost is known first. Uses schema and run.
- **[A one-off dataset for a report](https://apiforagents.dev/platforms/explore/data-api).** For researchers and writers. It runs one source once and keeps the rows as evidence to read and cite. Uses run.
- **[A fallback step in an agent pipeline](https://apiforagents.dev/platforms/explore/data-api).** For builders whose agent uses the named platforms. When those do not cover a site, the agent tries explore before giving up. Uses sources and run.
- **[A weekly pull from one source](https://apiforagents.dev/platforms/explore/data-api).** For teams that track one public site. It runs the same source with the same input every week and compares the rows. Uses run.
- **[A quick test of a data idea](https://apiforagents.dev/platforms/explore/data-api).** For founders. It pulls a small sample from a source to see whether the data is useful before building anything around it. Uses schema and run.
- **[An evidence collector for analysts](https://apiforagents.dev/platforms/explore/data-api).** For analysts. It fetches raw rows and keeps them unchanged, so every claim in a report can point back to a row. Uses run.
- **[A source comparison](https://apiforagents.dev/platforms/explore/data-api).** For data teams. It runs two sources that return similar data on the same input and compares coverage and price per row. Uses sources and run.
- **[A data question router](https://apiforagents.dev/platforms/explore).** For agent builders. The agent reads what each source returns from sources and picks one before it spends. Uses sources.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A long-tail research agent | sources, schema, run | Up to 100 rows | run: quoted per call |
| A source catalogue for a data team | sources | The source index, free | sources: quoted per call |
| A cost-checked data pull | schema, run | Up to 100 rows | run: quoted per call |
| A one-off dataset for a report | run | Up to 100 rows | run: quoted per call |
| A fallback step in an agent pipeline | sources, run | Up to 100 rows | run: quoted per call |
| A weekly pull from one source | run | Up to 100 rows | run: quoted per call |
| A quick test of a data idea | schema, run | Up to 100 rows | run: quoted per call |
| An evidence collector for analysts | run | Up to 100 rows | run: quoted per call |
| A source comparison | sources, run | Up to 100 rows per source | run: quoted per call |
| A data question router | sources | Matching sources, free | sources: quoted per call |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Call sources with plain words that name the site or the data you need. It is free and lists matching sources with their price per row.
3. Call schema for the source you picked. It is free and returns the live inputs, a sample input and a money estimate.
4. Quote the run with "estimateOnly": true, then run it with "maxUsd" set. A run that finds nothing is free.

## Operations used

- [Explore Data API](https://apiforagents.dev/platforms/explore/data-api): quoted per call. Fetch rows from one source.

## Questions

### What comes back from a run?

The source's own rows, raw and unmapped. Treat them as evidence to read and cite. For a named platform, its own endpoint answers with checked fields.

### Do sources and schema cost anything?

No. Both are free. Only run is billed, per row the source actually returns.

### What does a run cost?

Each call is priced by its quote. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 13 things to build with Google Maps data.

> Ideas to build with public Google Maps data: local lead lists, review-reply agents, reputation dashboards and market maps, each with the operations used.

Canonical: https://apiforagents.dev/ideas/google-maps-data · Updated 2026-10-21

Google Maps data is good for finding local businesses and reading what customers say about them. Each idea below names the operations it calls, so you can quote it and run it.

- Operations: 4
- Price: from $0.000225 per record
- Free to start: $0.10

## The ideas

- **[A local lead list for web agencies](https://apiforagents.dev/platforms/google_maps/search-api).** For agencies that build websites. It searches a trade in a city and keeps only places without a website. Uses search.
- **[A review-reply agent for local shops](https://apiforagents.dev/platforms/google_maps/reviews-api).** For shop owners. It reads the newest reviews and drafts replies for the owner to approve. Uses reviews.
- **[A reputation dashboard for chains](https://apiforagents.dev/platforms/google_maps/places-api).** For multi-location brands. It reads each location's card and charts rating and review count from the stored series, which is free. Uses places and history.
- **[A competitor review comparison](https://apiforagents.dev/platforms/google_maps/search-api).** For local businesses. It reads reviews of nearby rivals and lists what customers praise and complain about. Uses search and reviews.
- **[A local market map](https://apiforagents.dev/platforms/google_maps/search-api).** For founders and analysts. It searches a category in a city and maps how many places there are and how they rate. Uses search.
- **[A site selection helper](https://apiforagents.dev/platforms/google_maps/search-api).** For retailers choosing a spot. It reads nearby places with ratings and popular times to see how busy an area is. Uses search and places.
- **[A busy times helper](https://apiforagents.dev/platforms/google_maps/places-api).** For people planning a visit. It reads popular times on a place's card to suggest a quieter hour. Uses places.
- **[A local directory builder](https://apiforagents.dev/platforms/google_maps/search-api).** For directory and city guide sites. It searches a category and keeps each place's address, hours, contact and socials. Uses search and places.
- **[A low-rating alert](https://apiforagents.dev/platforms/google_maps/reviews-api).** For franchise and operations teams. It reads the lowest-rated reviews first and sends new ones to the location manager. Uses reviews.
- **[A location listing audit](https://apiforagents.dev/platforms/google_maps/places-api).** For brands with many branches. It checks that hours and contact details match across every location. Uses places.
- **[A sales territory planner](https://apiforagents.dev/platforms/google_maps/search-api).** For field sales teams. It searches a target category with a minimum rating in each area of a territory. Uses search.
- **[A trip day planner](https://apiforagents.dev/platforms/google_maps/search-api).** For travellers. An agent searches places to eat and see in an area and builds a day plan around ratings and hours. Uses search and places.
- **[A review dataset for research](https://apiforagents.dev/platforms/google_maps/reviews-api).** For researchers. It collects reviews with stars, dates and owner responses into a table for later study. Uses reviews.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A local lead list for web agencies | search | Up to 100 places | search: $0.000225 per record |
| A review-reply agent for local shops | reviews | Up to 100 reviews | reviews: $0.000225 per record |
| A reputation dashboard for chains | places, history | Up to 10 places | places: $0.000225 per record |
| A competitor review comparison | search, reviews | Up to 100 reviews | search: $0.000225 per record |
| A local market map | search | Up to 100 places | search: $0.000225 per record |
| A site selection helper | search, places | Up to 100 places | search: $0.000225 per record |
| A busy times helper | places | Up to 10 places | places: $0.000225 per record |
| A local directory builder | search, places | Up to 100 places | search: $0.000225 per record |
| A low-rating alert | reviews | Up to 100 reviews | reviews: $0.000225 per record |
| A location listing audit | places | Up to 10 places | places: $0.000225 per record |
| A sales territory planner | search | Up to 100 places | search: $0.000225 per record |
| A trip day planner | search, places | Up to 100 places | search: $0.000225 per record |
| A review dataset for research | reviews | Up to 100 reviews | reviews: $0.000225 per record |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Quote the first call for free: send the search request with "estimateOnly": true and read the price before anything is spent.
3. Run the same call with "maxUsd" set as a ceiling, and keep the rows it returns.
4. Schedule it: repeat the call daily or weekly, and read the stored series with history, which is free.

## Operations used

- [Google Maps Search API](https://apiforagents.dev/platforms/google_maps/search-api): $0.000225 per record. Places for a keyword in a location.
- [Google Maps Places API](https://apiforagents.dev/platforms/google_maps/places-api): $0.000225 per record. Full cards for up to ten places by Maps URL (place id or cid).
- [Google Maps Reviews API](https://apiforagents.dev/platforms/google_maps/reviews-api): $0.000225 per record. Reviews for up to ten places.

## Questions

### How do I get place URLs for reviews?

Run search first. Every hit is a full place card, and its Maps URL is what places and reviews take.

### Do I need a Google Maps account to build these?

No. The API reads public data and never asks for your login, password or cookie.

### What does a run cost?

Google Maps records are priced from $0.000225 per record. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 11 things to build with Yelp data.

> Ideas to build with public Yelp data: restaurant lead lists, health inspection watches, review-reply drafts and dinner pickers, by operation.

Canonical: https://apiforagents.dev/ideas/yelp-data · Updated 2026-10-21

Yelp data is good for finding local businesses by price and feature, and for reading reviews, popular dishes and health inspections. Each idea below names the operations it calls, so you can quote it and run it.

- Operations: 4
- Price: from $0.000225 per record
- Free to start: $0.10

## The ideas

- **[A restaurant lead list for suppliers](https://apiforagents.dev/platforms/yelp/search-api).** For food suppliers and software vendors. It searches restaurants in a city by price level and features. Uses search.
- **[A health inspection watch](https://apiforagents.dev/platforms/yelp/business-api).** For food safety consultants and diners. It reads the health inspection records on business profiles. Uses businesses.
- **[A review-reply drafter](https://apiforagents.dev/platforms/yelp/reviews-api).** For owners. It reads new reviews and drafts replies for the owner to edit and post. Uses reviews.
- **[A popular dishes report](https://apiforagents.dev/platforms/yelp/search-api).** For restaurant consultants. It reads the popular dishes of the top places in an area and compares them. Uses search and businesses.
- **[A review topic report](https://apiforagents.dev/platforms/yelp/business-api).** For managers. It reads review insights by topic for their business and rivals, side by side. Uses businesses.
- **[A rating trend dashboard](https://apiforagents.dev/platforms/yelp/business-api).** For multi-location owners. It charts rating and review count from the stored series, which is free. Uses businesses and history.
- **[A dinner picker](https://apiforagents.dev/platforms/yelp/search-api).** For people deciding where to eat. It searches by area, price level and features and sorts by rating. Uses search.
- **[A local market report](https://apiforagents.dev/platforms/yelp/search-api).** For founders and analysts. It searches a category sorted by most reviewed to see who leads an area. Uses search.
- **[A directory sync](https://apiforagents.dev/platforms/yelp/business-api).** For city guide sites. It refreshes address, phone, website and hours from business profiles. Uses businesses.
- **[An owner reply rate check](https://apiforagents.dev/platforms/yelp/reviews-api).** For agencies serving restaurants. It reads reviews and counts how many have an owner reply. Uses reviews.
- **[A local ratings dataset](https://apiforagents.dev/platforms/yelp/search-api).** For researchers. It keeps ratings and star breakdowns for a category across a city. Uses search.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A restaurant lead list for suppliers | search | Up to 100 businesses | search: $0.000225 per record |
| A health inspection watch | businesses | Up to 10 businesses | businesses: $0.000225 per record |
| A review-reply drafter | reviews | Up to 100 reviews | reviews: $0.000225 per record |
| A popular dishes report | search, businesses | Up to 100 businesses | search: $0.000225 per record |
| A review topic report | businesses | Up to 10 businesses | businesses: $0.000225 per record |
| A rating trend dashboard | businesses, history | Up to 10 businesses | businesses: $0.000225 per record |
| A dinner picker | search | Up to 100 businesses | search: $0.000225 per record |
| A local market report | search | Up to 100 businesses | search: $0.000225 per record |
| A directory sync | businesses | Up to 10 businesses | businesses: $0.000225 per record |
| An owner reply rate check | reviews | Up to 100 reviews | reviews: $0.000225 per record |
| A local ratings dataset | search | Up to 100 businesses | search: $0.000225 per record |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Quote the first call for free: send the search request with "estimateOnly": true and read the price before anything is spent.
3. Run the same call with "maxUsd" set as a ceiling, and keep the rows it returns.
4. Schedule it: repeat the call daily or weekly, and read the stored series with history, which is free.

## Operations used

- [Yelp Search API](https://apiforagents.dev/platforms/yelp/search-api): $0.000225 per record. Businesses for a place and keyword, with Yelp's own sort, price levels and feature filters.
- [Yelp Business API](https://apiforagents.dev/platforms/yelp/business-api): $0.000225 per record. Full profiles for up to ten businesses by URL or slug.
- [Yelp Reviews API](https://apiforagents.dev/platforms/yelp/reviews-api): $0.000225 per record. Reviews for up to ten businesses.

## Questions

### Can I filter search by price?

Yes. search takes price levels 1 to 4, feature filters, and a sort by relevance, highest rating or most reviewed.

### Do I need a Yelp account to build these?

No. The API reads public data and never asks for your login, password or cookie.

### What does a run cost?

Yelp records are priced from $0.000225 per record. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 12 things to build with Tripadvisor data.

> Ideas to build with public Tripadvisor data: hotel rate checks, itinerary builders, reputation monitors and rank trackers, each with its operations.

Canonical: https://apiforagents.dev/ideas/tripadvisor-data · Updated 2026-10-21

Tripadvisor data is good for comparing hotels, restaurants and attractions in a destination and reading detailed traveller reviews. Each idea below names the operations it calls, so you can quote it and run it.

- Operations: 8
- Price: from $0.0018 per record
- Free to start: $0.10

## The ideas

- **[A hotel rate check for a stay](https://apiforagents.dev/platforms/tripadvisor/hotels-api).** For travellers and small travel agents. It reads hotels for given dates and shows the booking offers side by side. Uses hotels.
- **[An itinerary builder](https://apiforagents.dev/platforms/tripadvisor/attraction-search-api).** For travellers. An agent searches attractions and restaurants in a destination and builds a day by day plan. Uses searchAttractions and searchRestaurants.
- **[A hotel reputation monitor](https://apiforagents.dev/platforms/tripadvisor/reviews-api).** For hotel managers. It reads new reviews since a date with sub-ratings and owner responses. Uses reviews.
- **[A rank tracker](https://apiforagents.dev/platforms/tripadvisor/hotels-api).** For hotels and restaurants. It charts rank, rating and review count from the stored series, which is free. Uses hotels and history.
- **[A restaurant lead list](https://apiforagents.dev/platforms/tripadvisor/restaurant-search-api).** For food suppliers and software vendors. It searches restaurants in a destination with cuisine, price level and rating. Uses searchRestaurants.
- **[A tour operator lead list](https://apiforagents.dev/platforms/tripadvisor/attraction-search-api).** For travel software sellers. It searches things to do and reads ticket offers and booking links. Uses searchAttractions.
- **[A competitor hotel benchmark](https://apiforagents.dev/platforms/tripadvisor/hotels-api).** For revenue managers. It compares rating breakdown, class, rooms and amenities with nearby hotels. Uses hotels.
- **[A multilingual review summary](https://apiforagents.dev/platforms/tripadvisor/reviews-api).** For hotels with guests from many countries. It reads reviews in chosen languages and summarises them in one. Uses reviews.
- **[A guest complaint radar](https://apiforagents.dev/platforms/tripadvisor/reviews-api).** For operations teams. It reads only one and two star reviews and sends them to the right team. Uses reviews.
- **[A destination hotel dataset](https://apiforagents.dev/platforms/tripadvisor/hotel-search-api).** For travel analysts. It searches hotels in a destination for given dates and keeps prices and ratings. Uses searchHotels.
- **[A trip type insight report](https://apiforagents.dev/platforms/tripadvisor/reviews-api).** For hotels. It reads the trip type on reviews to see what families, couples or business guests say. Uses reviews.
- **[A dish finder](https://apiforagents.dev/platforms/tripadvisor/restaurant-search-api).** For food lovers. It searches restaurants for a dish in a destination and reads their cards. Uses searchRestaurants and restaurants.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A hotel rate check for a stay | hotels | Up to 10 hotels | hotels: $0.0018 per record |
| An itinerary builder | searchAttractions, searchRestaurants | Up to 100 places | searchAttractions: $0.0018 per record |
| A hotel reputation monitor | reviews | Up to 100 reviews | reviews: $0.0018 per record |
| A rank tracker | hotels, history | Up to 10 places | hotels: $0.0018 per record |
| A restaurant lead list | searchRestaurants | Up to 100 restaurants | searchRestaurants: $0.0018 per record |
| A tour operator lead list | searchAttractions | Up to 100 attractions | searchAttractions: $0.0018 per record |
| A competitor hotel benchmark | hotels | Up to 10 hotels | hotels: $0.0018 per record |
| A multilingual review summary | reviews | Up to 100 reviews | reviews: $0.0018 per record |
| A guest complaint radar | reviews | Up to 100 reviews | reviews: $0.0018 per record |
| A destination hotel dataset | searchHotels | Up to 100 hotels | searchHotels: $0.0018 per record |
| A trip type insight report | reviews | Up to 100 reviews | reviews: $0.0018 per record |
| A dish finder | searchRestaurants, restaurants | Up to 100 restaurants | searchRestaurants: $0.0018 per record |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Quote the first call for free: send the searchHotels request with "estimateOnly": true and read the price before anything is spent.
3. Run the same call with "maxUsd" set as a ceiling, and keep the rows it returns.
4. Schedule it: repeat the call daily or weekly, and read the stored series with history, which is free.

## Operations used

- [Tripadvisor Reviews API](https://apiforagents.dev/platforms/tripadvisor/reviews-api): $0.0018 per record. Reviews for up to ten places of any kind.
- [Tripadvisor Hotels API](https://apiforagents.dev/platforms/tripadvisor/hotels-api): $0.0018 per record. Full cards for up to ten hotels by Tripadvisor URL.
- [Tripadvisor Restaurant Search API](https://apiforagents.dev/platforms/tripadvisor/restaurant-search-api): $0.0018 per record. Restaurants for a destination or dish.
- [Tripadvisor Attraction Search API](https://apiforagents.dev/platforms/tripadvisor/attraction-search-api): $0.0018 per record. Things to do for a destination.
- [Tripadvisor Hotel Search API](https://apiforagents.dev/platforms/tripadvisor/hotel-search-api): $0.0018 per record. Hotels for a destination.
- [Tripadvisor Restaurants API](https://apiforagents.dev/platforms/tripadvisor/restaurants-api): $0.0018 per record. Full cards for up to ten restaurants by URL.

## Questions

### Can hotel prices be read for my dates?

Yes. hotels and searchHotels take a stay with check-in and check-out dates, a currency and a language.

### Do I need a Tripadvisor account to build these?

No. The API reads public data and never asks for your login, password or cookie.

### What does a run cost?

Tripadvisor records are priced from $0.0018 per record. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 10 things to build with Airbnb data.

> Ideas to build with public Airbnb data: competitor price trackers, stay price checkers, review insights for hosts and amenity gap reports, by operation.

Canonical: https://apiforagents.dev/ideas/airbnb-data · Updated 2026-10-21

Airbnb data is good for pricing a stay, comparing listings and reading what guests say. Each idea below starts from listing URLs and names the operations it calls, so you can quote it and run it.

- Operations: 3
- Price: from $0.0018 per record
- Free to start: $0.10

## The ideas

- **[A competitor price tracker for hosts](https://apiforagents.dev/platforms/airbnb/listings-api).** For hosts and property managers. It prices nearby listings for the same dates and charts the stored nightly price series. Uses listings and history.
- **[A stay price checker](https://apiforagents.dev/platforms/airbnb/listings-api).** For travellers. It prices a short list of listings for their dates and guests and shows the total. Uses listings.
- **[A review insight report for hosts](https://apiforagents.dev/platforms/airbnb/reviews-api).** For hosts. It reads reviews of nearby listings to see what guests praise and complain about. Uses reviews.
- **[An amenity gap report](https://apiforagents.dev/platforms/airbnb/listings-api).** For hosts improving a listing. It compares amenities with the top listings nearby. Uses listings.
- **[A host response audit](https://apiforagents.dev/platforms/airbnb/reviews-api).** For property managers. It reads reviews and counts how many have a host response. Uses reviews.
- **[A portfolio dashboard](https://apiforagents.dev/platforms/airbnb/listings-api).** For property managers with many listings. It charts ratings and review counts from the stored series, which is free. Uses listings and history.
- **[A short-stay research sheet](https://apiforagents.dev/platforms/airbnb/listings-api).** For people studying a market. It records nightly price, availability and ratings for a set of listings. Uses listings.
- **[A group trip planner](https://apiforagents.dev/platforms/airbnb/listings-api).** For groups and families. It prices listings for the number of adults, children and pets on the trip. Uses listings.
- **[A house rules comparison](https://apiforagents.dev/platforms/airbnb/listings-api).** For travellers. It compares house rules and cancellation policies across a short list. Uses listings.
- **[A rating trend tracker](https://apiforagents.dev/platforms/airbnb/listings-api).** For hosts. It charts overall rating and review count over time from the stored series. Uses listings and history.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A competitor price tracker for hosts | listings, history | Up to 10 listings | listings: $0.0018 per record |
| A stay price checker | listings | Up to 10 listings | listings: $0.0018 per record |
| A review insight report for hosts | reviews | Up to 100 reviews | reviews: $0.0018 per record |
| An amenity gap report | listings | Up to 10 listings | listings: $0.0018 per record |
| A host response audit | reviews | Up to 100 reviews | reviews: $0.0018 per record |
| A portfolio dashboard | listings, history | Up to 10 listings | listings: $0.0018 per record |
| A short-stay research sheet | listings | Up to 10 listings | listings: $0.0018 per record |
| A group trip planner | listings | Up to 10 listings | listings: $0.0018 per record |
| A house rules comparison | listings | Up to 10 listings | listings: $0.0018 per record |
| A rating trend tracker | listings, history | Up to 10 listings | listings: $0.0018 per record |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Quote the first call for free: send the listings request with "estimateOnly": true and read the price before anything is spent.
3. Run the same call with "maxUsd" set as a ceiling, and keep the rows it returns.
4. Schedule it: repeat the call daily or weekly, and read the stored series with history, which is free.

## Operations used

- [Airbnb Listings API](https://apiforagents.dev/platforms/airbnb/listings-api): $0.0018 per record. Full cards for up to ten listings by URL or room id, priced for a stay.
- [Airbnb Reviews API](https://apiforagents.dev/platforms/airbnb/reviews-api): $0.0018 per record. Reviews for up to ten listings.

## Questions

### Can I search Airbnb by city?

No. Operations take listing URLs or room ids. Collect the listings you care about first, then price and read them.

### Do I need a Airbnb account to build these?

No. The API reads public data and never asks for your login, password or cookie.

### What does a run cost?

Airbnb records are priced from $0.0018 per record. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 11 things to build with Booking.com data.

> Ideas to build with public Booking.com data: hotel rate shopping, guest review insights, availability watches and trip booking assistants, by operation.

Canonical: https://apiforagents.dev/ideas/booking-data · Updated 2026-10-21

Booking.com data is good for pricing stays in a destination, comparing properties and reading guest reviews. Each idea below names the operations it calls, so you can quote it and run it.

- Operations: 4
- Price: from $0.0018 per record
- Free to start: $0.10

## The ideas

- **[A rate shopping tool for hotels](https://apiforagents.dev/platforms/booking/search-api).** For hotel revenue teams. It searches their destination for the same dates and compares prices. Uses search.
- **[A competitor rate tracker](https://apiforagents.dev/platforms/booking/hotels-api).** For hotels. It reads rival properties daily and charts the stored price series, which is free. Uses properties and history.
- **[A guest review insight report](https://apiforagents.dev/platforms/booking/reviews-api).** For hotel managers. It reads liked and disliked text by traveller type and groups the themes. Uses reviews.
- **[A guest score dashboard](https://apiforagents.dev/platforms/booking/hotels-api).** For hotel groups. It charts guest score and review count from the stored series. Uses properties and history.
- **[A trip booking assistant](https://apiforagents.dev/platforms/booking/search-api).** For travellers. An agent searches a destination with a minimum rating and price limit and explains the options. Uses search.
- **[A lead list for hotel software sellers](https://apiforagents.dev/platforms/booking/search-api).** For travel tech sales teams. It searches a destination by property type and keeps the properties found. Uses search.
- **[A room availability watch](https://apiforagents.dev/platforms/booking/hotels-api).** For travellers and planners. It reads rooms with availability for given dates and flags changes. Uses properties.
- **[A property response check](https://apiforagents.dev/platforms/booking/reviews-api).** For hotel consultants. It reads reviews and counts how many have a property response. Uses reviews.
- **[A low-score early warning](https://apiforagents.dev/platforms/booking/reviews-api).** For operations teams. It reads the newest reviews in the poor score band and sends them on. Uses reviews.
- **[A destination price index](https://apiforagents.dev/platforms/booking/search-api).** For travel writers and analysts. It searches a destination for many dates, sorted by lowest price, and keeps the results. Uses search.
- **[A facilities comparison](https://apiforagents.dev/platforms/booking/hotels-api).** For event planners. It compares facilities and policies across a short list of properties. Uses properties.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A rate shopping tool for hotels | search | Up to 100 properties | search: $0.0018 per record |
| A competitor rate tracker | properties, history | Up to 10 properties | properties: $0.0018 per record |
| A guest review insight report | reviews | Up to 100 reviews | reviews: $0.0018 per record |
| A guest score dashboard | properties, history | Up to 10 properties | properties: $0.0018 per record |
| A trip booking assistant | search | Up to 100 properties | search: $0.0018 per record |
| A lead list for hotel software sellers | search | Up to 100 properties | search: $0.0018 per record |
| A room availability watch | properties | Up to 10 properties | properties: $0.0018 per record |
| A property response check | reviews | Up to 100 reviews | reviews: $0.0018 per record |
| A low-score early warning | reviews | Up to 100 reviews | reviews: $0.0018 per record |
| A destination price index | search | Up to 100 properties | search: $0.0018 per record |
| A facilities comparison | properties | Up to 10 properties | properties: $0.0018 per record |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Quote the first call for free: send the search request with "estimateOnly": true and read the price before anything is spent.
3. Run the same call with "maxUsd" set as a ceiling, and keep the rows it returns.
4. Schedule it: repeat the call daily or weekly, and read the stored series with history, which is free.

## Operations used

- [Booking.com Search API](https://apiforagents.dev/platforms/booking/search-api): $0.0018 per record. Properties for a destination and a stay, with Booking's own filters.
- [Booking.com Hotels API](https://apiforagents.dev/platforms/booking/hotels-api): $0.0018 per record. Full cards for up to ten properties by URL.
- [Booking.com Reviews API](https://apiforagents.dev/platforms/booking/reviews-api): $0.0018 per record. Guest reviews for up to ten properties.

## Questions

### Can search filter by stars and price?

Yes. search takes minimum stars, minimum rating, a price range, property type and a sort.

### Do I need a Booking.com account to build these?

No. The API reads public data and never asks for your login, password or cookie.

### What does a run cost?

Booking.com records are priced from $0.0018 per record. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# 12 things to build with Google data.

> Ideas to build with public Google data: news monitors, rank trackers, research assistants, Play Store review insights and shopping price checks.

Canonical: https://apiforagents.dev/ideas/google-data · Updated 2026-10-21

Google data is good for seeing what the web, the news, Google Shopping and the Play Store say about something. Each idea below names the operations it calls, so you can quote it and run it.

- Operations: 5
- Price: from $0.00009 per record
- Free to start: $0.10

## The ideas

- **[A company news monitor](https://apiforagents.dev/platforms/google/news-api).** For sales, investor and PR teams. It reads news on chosen companies from the last day and sends a digest. Uses news.
- **[A search rank tracker](https://apiforagents.dev/platforms/google/search-api).** For marketers. It runs the same queries by country and language and records where their pages rank. Uses search.
- **[A research assistant with sources](https://apiforagents.dev/platforms/google/search-api).** For analysts and students. An agent searches with operators and date limits and answers with links. Uses search.
- **[A competitor content finder](https://apiforagents.dev/platforms/google/search-api).** For content teams. It searches one site, or sites related to it, to list what a rival publishes. Uses search.
- **[A report and PDF finder](https://apiforagents.dev/platforms/google/search-api).** For researchers. It searches by file type to find reports on a topic. Uses search.
- **[An app review insight report](https://apiforagents.dev/platforms/google/play-store-reviews-api).** For app teams. It reads recent Play Store reviews and groups bugs and requests. Uses playReviews.
- **[A shopping price check](https://apiforagents.dev/platforms/google/shopping-api).** For shoppers and sellers. It reads Google Shopping offers for a product with merchant and price. Uses shopping.
- **[A press coverage report](https://apiforagents.dev/platforms/google/news-api).** For PR teams. It reads news on a launch over a week and lists publishers and dates. Uses news.
- **[A list page lead finder](https://apiforagents.dev/platforms/google/search-api).** For sales teams. It searches for public list pages of companies in a niche to start a lead list. Uses search.
- **[An image reference finder](https://apiforagents.dev/platforms/google/images-api).** For designers. It finds images for a query with their source pages, so rights can be checked at the source. Uses images.
- **[A rival app tracker](https://apiforagents.dev/platforms/google/play-store-reviews-api).** For product managers. It reads the newest reviews of competing apps each week. Uses playReviews.
- **[A new mentions finder](https://apiforagents.dev/platforms/google/search-api).** For brand teams. It searches the brand name between two dates to find pages that are new. Uses search.

## Each idea and what it calls

| Idea | Operations | One call returns | Main operation price |
|---|---|---|---|
| A company news monitor | news | Up to 100 articles | news: $0.0018 per record |
| A search rank tracker | search | Up to 5 pages of about ten results | search: $0.0009 per record |
| A research assistant with sources | search | Up to 5 pages of about ten results | search: $0.0009 per record |
| A competitor content finder | search | Up to 5 pages of about ten results | search: $0.0009 per record |
| A report and PDF finder | search | Up to 5 pages of about ten results | search: $0.0009 per record |
| An app review insight report | playReviews | Up to 100 reviews | playReviews: $0.00009 per record |
| A shopping price check | shopping | Up to 100 offers | shopping: $0.0027 per record |
| A press coverage report | news | Up to 100 articles | news: $0.0018 per record |
| A list page lead finder | search | Up to 5 pages of about ten results | search: $0.0009 per record |
| An image reference finder | images | Up to 100 images | images: $0.0009 per record |
| A rival app tracker | playReviews | Up to 100 reviews | playReviews: $0.00009 per record |
| A new mentions finder | search | Up to 5 pages of about ten results | search: $0.0009 per record |

## How to start

1. Sign up. An agent registers itself with one POST and starts with $0.10 of free credit; a person can sign up on the site instead.
2. Quote the first call for free: send the search request with "estimateOnly": true and read the price before anything is spent.
3. Run the same call with "maxUsd" set as a ceiling, and keep the rows it returns.
4. Schedule it: repeat the call daily or weekly and compare each run with the last one you kept.

## Operations used

- [Google Search API](https://apiforagents.dev/platforms/google/search-api): $0.0009 per record. Google web results.
- [Google News API](https://apiforagents.dev/platforms/google/news-api): $0.0018 per record. Google News articles for a query.
- [Google Play Reviews API](https://apiforagents.dev/platforms/google/play-store-reviews-api): $0.00009 per record. Play Store reviews for up to five apps, by package id or store URL.
- [Google Shopping API](https://apiforagents.dev/platforms/google/shopping-api): $0.0027 per record. Google Shopping offers for a query.
- [Google Images API](https://apiforagents.dev/platforms/google/images-api): $0.0009 per record. Google Images for a query.

## Questions

### How is web search billed?

Per page of about ten results, up to five pages a call. The other operations are billed per record.

### Do I need a Google account to build these?

No. The API reads public data and never asks for your login, password or cookie.

### What does a run cost?

Google records are priced from $0.00009 per record. A call can carry a minimum, so send it first with "estimateOnly": true. The quote is free and is the most the call can cost.

### Can an AI agent build and run these on its own?

Yes. It signs itself up with one call and gets $0.10 free, quotes each call before it spends, and pays from a prepaid balance. "maxUsd" caps every call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# A Proxycurl alternative an agent can buy itself.

> Proxycurl shut down in July 2025. A LinkedIn data API for people, companies, posts and jobs: $0.004 a profile, $5 to start, quote first.

Canonical: https://apiforagents.dev/alternatives/proxycurl · Updated 2026-10-22

Proxycurl closed on 4 July 2025. If your product or your agent still needs LinkedIn profiles, companies and jobs by API, this is how we compare, what changes in your code, and when another option fits better.

- Profiles from: $0.004
- To start: $5
- Free trial: $0.10
- Facts checked: October 2026

> **The short answer** API for Agents is not a drop-in Proxycurl replacement: the request shape is different, so expect to change a few lines. In return you pay per record from $5 with no plan, see the exact price before each call, and an agent can start on its own.

## API for Agents and Proxycurl, side by side

Their side is from their own pages, linked below, as seen on 16 October 2026. Prices change: check the source before you decide.

|  | API for Agents | Proxycurl |
|---|---|---|
| Billing | Per record, pay as you go | Closed: no longer sold |
| To start paying | $5 top-up, no plan | n/a |
| Agent signs itself up | Yes: one POST, a person claims it later | n/a |

## When Proxycurl is the better pick

- Proxycurl itself is not an option: it stopped serving on 4 July 2025, its founder wrote.
- If you need wire compatibility with old Proxycurl code, look for a provider that claims it and test the claim; we do not.
- If you need emails or phone numbers inside every profile row: here a profile does not carry them, and the contacts endpoint looks up a work email and mobile number one person at a time, priced per call.

## When API for Agents is the better pick

- You want to pay per record with no subscription and no commitment, from $5.
- Your agent should be able to sign up, quote and run on its own, inside a budget you set.
- You want each answer to say when it was measured and what is missing, not just a 404.

## Moving common calls over

What you used to fetch, and the operation that returns it here.

| You fetched | Here | Price |
|---|---|---|
| A person's profile by LinkedIn URL | op: profiles, subjects: [url or handle] | $0.004 |
| A company profile | op: companies | $0.004 |
| People at a company, by role | op: searchPeople, company, titles | $0.004 per profile |
| Company search | op: searchCompanies | $0.004 per company |
| Job listings | op: jobs | $0.001 per listing |
| A person's posts | op: posts | $0.002 per post |

## What you get with API for Agents, whichever you pick

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Try it before you move anything

quote a profile, free:

```bash
curl -s -X POST https://apiforagents.dev/agent/identity -H "Content-Type: application/json" -d '{"type":"anonymous"}'
# exchange identity_assertion at /oauth2/token, then:
curl -s -X POST https://apiforagents.dev/v1/linkedin -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profiles","subjects":["satyanadella"],"estimateOnly":true}'
```

## Questions

### Why did Proxycurl shut down?

Its founder wrote on 4 July 2025 that LinkedIn sued Proxycurl in January 2025 and that Proxycurl was closing to comply with the settlement. LinkedIn announced the case resolved on 28 July 2025.

### Will my Proxycurl API key work here?

No. Make a key here, or let your agent sign itself up. The requests are JSON with an op field; the table above maps the common ones.

### Is this affiliated with Proxycurl or LinkedIn?

No. We are an independent API and not affiliated with or endorsed by either.

## Sources

1. [Nubela: Goodbye Proxycurl](https://nubela.co/blog/goodbye-proxycurl/), seen 16 October 2026
2. [LinkedIn newsroom: LinkedIn Wins Legal Battle to Protect Member Data](https://news.linkedin.com/2025/LinkedInWinsLegalBattleToProtectMemberData), seen 16 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# A Mindcase alternative an agent can buy itself.

> Compare Mindcase with API for Agents: 26 platforms on one key, a $5 start instead of a credit pack, agent self-signup, an exact quote first.

Canonical: https://apiforagents.dev/alternatives/mindcase · Updated 2026-10-22

Both sell structured web data per record to AI agents. The differences are in how you start and what your agent can do alone: the smallest purchase, whether an agent needs a person to make an account first, and whether it gets an exact price before it spends.

- Profiles from: $0.004
- To start: $5
- Free trial: $0.10
- Facts checked: October 2026

> **The short answer** Per-record LinkedIn prices are in the same range. Pick API for Agents if you want to start with $5, let an agent sign itself up without a person first, and get an exact quote before each call. Pick Mindcase if you want an MCP server today, or a source we do not sell.

## API for Agents and Mindcase, side by side

Their side is from their own pages, linked below, as seen on 16 October 2026. Prices change: check the source before you decide.

|  | API for Agents | Mindcase |
|---|---|---|
| Billing | Per record, pay as you go | Prepaid credit packs, per record |
| To start paying | $5 top-up, no plan | Smallest pack ₹3,999 (about $45) |
| Unused money | Kept, no expiry | Credits never expire |
| Agent signs itself up | Yes: one POST, a person claims it later | No: its agent guide asks the user for a key |
| Price before the call | Exact quote, free (estimateOnly) | The agent estimates rows × price |
| Your own LinkedIn account | Not needed | Not needed |
| MCP server | Not yet: REST, OpenAPI and llms.txt | Yes |

## When Mindcase is the better pick

- You need a source we do not sell: compare its platform list with our 26 before you pick.
- You want an MCP server to plug into Claude Desktop now.
- You will buy a large pack anyway and want its volume bonus.

## When API for Agents is the better pick

- You want to start with $5, not a pack.
- Your agent should register itself in one call and run on a free trial before anyone signs up.
- You want the exact charge before every call, and a hard per-call ceiling with maxUsd.
- You re-read the same records: your own answer from the same day is free.

## What you get with API for Agents, whichever you pick

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Try it before you move anything

quote a profile, free:

```bash
curl -s -X POST https://apiforagents.dev/agent/identity -H "Content-Type: application/json" -d '{"type":"anonymous"}'
# exchange identity_assertion at /oauth2/token, then:
curl -s -X POST https://apiforagents.dev/v1/linkedin -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profiles","subjects":["satyanadella"],"estimateOnly":true}'
```

## Questions

### Is API for Agents cheaper than Mindcase?

Not per record: LinkedIn prices are in the same range. The difference is the entry point ($5 versus a pack), agent self-signup, the exact quote and free same-day repeats.

### Can my agent switch without code changes?

No. Both are JSON over HTTPS, but the field names differ. Our operation pages show the exact request for each LinkedIn operation.

## Sources

1. [Mindcase API catalogue](https://www.mindcase.co/api), seen 16 October 2026
2. [Mindcase pricing](https://www.mindcase.co/pricing), seen 16 October 2026
3. [Mindcase agent guide (skills.md)](https://mindcase.co/skills.md), seen 16 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# A Composio alternative an agent can buy itself.

> Composio connects an agent to your own LinkedIn account. API for Agents returns public LinkedIn data about anyone, no LinkedIn login needed.

Canonical: https://apiforagents.dev/alternatives/composio · Updated 2026-10-22

Composio and this API solve different problems. Composio lets an agent act as you, on your own LinkedIn account, through LinkedIn's official API: post, comment, read your organisation's stats. This API returns public data about other people and companies: profiles, search, jobs, posts.

- Profiles from: $0.004
- To start: $5
- Free trial: $0.10
- Facts checked: October 2026

> **The short answer** Use Composio to let an agent post and act on your own LinkedIn account. Use this API to look up people, companies, jobs and posts you do not own. Many agents use both.

## API for Agents and Composio, side by side

Their side is from their own pages, linked below, as seen on 16 October 2026. Prices change: check the source before you decide.

|  | API for Agents | Composio |
|---|---|---|
| Billing | Per record, pay as you go | Per tool call, monthly plans |
| To start paying | $5 top-up, no plan | Free tier, then $29 a month |
| Agent signs itself up | Yes: one POST, a person claims it later | No |
| Your own LinkedIn account | Not needed | Yes, connected by OAuth |
| MCP server | Not yet: REST, OpenAPI and llms.txt | Yes |

## When Composio is the better pick

- Your agent needs to post, comment or manage your company page.
- You want one platform for hundreds of app integrations, not just data.

## When API for Agents is the better pick

- Your agent needs to search people by title and company, or read any public profile.
- You need company search, job listings or the LinkedIn Ad Library.
- You do not want to connect a personal LinkedIn account to an agent.

## What you get with API for Agents, whichever you pick

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Try it before you move anything

quote a profile, free:

```bash
curl -s -X POST https://apiforagents.dev/agent/identity -H "Content-Type: application/json" -d '{"type":"anonymous"}'
# exchange identity_assertion at /oauth2/token, then:
curl -s -X POST https://apiforagents.dev/v1/linkedin -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profiles","subjects":["satyanadella"],"estimateOnly":true}'
```

## Questions

### Can Composio search LinkedIn for people?

Its LinkedIn toolkit, as listed on its site on the date above, works through LinkedIn's official API on the user's own account and does not include people search, company search or job search.

### Can I use both?

Yes. A typical sales agent researches leads with this API and posts or messages through tools connected to the user's own account.

## Sources

1. [Composio LinkedIn toolkit](https://composio.dev/toolkits/linkedin), seen 16 October 2026
2. [Composio pricing](https://composio.dev/pricing), seen 16 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# A PhantomBuster alternative an agent can buy itself.

> A PhantomBuster alternative for LinkedIn data: pay per record from $5 instead of a monthly plan billed in execution hours. No LinkedIn cookie.

Canonical: https://apiforagents.dev/alternatives/phantombuster · Updated 2026-10-22

PhantomBuster runs automations, billed by execution time on monthly plans. If what you need is data (profiles, companies, search results, jobs) in your own code or agent, a per-record API is simpler to budget.

- Profiles from: $0.004
- To start: $5
- Free trial: $0.10
- Facts checked: October 2026

> **The short answer** Use PhantomBuster for no-code LinkedIn automations that act on your account. Use this API when you want the data itself, per record, in code or in an agent, with the price known before each call.

## API for Agents and PhantomBuster, side by side

Their side is from their own pages, linked below, as seen on 16 October 2026. Prices change: check the source before you decide.

|  | API for Agents | PhantomBuster |
|---|---|---|
| Billing | Per record, pay as you go | Monthly plans, by execution hours |
| To start paying | $5 top-up, no plan | From $69 a month |
| Free to try | A $0.10 trial, no card | 14-day trial, exports limited to 10 rows |
| Agent signs itself up | Yes: one POST, a person claims it later | No |

## When PhantomBuster is the better pick

- You want ready-made automations with a visual interface.
- You need actions on your own account: connection requests, messages.

## When API for Agents is the better pick

- You want data, per record, without a monthly plan.
- You need predictable cost: the quote is the charge.
- You do not want to share a LinkedIn session cookie.

## What you get with API for Agents, whichever you pick

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Try it before you move anything

quote a profile, free:

```bash
curl -s -X POST https://apiforagents.dev/agent/identity -H "Content-Type: application/json" -d '{"type":"anonymous"}'
# exchange identity_assertion at /oauth2/token, then:
curl -s -X POST https://apiforagents.dev/v1/linkedin -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profiles","subjects":["satyanadella"],"estimateOnly":true}'
```

## Sources

1. [PhantomBuster pricing explained (its blog)](https://phantombuster.com/blog/ai-automation/phantombuster-pricing-explained), seen 16 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# A Unipile alternative an agent can buy itself.

> A Unipile alternative for public LinkedIn data: no connected accounts, no per-account fee. Profiles $0.004, pay as you go from $5.

Canonical: https://apiforagents.dev/alternatives/unipile · Updated 2026-10-22

Unipile bills per connected LinkedIn account and works through each user's own account. That suits messaging and inbox products. For looking up public profiles, companies and jobs, you do not need an account at all.

- Profiles from: $0.004
- To start: $5
- Free trial: $0.10
- Facts checked: October 2026

> **The short answer** Pick Unipile to send messages or sync inboxes on your users' accounts. Pick this API to read public LinkedIn data without connecting anyone's account.

## API for Agents and Unipile, side by side

Their side is from their own pages, linked below, as seen on 16 October 2026. Prices change: check the source before you decide.

|  | API for Agents | Unipile |
|---|---|---|
| Billing | Per record, pay as you go | Per connected account, monthly |
| To start paying | $5 top-up, no plan | Minimum €49 a month |
| Agent signs itself up | Yes: one POST, a person claims it later | No |
| Your own LinkedIn account | Not needed | Yes: each user connects theirs |

## When Unipile is the better pick

- Your product sends LinkedIn messages or invitations for its users.
- You need a user's own inbox or network.

## When API for Agents is the better pick

- You read public data about people and companies.
- You do not want to manage connected accounts or their limits.

## What you get with API for Agents, whichever you pick

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Try it before you move anything

quote a profile, free:

```bash
curl -s -X POST https://apiforagents.dev/agent/identity -H "Content-Type: application/json" -d '{"type":"anonymous"}'
# exchange identity_assertion at /oauth2/token, then:
curl -s -X POST https://apiforagents.dev/v1/linkedin -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profiles","subjects":["satyanadella"],"estimateOnly":true}'
```

## Sources

1. [Unipile API pricing](https://www.unipile.com/pricing-api/), seen 16 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# A ScrapIn alternative an agent can buy itself.

> A ScrapIn alternative for LinkedIn data: $5 to start instead of a paid trial and a pay-as-you-go minimum. Profiles $0.004, quote first.

Canonical: https://apiforagents.dev/alternatives/scrapin · Updated 2026-10-22

ScrapIn sells real-time B2B data from a paid trial and a pay-as-you-go minimum. If you are testing an idea or running an agent on a small budget, the entry point is the difference.

- Profiles from: $0.004
- To start: $5
- Free trial: $0.10
- Facts checked: October 2026

> **The short answer** Start here if you want to spend $5, not a minimum purchase, and keep what you do not use.

## API for Agents and ScrapIn, side by side

Their side is from their own pages, linked below, as seen on 16 October 2026. Prices change: check the source before you decide.

|  | API for Agents | ScrapIn |
|---|---|---|
| To start paying | $5 top-up, no plan | $30 paid trial; pay as you go from $500 |
| Unused money | Kept, no expiry | Pay-as-you-go credits valid 12 months |
| Agent signs itself up | Yes: one POST, a person claims it later | No |

## When ScrapIn is the better pick

- You already spend at their pay-as-you-go level and like their data.

## When API for Agents is the better pick

- You want to start at $5 and keep unused money.
- Your agent should sign up and quote on its own.

## What you get with API for Agents, whichever you pick

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Try it before you move anything

quote a profile, free:

```bash
curl -s -X POST https://apiforagents.dev/agent/identity -H "Content-Type: application/json" -d '{"type":"anonymous"}'
# exchange identity_assertion at /oauth2/token, then:
curl -s -X POST https://apiforagents.dev/v1/linkedin -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profiles","subjects":["satyanadella"],"estimateOnly":true}'
```

## Sources

1. [ScrapIn pricing](https://www.scrapin.io/pricing), seen 16 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# A People Data Labs alternative an agent can buy itself.

> A People Data Labs alternative: live LinkedIn profiles per record from $5, no monthly plan. Each answer says when it was measured.

Canonical: https://apiforagents.dev/alternatives/people-data-labs · Updated 2026-10-22

People Data Labs licenses a large stored dataset of people and companies on monthly plans. This API fetches public LinkedIn data when you ask, and every row says when it was measured.

- Profiles from: $0.004
- To start: $5
- Free trial: $0.10
- Facts checked: October 2026

> **The short answer** Pick PDL for bulk licensed datasets and broad person coverage. Pick this API for per-record LinkedIn lookups from $5, with freshness on every row.

## API for Agents and People Data Labs, side by side

Their side is from their own pages, linked below, as seen on 16 October 2026. Prices change: check the source before you decide.

|  | API for Agents | People Data Labs |
|---|---|---|
| Billing | Per record, pay as you go | Credits on monthly plans |
| To start paying | $5 top-up, no plan | Pro from $98 a month (free tier available) |
| Agent signs itself up | Yes: one POST, a person claims it later | No |

## When People Data Labs is the better pick

- You need bulk flat files or a very large stored dataset.
- You need contact data at dataset scale. Here, contacts are looked up one person at a time by LinkedIn handle.

## When API for Agents is the better pick

- You want each lookup fetched when you ask, dated.
- You do not want a monthly commitment.

## What you get with API for Agents, whichever you pick

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Try it before you move anything

quote a profile, free:

```bash
curl -s -X POST https://apiforagents.dev/agent/identity -H "Content-Type: application/json" -d '{"type":"anonymous"}'
# exchange identity_assertion at /oauth2/token, then:
curl -s -X POST https://apiforagents.dev/v1/linkedin -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profiles","subjects":["satyanadella"],"estimateOnly":true}'
```

## Sources

1. [People Data Labs pricing](https://www.peopledatalabs.com/pricing/person), seen 16 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# A Coresignal alternative an agent can buy itself.

> A Coresignal alternative for LinkedIn profiles and companies: per record from $5, no monthly plan, an exact quote before every call.

Canonical: https://apiforagents.dev/alternatives/coresignal · Updated 2026-10-22

Coresignal sells employee, company and jobs data on monthly credit plans. For smaller or irregular volumes, paying per record with no plan keeps the cost tied to use.

- Profiles from: $0.004
- To start: $5
- Free trial: $0.10
- Facts checked: October 2026

> **The short answer** Pick Coresignal for large recurring datasets. Pick this API for per-record lookups when you need them, starting at $5.

## API for Agents and Coresignal, side by side

Their side is from their own pages, linked below, as seen on 16 October 2026. Prices change: check the source before you decide.

|  | API for Agents | Coresignal |
|---|---|---|
| Billing | Per record, pay as you go | Credits on monthly plans |
| To start paying | $5 top-up, no plan | From $49 a month |
| Agent signs itself up | Yes: one POST, a person claims it later | No |

## When Coresignal is the better pick

- You need historical datasets delivered on a schedule.
- Your volume is large and steady.

## When API for Agents is the better pick

- Your volume is small, irregular or driven by an agent.
- You want the exact price before each call.

## What you get with API for Agents, whichever you pick

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Try it before you move anything

quote a profile, free:

```bash
curl -s -X POST https://apiforagents.dev/agent/identity -H "Content-Type: application/json" -d '{"type":"anonymous"}'
# exchange identity_assertion at /oauth2/token, then:
curl -s -X POST https://apiforagents.dev/v1/linkedin -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profiles","subjects":["satyanadella"],"estimateOnly":true}'
```

## Sources

1. [Coresignal pricing](https://coresignal.com/pricing/), seen 16 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Turn LinkedIn post engagers into leads. Who commented, who reacted.

> Get everyone who commented on or reacted to a LinkedIn post, with name and headline, then enrich the right ones. $0.002 per engager.

Canonical: https://apiforagents.dev/use-cases/post-engagers-to-leads · Updated 2026-10-16

People who comment on a post about your problem are telling you they care about it. Pull the commenters and reactors from any public post, with headline and profile link, keep the ones that fit, and enrich them into leads.

- For: Founders and growth teams
- Billed: Per record
- Free to start: $0.10
- Minimum top-up: $5

## How it works

1. Pick posts: your own, a competitor's, or a creator's in your space.
2. Pull the comments (the text says what they think) and the reactions.
3. Filter by headline for your buyer, then read full profiles for the ones that fit.

## The calls

the commenters:

```json
{
  "op": "postComments",
  "subjects": [
    "https://www.linkedin.com/posts/<post-id>"
  ],
  "limit": 100
}
```

the reactors:

```json
{
  "op": "postReactions",
  "subjects": [
    "https://www.linkedin.com/posts/<post-id>"
  ],
  "limit": 100
}
```

## What it costs

At today's per-record prices, pay as you go. Quotes are free, records that do not come back are refunded, and a record your account already fetched today is free.

| Job | Records | Cost |
|---|---|---|
| 100 commenters | 100 comments | $0.20 |
| 300 reactors | 300 reactions | $0.60 |
| Enrich the best 50 | 50 profiles | $0.20 |

## Questions

### Does it need my LinkedIn account or cookie?

No. Comments and reactions on public posts are read without any LinkedIn login.

### Can I get a person's own comments across LinkedIn?

Yes: profileComments and profileReactions return what one person recently commented on or reacted to.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# List a company's employees on LinkedIn. By title, seniority and function.

> List people at any company from LinkedIn, filtered by title, seniority, function and location. Full profiles at $0.004 each, quote first.

Canonical: https://apiforagents.dev/use-cases/company-employees · Updated 2026-10-16

Who runs engineering at Stripe? Who are the recruiters at Shopify? Search a company's people by title, seniority and function, and get each one as a full profile with current position and history.

- For: Sales, recruiting, research
- Billed: Per record
- Free to start: $0.10
- Minimum top-up: $5

## How it works

1. Name the company by LinkedIn handle or URL.
2. Filter by titles, seniority, function or location, up to the number you want.
3. Read the profiles that come back; each says when it was measured.

## The calls

engineering leaders at one company:

```json
{
  "op": "searchPeople",
  "company": "stripe",
  "seniority": [
    "director",
    "vice_president",
    "cxo"
  ],
  "functions": [
    "engineering"
  ],
  "limit": 25
}
```

## What it costs

At today's per-record prices, pay as you go. Quotes are free, records that do not come back are refunded, and a record your account already fetched today is free.

| Job | Records | Cost |
|---|---|---|
| 25 leaders at one company | 25 profiles | $0.10 |
| 100 people at one company | 100 profiles | $0.40 |

## Questions

### Can I get every employee of a large company?

Search returns people who match your filters, a page at a time. For large companies, narrow by title, function or location so each search is precise.

### Does it include emails?

No. Profiles include public LinkedIn fields: name, headline, location, positions, skills. A profile carries no contact details; for a work email or mobile number, send the same handle to the contacts endpoint, priced per call.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn lead enrichment. From a URL to a full record.

> Enrich leads with LinkedIn data: current title, company, location, skills and work history from a profile URL. $4 per 1,000 leads.

Canonical: https://apiforagents.dev/use-cases/lead-enrichment · Updated 2026-10-16

Turn a list of LinkedIn URLs into current titles, companies, locations and work history, then add each person's company: size, industry and website. No seat licence, no minimum contract, a quote before every batch.

- For: Sales and RevOps
- Billed: Per record
- Free to start: $0.10
- Minimum top-up: $5

## How it works

1. Collect LinkedIn profile URLs from your CRM, a form or a spreadsheet.
2. Send them ten at a time to the profiles operation and get each person's headline, location, skills and positions.
3. Take the current company from each person's positions and look it up with the companies operation for size, industry and website.
4. Write the fields back, keeping measuredAt so you know how fresh each value is.

## The calls

people, ten per call:

```json
{
  "op": "profiles",
  "subjects": [
    "satyanadella",
    "jeffweiner08"
  ],
  "fields": [
    "profile",
    "positions"
  ]
}
```

their companies:

```json
{
  "op": "companies",
  "subjects": [
    "microsoft"
  ]
}
```

## What it costs

At today's per-record prices, pay as you go. Quotes are free, records that do not come back are refunded, and a record your account already fetched today is free.

| Job | Records | Cost |
|---|---|---|
| Enrich 100 leads | 100 profiles | $0.40 |
| Enrich 1,000 leads | 1,000 profiles | $4.00 |
| 1,000 leads and their 400 companies | 1,400 records | $5.60 |

## Questions

### Does enrichment include email addresses and phone numbers?

No. The LinkedIn API returns what is public on the profile: name, headline, location, skills, positions, followers. A profile carries no contact details; the contacts endpoint looks up a work email and mobile number by the same handle, priced per call.

### How fresh is the data?

Every row carries measuredAt and whether it was captured fresh or served from a recent capture. Ask with "freshness": "fresh" to force a new capture.

### Can I enrich from a name and company instead of a URL?

Use people search with the person's name and company to find the profile first, then enrich it. Matching by name alone can pick the wrong person, so check the result.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn prospecting API. Build ICP lists by the hundred.

> Build prospect lists from LinkedIn: search people by title, seniority, function, company size and location. Full profiles at $0.004 each.

Canonical: https://apiforagents.dev/use-cases/sales-prospecting · Updated 2026-10-16

Describe your ideal buyer and get the list: heads of data at 51 to 200 person fintechs in London, founders who changed jobs this quarter, VPs of sales at companies hiring SDRs. Every result is a full profile.

- For: Founders and SDR teams
- Billed: Per record
- Free to start: $0.10
- Minimum top-up: $5

## How it works

1. Search companies that fit your ICP by industry, size and location.
2. List the people at each one, filtered by title, seniority and function.
3. Read their recent posts and comments to find a reason to reach out.
4. Hand the list to your sequencer or your AI SDR, with every source dated.

## The calls

the accounts:

```json
{
  "op": "searchCompanies",
  "query": "fintech",
  "locations": [
    "London"
  ],
  "companySizes": [
    "51-200"
  ],
  "limit": 25
}
```

the people at one account:

```json
{
  "op": "searchPeople",
  "company": "stripe",
  "seniority": [
    "director",
    "vice_president",
    "cxo"
  ],
  "functions": [
    "engineering"
  ],
  "limit": 10
}
```

## What it costs

At today's per-record prices, pay as you go. Quotes are free, records that do not come back are refunded, and a record your account already fetched today is free.

| Job | Records | Cost |
|---|---|---|
| 25 target accounts | 25 companies | $0.10 |
| 10 decision makers at each | 250 profiles | $1.00 |
| Their last 5 posts each | 1,250 posts | $2.50 |

## Questions

### Is this a Sales Navigator replacement?

For finding and reading profiles and companies, it covers what most teams use Sales Navigator for, by API and per record. It does not send InMail or connection requests.

### How do I avoid the wrong person?

Search within a company rather than globally when you can, and check the headline and current position in each row before you use it.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn sourcing API for recruiters. Find and screen candidates.

> Source candidates from LinkedIn by title, past companies, schools and experience, then pull skills and work history. $0.004 per profile.

Canonical: https://apiforagents.dev/use-cases/recruiting · Updated 2026-10-16

Search by current and past titles, past employers, schools, years of experience and location, then read each candidate's skills and positions side by side. Built for sourcing tools and recruiting agents.

- For: Recruiters and talent teams
- Billed: Per record
- Free to start: $0.10
- Minimum top-up: $5

## How it works

1. Search people by the titles, past companies and schools that fit the role.
2. Pull full profiles with positions for the shortlist.
3. Rank by tenure, skills and recent activity; open to work is a field.

## The calls

a sourcing search:

```json
{
  "op": "searchPeople",
  "titles": [
    "Senior Backend Engineer"
  ],
  "pastCompanies": [
    "stripe",
    "adyen"
  ],
  "locations": [
    "Amsterdam"
  ],
  "yearsOfExperience": [
    "6_10y"
  ],
  "limit": 25
}
```

## What it costs

At today's per-record prices, pay as you go. Quotes are free, records that do not come back are refunded, and a record your account already fetched today is free.

| Job | Records | Cost |
|---|---|---|
| A 25-person longlist | 25 profiles | $0.10 |
| 200 candidates across 8 searches | 200 profiles | $0.80 |

## Questions

### Can I see who is open to work?

Yes, isOpenToWork is a field on every profile row, as shown publicly on the profile.

### Can it find jobs too?

Yes. The jobs operation searches LinkedIn listings by title, location, salary and date, at $0.001 per listing.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Hiring signals from LinkedIn jobs. Who is hiring, for what, right now.

> Track LinkedIn job postings as buying signals: who is hiring which roles, where, and at what salary. $0.001 per listing.

Canonical: https://apiforagents.dev/use-cases/hiring-signals · Updated 2026-10-16

A company hiring three data engineers has a data problem this quarter. Search LinkedIn job listings by role, location and date, and turn them into a daily list of accounts with intent.

- For: Sales, investors, analysts
- Billed: Per record
- Free to start: $0.10
- Minimum top-up: $5

## How it works

1. Search listings for the roles that signal need for your product, posted in the last day or week.
2. Group by company, and look each company up for size and industry.
3. Alert your team or your agent on new matches every morning.

## The calls

this week's listings:

```json
{
  "op": "jobs",
  "query": "data engineer",
  "locations": [
    "United States"
  ],
  "postedWithin": "7d",
  "sort": "newest",
  "limit": 50
}
```

## What it costs

At today's per-record prices, pay as you go. Quotes are free, records that do not come back are refunded, and a record your account already fetched today is free.

| Job | Records | Cost |
|---|---|---|
| A daily scan of 50 listings | 50 jobs | $0.05 |
| A month of daily scans | 1,500 jobs | $1.50 |

## Questions

### Does it include the job description?

Yes: every listing has the full description, salary text where shown, employment type, location, the listed date and the apply URL.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn social listening. What your market is saying.

> Monitor LinkedIn posts that mention your brand, a competitor or a topic, with engagement counts. $0.002 per post, no monthly plan.

Canonical: https://apiforagents.dev/use-cases/social-listening · Updated 2026-10-16

Search LinkedIn posts by keyword or mention, newest first, with likes, comments and reposts on each. Then read the comments on the posts that matter.

- For: Marketing and founders
- Billed: Per record
- Free to start: $0.10
- Minimum top-up: $5

## How it works

1. Search posts that mention your brand, competitors or a pain point, from the last day or week.
2. Pull the comments and reactions on the posts with real engagement.
3. Reply, reach out, or feed the themes to your content plan.

## The calls

posts about a topic:

```json
{
  "op": "searchPosts",
  "query": "AI agents for sales",
  "postedWithin": "7d",
  "sort": "newest",
  "limit": 50
}
```

who engaged:

```json
{
  "op": "postComments",
  "subjects": [
    "https://www.linkedin.com/posts/<post-id>"
  ],
  "limit": 50
}
```

## What it costs

At today's per-record prices, pay as you go. Quotes are free, records that do not come back are refunded, and a record your account already fetched today is free.

| Job | Records | Cost |
|---|---|---|
| A weekly scan of 50 posts | 50 posts | $0.10 |
| Comments on the top 5 posts | 250 comments | $0.50 |

## Questions

### Can I monitor a specific person?

Yes: the posts operation reads one person's recent posts, and the profile comments and reactions operations show what they engage with.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Competitor monitoring on LinkedIn. Ads, posts, hires and headcount.

> Track competitors on LinkedIn: their ads in the Ad Library, their posts, their job openings and headcount. Pay per record from $5.

Canonical: https://apiforagents.dev/use-cases/competitor-monitoring · Updated 2026-10-16

Four signals in one place: the ads a competitor runs, what they post, who they are hiring, and how their headcount and followers move. Every value is dated, so a change is a change.

- For: Product marketing and strategy
- Billed: Per record
- Free to start: $0.10
- Minimum top-up: $5

## How it works

1. Read the competitor's live ads from the LinkedIn Ad Library.
2. Read their company page for headcount and followers, and their leaders' recent posts.
3. Search their job listings to see where they are investing.

## The calls

their ads:

```json
{
  "op": "adsLibrary",
  "subject": "https://www.linkedin.com/ad-library/search?companyIds=<company-id>",
  "limit": 25
}
```

their open roles:

```json
{
  "op": "jobs",
  "query": "engineer",
  "companies": [
    "<company>"
  ],
  "limit": 25
}
```

## What it costs

At today's per-record prices, pay as you go. Quotes are free, records that do not come back are refunded, and a record your account already fetched today is free.

| Job | Records | Cost |
|---|---|---|
| 25 ads | 25 ads | $0.05 |
| 25 job listings | 25 jobs | $0.025 |
| Company page | 1 company | $0.004 |

## Questions

### Can I see ad spend?

No. The Ad Library shows the ad, who paid, format, dates, targeting location and, where LinkedIn shows it, impressions. LinkedIn does not publish spend.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn data for AI sales agents. An SDR that reads before it writes.

> Give an AI SDR real LinkedIn context: profile, company, recent posts and comments, quoted before every call. The agent signs itself up.

Canonical: https://apiforagents.dev/use-cases/ai-sales-agent · Updated 2026-10-16

An AI sales agent is only as good as what it knows about the person. Let it read the profile, the company and the last few posts before it writes a line, and let it sign up and pay its own way within a budget you set.

- For: Teams building AI SDRs
- Billed: Per record
- Free to start: $0.10
- Minimum top-up: $5

## How it works

1. The agent registers itself with one POST and starts on free credit; you claim it with a code.
2. For each lead it quotes, then reads the profile with recent posts in one call, and the company.
3. It writes the first line from what the person actually said, and logs what each lead cost.
4. maxUsd on every call is a hard ceiling it cannot exceed.

## The calls

a profile with its recent posts, one call:

```json
{
  "op": "profiles",
  "subjects": [
    "satyanadella"
  ],
  "include": {
    "posts": {
      "limit": 5
    }
  },
  "maxUsd": 0.02
}
```

## What it costs

At today's per-record prices, pay as you go. Quotes are free, records that do not come back are refunded, and a record your account already fetched today is free.

| Job | Records | Cost |
|---|---|---|
| One lead: profile, company, 5 posts | 7 records | $0.018 |
| 1,000 leads | 7,000 records | $18.00 |

## Questions

### Can the agent buy more credit on its own?

No. It can quote, run and spend what it has. When the balance is short it hands a person a top-up link and stops. A person always pays.

### How do I stop runaway spend?

Set maxUsd on calls; the API refuses anything above it before spending. Agents spend from one balance you control, and you can turn any agent off in the console.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Account research with LinkedIn data. A one-page brief before every call.

> Research a target account from LinkedIn: company facts, decision makers, their recent posts and current job openings. About $0.10 per brief.

Canonical: https://apiforagents.dev/use-cases/account-research · Updated 2026-10-16

Before a call or a pitch: the company's size and focus, the people who decide, what they have posted lately and what the company is hiring for. One brief, a few cents, every fact dated.

- For: Account executives and founders
- Billed: Per record
- Free to start: $0.10
- Minimum top-up: $5

## How it works

1. Look up the company.
2. List its leaders by seniority and function.
3. Read the last posts of the two or three that matter, and the open roles.

## The calls

the company:

```json
{
  "op": "companies",
  "subjects": [
    "hubspot"
  ]
}
```

its leaders:

```json
{
  "op": "searchPeople",
  "company": "hubspot",
  "seniority": [
    "cxo",
    "vice_president"
  ],
  "limit": 10
}
```

## What it costs

At today's per-record prices, pay as you go. Quotes are free, records that do not come back are refunded, and a record your account already fetched today is free.

| Job | Records | Cost |
|---|---|---|
| Company + 10 leaders + 15 posts + 20 jobs | 46 records | $0.094 |

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Market mapping with LinkedIn data. Every company in a niche.

> Map a market from LinkedIn: every company in a niche by industry, size and location, with employee counts and websites. $0.004 per company.

Canonical: https://apiforagents.dev/use-cases/market-mapping · Updated 2026-10-16

Size a market before you build or sell into it: search companies by keyword, industry, size and location, then compare headcount, followers and founding years across the whole set.

- For: Founders, investors, analysts
- Billed: Per record
- Free to start: $0.10
- Minimum top-up: $5

## How it works

1. Search companies by keyword and filters, a page of fifty at a time.
2. Compare employee counts, founding years and specialities across the set.
3. Repeat monthly: every value is dated, so growth is visible.

## The calls

a niche:

```json
{
  "op": "searchCompanies",
  "query": "climate tech",
  "locations": [
    "Germany"
  ],
  "limit": 50
}
```

## What it costs

At today's per-record prices, pay as you go. Quotes are free, records that do not come back are refunded, and a record your account already fetched today is free.

| Job | Records | Cost |
|---|---|---|
| A 50-company niche | 50 companies | $0.20 |
| A 500-company market | 500 companies | $2.00 |

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Local lead generation from Google Maps. Places first, then the people who run them.

> Find local businesses on Google Maps by keyword and city, read phone, website and hours, then get the owner's work email by LinkedIn handle.

Canonical: https://apiforagents.dev/use-cases/local-lead-generation · Updated 2026-10-21

Search Google Maps for a type of business in a city and get each place as a full card with contact, address, hours and rating. For the owner, find their LinkedIn profile and ask for a work email or phone by handle.

- Places: from $0.000225 per record
- People: from $0.001 per record
- Contacts: priced per call
- Free to start: $0.10

## The workflow

1. Run Google Maps search with a query and a location, such as dentists in Austin. Set website to "without" to keep places that list no website, or minRating to keep well rated ones.
2. Every hit is a full card. For places you already hold by Maps URL, Google Maps places returns the same card: rating, review keywords, contact, address, hours, popular times and socials.
3. For the person behind a business, run LinkedIn searchPeople with the business name as the query and titles such as Owner or Founder.
4. Check the headline and current position, then send the LinkedIn handle to contacts reveal. Ask for ["email"] alone when you do not need the number.
5. Write the rows to your CRM with the date each was measured, and run it on a schedule from your own job to catch new places.

## Who uses it

- **[Web and marketing agencies](https://apiforagents.dev/platforms/google_maps/search-api).** Search a trade in a city with website set to "without" and you have a list of businesses that need a site.
- **Local software sales.** Booking, POS and review tools sell to salons, clinics and restaurants. A Maps search by category and city is the account list.
- **Territory planning.** Count places, ratings and review volume by city before you send a rep or open a branch.

## Operations used

List prices per record. A call can carry a minimum, so quote first: the quote is free, and a record that does not come back is not charged.

| Step | Operation | What comes back | Price |
|---|---|---|---|
| 1 | Google Maps search | Places for a keyword in a location, each a full card | $0.000225 per record |
| 2 | Google Maps places | Rating, contact, address, hours, popular times, socials | $0.000225 per record |
| 3 | LinkedIn searchPeople | Profiles with headline, location and positions | $0.004 per record |
| 4 | Contacts reveal | Work email and mobile number by LinkedIn handle | quoted per call |

> **Quote before you loop** Send each search with "estimateOnly": true to see the most it can cost, then set "maxUsd" on every call in your city loop so one broad query cannot run past your budget.

## The operations in this workflow

- [Google Maps search](https://apiforagents.dev/platforms/google_maps/search-api): Places for a keyword in a location, each a full card
- [Google Maps places](https://apiforagents.dev/platforms/google_maps/places-api): Rating, contact, address, hours, popular times, socials
- [LinkedIn searchPeople](https://apiforagents.dev/platforms/linkedin/people-search-api): Profiles with headline, location and positions
- [Contacts reveal](https://apiforagents.dev/platforms/contacts/work-email-and-phone-api): Work email and mobile number by LinkedIn handle

## Questions

### Does the Google Maps search return phone numbers?

Each hit is a full place card with the contact details the place lists on Maps, along with address, hours and rating. A place that lists no phone has none to return.

### How do I get the owner's email?

Find the owner's LinkedIn profile with people search, then send the handle to the contacts reveal operation. A part that comes back empty is not charged, and a part your account already holds is free.

### Can I find businesses without a website?

Yes. Set website to "without" on the search and only places that list no website come back.

### Where should the LinkedIn handle come from?

From evidence: a people search result or a pasted profile URL. A handle guessed from a name can belong to someone else and is still charged.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Review monitoring for local businesses. Google Maps, Yelp, Tripadvisor and Booking.com.

> Pull new reviews from Google Maps, Yelp, Tripadvisor and Booking.com with text, rating, date and owner reply, into one feed. Priced per review.

Canonical: https://apiforagents.dev/use-cases/review-monitoring · Updated 2026-10-21

Collect reviews for your locations, or a competitor's, from four review sites into one feed. Each platform has a reviews operation that takes up to ten places per call and returns text, rating, date and the owner's reply where there is one.

- Google Maps: from $0.000225 per record
- Yelp: from $0.000225 per record
- Tripadvisor: from $0.0018 per record
- Booking.com: from $0.0018 per record

## The workflow

1. List each location's URLs: a Google Maps place URL, a yelp.com/biz/ URL, a Tripadvisor place URL and a booking.com/hotel/ URL.
2. Run Google Maps reviews with sort "newest" for the latest reviews, or "rating_low" to read the worst first.
3. Run Yelp reviews with the same businesses' URLs or slugs.
4. Run Tripadvisor reviews with since set to the day of your last run, and Booking.com reviews with sort "newest" and since.
5. Read the free history operation on each platform to chart rating and review count from what earlier captures stored.
6. Run it on a schedule from your own job, and alert on low ratings or reviews with no reply.

## Who uses it

- **Multi-location brands.** One feed of every new review across every branch, so a bad week at one location is seen the same day you run the job.
- **Agencies.** Monthly reputation reports for clients: rating trend, review volume and how often the owner replied.
- **[Hotels](https://apiforagents.dev/platforms/booking/reviews-api).** Booking.com and Tripadvisor reviews carry traveler or trip type and sub-ratings, so you can see what families and business guests each say.

## Operations used

List prices per record. A call can carry a minimum, so quote first: the quote is free, and a record that does not come back is not charged.

| Step | Operation | What comes back | Price |
|---|---|---|---|
| 1 | Google Maps reviews | Text, stars, date, reviewer, owner response | $0.000225 per record |
| 2 | Yelp reviews | Text, rating, date, reactions, reviewer, owner reply | $0.000225 per record |
| 3 | Tripadvisor reviews | Text, rating, dates, trip type, sub-ratings, owner response | $0.0018 per record |
| 4 | Booking.com reviews | Liked and disliked text, score, date, traveler type, property response | $0.0018 per record |

> **Read coverage before data** A place URL that does not resolve is reported in the answer's coverage, not as zero reviews. Check coverage first, so a broken link never looks like a quiet week.

## The operations in this workflow

- [Google Maps reviews](https://apiforagents.dev/platforms/google_maps/reviews-api): Text, stars, date, reviewer, owner response
- [Yelp reviews](https://apiforagents.dev/platforms/yelp/reviews-api): Text, rating, date, reactions, reviewer, owner reply
- [Tripadvisor reviews](https://apiforagents.dev/platforms/tripadvisor/reviews-api): Text, rating, dates, trip type, sub-ratings, owner response
- [Booking.com reviews](https://apiforagents.dev/platforms/booking/reviews-api): Liked and disliked text, score, date, traveler type, property response

## Questions

### How many reviews come back per call?

Each reviews call takes up to ten places, and limit sets how many reviews come back, up to 100.

### Can I get only negative reviews?

Yes. Sort Google Maps reviews by "rating_low", keep ratings 1 and 2 on Tripadvisor with ratings, and use scoreBands "poor" and "average" or sort "rating_low" on Booking.com.

### Do I get the owner's reply?

Yes, where there is one: owner response on Google Maps and Tripadvisor, owner reply on Yelp, and the property response on Booking.com.

### Does history cost anything?

No. The history operations are free and read only what earlier captures already stored. They do not fetch new reviews.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Amazon review analysis. What buyers praise and what they complain about.

> Pull Amazon reviews with text, rating, date, verified-purchase flag and helpful votes, up to 100 per product, then let your agent find the themes.

Canonical: https://apiforagents.dev/use-cases/amazon-review-analysis · Updated 2026-10-21

Find the products in a category, pull their reviews, and let a model group the complaints and the praise. Reviews come with rating, date, verified-purchase and Vine flags, helpful votes and the variant bought.

- Records: from $0.00045 per record
- Per call: Up to ten products
- Free to start: $0.10

## The workflow

1. Run Amazon search with a query and a marketplace such as "com" or "in". Every hit is a full product card with its search rank.
2. Pick the ASINs to study: yours and the top competitors.
3. Run Amazon reviews with up to ten ASINs per call. Amazon caps reviews at 100 per product.
4. Keep verified-purchase reviews, weight by helpful votes, and split by variant to see whether one size or colour drives the complaints.
5. Run Amazon products for price, rating and count, and best-sellers rank, so each theme sits next to the numbers.

## Three ways to use it

- **Product teams.** Find the faults buyers mention most often in your own reviews and fix them in the next version.
- **Brands against competitors.** Read the top competitors' reviews side by side and see where they disappoint the buyers you want.
- **[New product research](https://apiforagents.dev/platforms/amazon/search-api).** Search a category, then look for recurring complaints on the best sellers. A gap people keep asking for is a product idea.

## Operations used

List prices per record. A call can carry a minimum, so quote first: the quote is free, and a record that does not come back is not charged.

| Step | Operation | What comes back | Price |
|---|---|---|---|
| 1 | Amazon search | Full product cards with search rank | $0.00045 per record |
| 2 | Amazon reviews | Text, rating, date, verified-purchase and Vine flags, helpful votes, variant | $0.00045 per record |
| 3 | Amazon products | Price, list price, rating and count, best-sellers rank, seller | $0.0014 per record |

> **Quote first** Ten ASINs at 100 reviews each is up to a thousand records. Send the call with "estimateOnly": true, then run it with "maxUsd" set to that figure.

## The operations in this workflow

- [Amazon search](https://apiforagents.dev/platforms/amazon/search-api): Full product cards with search rank
- [Amazon reviews](https://apiforagents.dev/platforms/amazon/reviews-api): Text, rating, date, verified-purchase and Vine flags, helpful votes, variant
- [Amazon products](https://apiforagents.dev/platforms/amazon/product-api): Price, list price, rating and count, best-sellers rank, seller

## Questions

### Which Amazon sites are covered?

com, in, co.uk, de, fr, it, es, ca, com.au, co.jp, com.mx and com.br, chosen with marketplace. A product URL carries its own site.

### Is there a limit on reviews per product?

Amazon caps reviews at 100 per product, so that is the most one product can return.

### Can I track rating changes over time?

Yes. The free history operation charts rating and ratings count for products you have already captured.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# E-commerce price tracking. Amazon, Shopify stores and Google Shopping.

> Track product prices across Amazon, Shopify storefronts and Google Shopping: price, list price, stock and variants. Free history of past captures.

Canonical: https://apiforagents.dev/use-cases/ecommerce-price-tracking · Updated 2026-10-21

Watch competitor prices in three places: Amazon product cards, any Shopify storefront's catalogue, and Google Shopping offers across merchants. Run the same calls on a schedule from your own job and read the free history for the trend.

- Amazon: from $0.00045 per record
- Shopify: from $0.0009 per record
- Google Shopping: from $0.00009 per record
- History: Free

## The workflow

1. For Amazon, run Amazon products with up to ten ASINs or product URLs: price, list price, deal and Prime flags, availability and seller.
2. For a Shopify store, run Shopify products with the store URL, up to five stores per call: every product with its price range, sale flag, stock and variants.
3. For the wider market, run Google shopping with a product query and a country: title, merchant, price and rating per offer.
4. Read Amazon history (price, list_price) and Shopify history (price_from, price_to, in_stock) for free to chart what past captures saw.
5. Run it on a schedule from your own job and alert when a price or stock flag changes.

## Who uses it

- **[Direct-to-consumer brands](https://apiforagents.dev/platforms/shopify/products-api).** Read a competitor's whole Shopify catalogue each week and see what went on sale or out of stock.
- **Marketplace sellers.** Watch the Amazon listings you compete with for price, deal flags and best-sellers rank, and reprice from data.
- **Pricing analysts.** Compare one product across merchants with Google Shopping, then follow the ones that matter on their own stores.

## Operations used

List prices per record. A call can carry a minimum, so quote first: the quote is free, and a record that does not come back is not charged.

| Step | Operation | What comes back | Price |
|---|---|---|---|
| 1 | Amazon products | Price, list price, deal and Prime flags, availability, seller | $0.0014 per record |
| 2 | Shopify products | Every product with price range, sale flag, stock, variants | $0.0009 per record |
| 3 | Google shopping | Offers with title, merchant, price, rating | $0.0027 per record |

> **Cap every run** A Shopify store can list hundreds of products. Set limit to what you will read and "maxUsd" on every call in the loop, so a large catalogue cannot surprise you.

## The operations in this workflow

- [Amazon products](https://apiforagents.dev/platforms/amazon/product-api): Price, list price, deal and Prime flags, availability, seller
- [Shopify products](https://apiforagents.dev/platforms/shopify/products-api): Every product with price range, sale flag, stock, variants
- [Google shopping](https://apiforagents.dev/platforms/google/shopping-api): Offers with title, merchant, price, rating

## Questions

### Does history cost anything?

No. History reads only what earlier captures already stored, at no charge. It does not fetch new prices; run the products call for that.

### Which Shopify stores work?

Any Shopify-powered storefront, by store URL, up to five per call.

### Can I track an Amazon price in another country?

Yes. Set marketplace to the site's domain suffix, such as co.uk, de or in. A product URL carries its own site.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Quick commerce price and stock tracking. Blinkit, Instamart and Zepto, by pincode.

> Track price, MRP, discount and stock on Blinkit, Swiggy Instamart and Zepto at the dark store serving a pincode. By search, category or product URL.

Canonical: https://apiforagents.dev/use-cases/quick-commerce-price-and-stock-tracking · Updated 2026-10-21

Prices and stock on quick commerce apps change from store to store. Name the store by pincode and city, by its store id or by coordinates, then search, read a category shelf, or read products by URL, as a shopper there would see them.

- Blinkit: from $0.0009 per record
- Instamart: from $0.0009 per record
- Zepto: from $0.0009 per record
- History: Free

## The workflow

1. Pick the pincodes to watch and add the city to each, so the pincode resolves to the right store.
2. Run search on Blinkit, Instamart and Zepto with your product query and store.pincode: listings with price, MRP, stock and rank.
3. Or run category with the app's own aisle and shelf names, such as Dairy, Bread & Eggs and Milk. A name that is not on the menu is refused and nothing is charged.
4. For products you follow by URL, run products: price, MRP, discount, stock count, rating, seller and manufacturer.
5. Keep the store id an answer gives you and send store.storeId next time. It is the most exact way to name a store.
6. Read history for free to chart price, discount_pct and stock_count from earlier captures, and run it on a schedule from your own job.

## Who uses it

- **[FMCG brands](https://apiforagents.dev/platforms/blinkit/category-api).** See where your products are out of stock, by area, and how your shelf looks next to competitors on the same store.
- **Retail analysts.** Price the same basket on all three apps at the same pincode and compare discounts.
- **D2C sellers.** Follow your own listings by URL for price, MRP and rating, and catch a stock-out early.

## Operations used

List prices per record. A call can carry a minimum, so quote first: the quote is free, and a record that does not come back is not charged.

| Step | Operation | What comes back | Price |
|---|---|---|---|
| 1 | Blinkit search | Listings with price, MRP, stock and rank at one store | $0.0009 per record |
| 2 | Swiggy Instamart search | Listings with price, MRP, stock and rank at one store | $0.0009 per record |
| 3 | Zepto search | Listings with price, MRP, stock and rank at one store | $0.0009 per record |
| 4 | Blinkit category | One shelf at one store, by the app's menu names | $0.0009 per record |
| 5 | Blinkit products | Price, MRP, discount, stock count, rating, seller, manufacturer | $0.0009 per record |

Instamart and Zepto have the same category and products operations as Blinkit.

> **Name the store exactly** Give the city with every pincode, then switch to the storeId the first answer returns. The pincode is resolved to the nearest serving store, and storeId removes any doubt about which one.

## The operations in this workflow

- [Blinkit search](https://apiforagents.dev/platforms/blinkit/search-api): Listings with price, MRP, stock and rank at one store
- [Swiggy Instamart search](https://apiforagents.dev/platforms/instamart/search-api): Listings with price, MRP, stock and rank at one store
- [Zepto search](https://apiforagents.dev/platforms/zepto/search-api): Listings with price, MRP, stock and rank at one store
- [Blinkit category](https://apiforagents.dev/platforms/blinkit/category-api): One shelf at one store, by the app's menu names
- [Blinkit products](https://apiforagents.dev/platforms/blinkit/price-and-stock-api): Price, MRP, discount, stock count, rating, seller, manufacturer

## Questions

### Which apps are covered?

Blinkit, Swiggy Instamart and Zepto, one store per call.

### How do I name the store?

With one of storeId, a 6-digit pincode (add the city when it is ambiguous), or lat and lon. storeId wins over the others.

### What if a category name is wrong?

Category and shelf must be the app's own menu names. A name that is not on the menu is refused and nothing is charged.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Influencer discovery. Instagram, TikTok and YouTube.

> Find creators on Instagram, TikTok and YouTube by keyword, hashtag or lookalike, then read followers, recent posts and engagement. Priced per record.

Canonical: https://apiforagents.dev/use-cases/influencer-discovery · Updated 2026-10-21

Start from a keyword, a hashtag or one creator you like, and collect candidate accounts on each platform. Then read their profiles and recent posts to judge reach and engagement before you reach out.

- Instagram: from $0.00045 per record
- TikTok: from $0.00045 per record
- YouTube: from $0.00045 per record
- Free to start: $0.10

## The workflow

1. On Instagram, run search for accounts by keyword, hashtag for posts tagged with your topic, and similar for accounts related to one you already like.
2. On TikTok, run search for accounts by keyword (every hit is a full profile card), or searchPosts by keyword or hashtag to see who posts on the topic.
3. On YouTube, take channel handles from your research and run channels with include.videos to get each channel's recent videos with views, likes and comments in one call.
4. On Instagram, run profiles with include.posts for each account's recent posts in the same call. Add fields ["contact"] for the business email and phone fields the account lists.
5. Rank by engagement on recent posts, not follower count alone, and read the free history operation for follower growth from past captures.

## Who uses it

- **Brands.** Build a shortlist of creators who already post about your category, with their recent numbers, before any outreach.
- **[Agencies](https://apiforagents.dev/platforms/instagram/similar-accounts-api).** Start from one creator a client likes and expand with Instagram's similar accounts.
- **Creator platforms.** Fill and refresh creator profiles across three platforms from one API, with every value dated.

## Operations used

List prices per record. A call can carry a minimum, so quote first: the quote is free, and a record that does not come back is not charged.

| Step | Operation | What comes back | Price |
|---|---|---|---|
| 1 | Instagram search | Accounts by name or keyword | $0.00045 per record |
| 2 | Instagram similar | Accounts related to one account | $0.00045 per record |
| 3 | Instagram profiles | Profile cards, with recent posts when asked | $0.0018 per record |
| 4 | TikTok search | Accounts by keyword, each a full profile card | $0.00045 per record |
| 5 | TikTok posts | Views, likes, comments, shares, saves per post | $0.0018 per record |
| 6 | YouTube channels | Channel cards, with recent videos when asked | $0.00045 per record |

> **Use handles you saw** Take every handle from a search result or a pasted URL, never from a guess at a name. A guessed handle is still charged and can be a different account.

## The operations in this workflow

- [Instagram search](https://apiforagents.dev/platforms/instagram/account-search-api): Accounts by name or keyword
- [Instagram similar](https://apiforagents.dev/platforms/instagram/similar-accounts-api): Accounts related to one account
- [Instagram profiles](https://apiforagents.dev/platforms/instagram/profile-api): Profile cards, with recent posts when asked
- [TikTok search](https://apiforagents.dev/platforms/tiktok/account-search-api): Accounts by keyword, each a full profile card
- [TikTok posts](https://apiforagents.dev/platforms/tiktok/posts-api): Views, likes, comments, shares, saves per post
- [YouTube channels](https://apiforagents.dev/platforms/youtube/channel-api): Channel cards, with recent videos when asked

## Questions

### Can I get a creator's email?

On Instagram, ask for fields ["contact"] on profiles and the business email and phone fields come back where the account lists them publicly.

### How do I find YouTube channels?

The YouTube operations read channels you name by @handle, channel id or URL. Find candidates in your research, or with Google search and site set to youtube.com, then read them.

### How do I measure engagement?

Read recent posts: Instagram posts carry likes and comments, TikTok posts carry views, likes, comments, shares and saves, and YouTube videos carry views, likes and comments.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Brand monitoring on Reddit and X. What people say when you are not in the room.

> Search Reddit and X posts that mention your brand or a competitor, then read the Reddit comments on the threads that matter. Priced per record.

Canonical: https://apiforagents.dev/use-cases/brand-monitoring-reddit-x · Updated 2026-10-21

Search all of Reddit and X for your brand, product or competitor names, newest first, then pull the comments on the Reddit threads with real discussion. Feed the text to your model for sentiment and themes.

- Reddit: from $0.0045 per record
- X: from $0.000225 per record
- Free to start: $0.10

## The workflow

1. Run Reddit search with your brand name and sort "newest". For a weekly digest, use sort "top" with postedWithin "7d"; postedWithin applies to top only.
2. Run X searchPosts with the same query for what X is saying, across all authors.
3. Pick the Reddit threads with the most comments and run Reddit comments with up to ten permalinks per call.
4. Watch the subreddits where your buyers talk with Reddit subreddit, sort "newest" or "hot".
5. Read Reddit history for free to see how a thread's score and comment count moved across your captures.
6. Run it on a schedule from your own job and send the new mentions to your team.

## Who uses it

- **[Founders](https://apiforagents.dev/platforms/reddit/search-api).** Know the day someone asks for a tool like yours, or complains about the one they use.
- **Support and product.** Find bug reports and feature requests that never reach your inbox.
- **Competitive research.** Read what users say about competitors in their own words, thread by thread.

## Operations used

List prices per record. A call can carry a minimum, so quote first: the quote is free, and a record that does not come back is not charged.

| Step | Operation | What comes back | Price |
|---|---|---|---|
| 1 | Reddit search | Posts across Reddit for a keyword | $0.0045 per record |
| 2 | Reddit comments | Top comments on up to ten posts | $0.0045 per record |
| 3 | Reddit subreddit | A subreddit's listing under one sort | $0.0045 per record |
| 4 | X / Twitter searchPosts | Posts by keyword across all authors | $0.000225 per record |

> **Quote first, then cap** Send the search with "estimateOnly": true to see the most it can cost, and set "maxUsd" on each scheduled run so a busy news day cannot overspend.

## The operations in this workflow

- [Reddit search](https://apiforagents.dev/platforms/reddit/search-api): Posts across Reddit for a keyword
- [Reddit comments](https://apiforagents.dev/platforms/reddit/comments-api): Top comments on up to ten posts
- [Reddit subreddit](https://apiforagents.dev/platforms/reddit/subreddit-api): A subreddit's listing under one sort
- [X / Twitter searchPosts](https://apiforagents.dev/platforms/x_twitter/post-search-api): Posts by keyword across all authors

## Questions

### Can I search Reddit comments by keyword?

Search finds posts. Pull the comments on the posts you care about with the comments operation, up to ten posts per call.

### Can I find X accounts as well as posts?

Yes. A separate search operation finds X accounts by keyword, a name, a topic or a bio phrase.

### How do I avoid reading the same post twice?

Keep the post ids or permalinks you have seen and skip them on the next run. Reddit history is free for posts you already captured.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Hotel and short-term rental price research. Booking.com and Airbnb, priced for a stay.

> Compare Booking.com and Airbnb prices for real stay dates: nightly and total price, availability, scores and amenities. Free history of past captures.

Canonical: https://apiforagents.dev/use-cases/hotel-and-rental-price-research · Updated 2026-10-21

Prices on Booking.com and Airbnb depend on the dates and the party. Send the stay with every call, check-in and check-out, and get prices for those nights with scores, rooms or amenities, and policies alongside.

- Booking.com: from $0.0018 per record
- Airbnb: from $0.0018 per record
- History: Free

## The workflow

1. Run Booking.com search with a location and stay dates. Narrow with propertyType, minStars, minRating, priceMin and priceMax, and sort by price_low or rating_high.
2. Run Booking.com properties on the properties you follow: price from, guest score and category scores, rooms with availability and price, facilities and policies.
3. Run Airbnb listings by listing URL or room id with stay dates and the party (adults, children, pets): nightly and total price, availability, ratings by category, amenities, house rules and cancellation policy.
4. Repeat for several date pairs, a weekday, a weekend and a holiday, to see how price moves with demand.
5. Read history for free: price_from and guest_score on Booking.com, price_per_night and total_price on Airbnb, from past captures.

## Who uses it

- **[Hosts and property managers](https://apiforagents.dev/platforms/airbnb/listings-api).** Price your nights against the listings near you for the same dates and party size.
- **Hotel revenue teams.** Read the rooms and prices of your competitive set on Booking.com for the dates you are selling.
- **[Rate comparison](https://apiforagents.dev/platforms/tripadvisor/hotels-api).** Tripadvisor hotel cards with stay dates carry the online travel agency offers for that stay.

## Operations used

List prices per record. A call can carry a minimum, so quote first: the quote is free, and a record that does not come back is not charged.

| Step | Operation | What comes back | Price |
|---|---|---|---|
| 1 | Booking.com search | Properties for a destination and stay, with Booking's filters | $0.0018 per record |
| 2 | Booking.com properties | Price from, scores, rooms with availability and price, policies | $0.0018 per record |
| 3 | Airbnb listings | Nightly and total price, availability, ratings, amenities, rules | $0.0018 per record |
| 4 | Tripadvisor hotels | Rating, rank, amenities, offers for the stay | $0.0018 per record |

> **Always send the stay** Without check-in and check-out a Booking.com property has no price to show. Quote each date loop with "estimateOnly": true first, and set "maxUsd" on each run.

## The operations in this workflow

- [Booking.com search](https://apiforagents.dev/platforms/booking/search-api): Properties for a destination and stay, with Booking's filters
- [Booking.com properties](https://apiforagents.dev/platforms/booking/hotels-api): Price from, scores, rooms with availability and price, policies
- [Airbnb listings](https://apiforagents.dev/platforms/airbnb/listings-api): Nightly and total price, availability, ratings, amenities, rules
- [Tripadvisor hotels](https://apiforagents.dev/platforms/tripadvisor/hotels-api): Rating, rank, amenities, offers for the stay

## Questions

### Why do I need dates?

Both sites price by the nights and the party. Without stay dates a Booking.com property has no price, and an Airbnb nightly price depends on the guests you send.

### Which currency do prices come back in?

Set stay.currency to an ISO 4217 code such as USD, INR or EUR on Booking.com and Airbnb.

### Can I search Airbnb by city?

The Airbnb operations read listings by URL or room id. Collect the listings you want to follow first, then read them for each stay.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Job market research. Indeed, Naukri, Upwork and LinkedIn jobs.

> Study demand for a role across Indeed, Naukri, Upwork and LinkedIn jobs: listings, salary text, skills, budgets and dates. Priced per listing.

Canonical: https://apiforagents.dev/use-cases/job-market-research · Updated 2026-10-21

Count who is hiring for a role, where, and at what pay, across four job boards. Search each with the same title, keep the posting dates, and compare salaries, skills and the remote share.

- Indeed: from $0.000045 per record
- Naukri: from $0.0018 per record
- Upwork: from $0.0027 per record
- LinkedIn jobs: $0.001 per record

## The workflow

1. Run Indeed search with a query, location and country, plus postedWithin and employmentType: full postings with salary, skills and employer signals.
2. Run Naukri search for India with experience, salaryMin and salaryMax in lakhs, locations and workplace. Add fetchDetails for each posting's full description; it is slower.
3. Run Upwork search for freelance demand: budget or hourly range, experience level, client history and project length, with proposal counts on every posting.
4. Run LinkedIn jobs with a title query, locations, workplace, experienceLevel and postedWithin: title, company, location, salary text, listed date and description.
5. Group by company, city and skill. Read the free history operations on Naukri (applicants, views) and Upwork (applicants, hired) to see how postings filled.

## Who uses it

- **Recruiters and staffing firms.** See which cities and companies are hiring for a role this month, and at what pay.
- **[Freelancers and agencies](https://apiforagents.dev/platforms/upwork/jobs-api).** Read Upwork demand by budget, client history and project length before you pick a niche.
- **Analysts and investors.** Track hiring by company and skill as a signal of where money is going.

## Operations used

List prices per record. A call can carry a minimum, so quote first: the quote is free, and a record that does not come back is not charged.

| Step | Operation | What comes back | Price |
|---|---|---|---|
| 1 | Indeed search | Full postings with salary, skills, employer signals | $0.000045 per record |
| 2 | Naukri search | Postings with the board's filters, full text with fetchDetails | $0.0018 per record |
| 3 | Upwork search | Postings with budget, client profile, proposal counts | $0.0027 per record |
| 4 | LinkedIn jobs | Title, company, location, salary text, listed date, description | $0.001 per record |

> **Quote the big boards first** A Naukri search returns 50 to 200 rows per call. Quote it with "estimateOnly": true, and set "maxUsd" on every board in the loop.

## The operations in this workflow

- [Indeed search](https://apiforagents.dev/platforms/indeed/jobs-api): Full postings with salary, skills, employer signals
- [Naukri search](https://apiforagents.dev/platforms/naukri/jobs-api): Postings with the board's filters, full text with fetchDetails
- [Upwork search](https://apiforagents.dev/platforms/upwork/jobs-api): Postings with budget, client profile, proposal counts
- [LinkedIn jobs](https://apiforagents.dev/platforms/linkedin/jobs-api): Title, company, location, salary text, listed date, description

## Questions

### Which countries does Indeed cover?

US, GB, CA, AU, IN, DE, FR, JP, BR, MX, IT and ES, chosen with country.

### Do I get salaries?

Where the posting shows one: salary on Indeed, salary text on LinkedIn, salary bands as a filter on Naukri, and budget or hourly range on Upwork.

### Can I get the full posting text?

Yes. LinkedIn listings include the description, Indeed's jobs operation reads full postings by job key, and Naukri returns full descriptions with fetchDetails.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Sneaker resale pricing. GOAT and StockX, size by size.

> Read sneaker resale prices on GOAT and StockX: every size's ask, bid and last sale, 90-day averages and sales counts. Free history of past captures.

Canonical: https://apiforagents.dev/use-cases/sneaker-resale-pricing · Updated 2026-10-21

Resale price is set per size. Search both markets for the model, then read each product for every size's asking price on GOAT, and ask, bid and last sale on StockX with its 90-day and 12-month averages.

- GOAT: from $0.0009 per record
- StockX: from $0.0009 per record
- History: Free

## The workflow

1. Run GOAT search and StockX search with the model name. Every hit is a full product card.
2. Or run listing with a brand or collection page URL to read its products in page order.
3. Run StockX products for live market data: last sale, 90-day and 12-month averages, sales counts, bids, and every size's ask, bid and last sale.
4. Run GOAT products for every size's asking price and availability, the max offer and the retail price.
5. Set country on both to see the market from where you sell. Read history for free: lowest_ask on GOAT, last_sale or sales_72_hours on StockX.

## Who uses it

- **Resellers.** Price a pair in your size on both markets before you buy, and see how fast it sells.
- **[Pricing tools](https://apiforagents.dev/platforms/stockx/product-api).** Show live asks and bids by size inside your own app, with the date each was read.
- **Market analysts.** Compare resale against retail price across a brand's whole collection page.

## Operations used

List prices per record. A call can carry a minimum, so quote first: the quote is free, and a record that does not come back is not charged.

| Step | Operation | What comes back | Price |
|---|---|---|---|
| 1 | GOAT search | Full product cards for a keyword | $0.0009 per record |
| 2 | GOAT products | Every size's ask and availability, max offer, retail price | $0.0009 per record |
| 3 | StockX search | Full product cards for a keyword | $0.0009 per record |
| 4 | StockX products | Last sale, averages, sales counts, each size's ask, bid, last sale | $0.0009 per record |

> **Compare size to size** A model's average hides a wide spread across sizes. Match the same size on GOAT and StockX before you call one market higher, and set "maxUsd" when you loop over a collection.

## The operations in this workflow

- [GOAT search](https://apiforagents.dev/platforms/goat/search-api): Full product cards for a keyword
- [GOAT products](https://apiforagents.dev/platforms/goat/product-api): Every size's ask and availability, max offer, retail price
- [StockX search](https://apiforagents.dev/platforms/stockx/search-api): Full product cards for a keyword
- [StockX products](https://apiforagents.dev/platforms/stockx/product-api): Last sale, averages, sales counts, each size's ask, bid, last sale

## Questions

### Does it return every size?

Yes. GOAT products return each size's asking price and availability; StockX products return each size's ask, bid and last sale.

### Can I see past prices?

The free history operations chart what earlier captures stored: lowest ask, max offer and retail on GOAT, and last sale, bids, averages and volatility on StockX.

### Can I choose the market country?

Yes. Both take country as a two-letter code.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Restaurant market research. Yelp, Tripadvisor and Google Maps.

> Map restaurants in a city from Yelp, Tripadvisor and Google Maps: cuisine, price level, rating, popular dishes, hours and reviews. Priced per record.

Canonical: https://apiforagents.dev/use-cases/restaurant-market-research · Updated 2026-10-21

Before you open a restaurant or sell to them, map the area: who is there, what they serve, how they are rated and what diners say. Search each platform by place and keyword, then read the full cards and reviews.

- Yelp: from $0.000225 per record
- Tripadvisor: from $0.0018 per record
- Google Maps: from $0.000225 per record

## The workflow

1. Run Yelp search with a query and location, sorted by rating_high or most_reviewed, filtered by priceLevels and features such as outdoor_seating or delivery.
2. Run Tripadvisor searchRestaurants with a destination or a dish: cuisines, dishes, hours, menu link, price level, rating breakdown and rank.
3. Run Google Maps search with the same keyword and location, with minRating, for rating, review keywords, hours and popular times.
4. Read Yelp businesses on the places that matter for review insights by topic, popular dishes and health inspections.
5. Pull reviews on the leaders and the laggards, and let a model sort what diners praise and what they complain about.

## Who uses it

- **New restaurant owners.** See which cuisines and price levels are crowded in a neighbourhood and which are missing.
- **[Suppliers and software sales](https://apiforagents.dev/use-cases/local-lead-generation).** Build a list of restaurants by area, cuisine and rating for your reps.
- **Food apps and investors.** Compare ratings, review volume and rank across a city to spot the rising names.

## Operations used

List prices per record. A call can carry a minimum, so quote first: the quote is free, and a record that does not come back is not charged.

| Step | Operation | What comes back | Price |
|---|---|---|---|
| 1 | Yelp search | Businesses for a place and keyword, each a full profile | $0.000225 per record |
| 2 | Yelp businesses | Review insights, popular dishes, hours, health inspections | $0.000225 per record |
| 3 | Tripadvisor searchRestaurants | Cuisines, dishes, price level, rating breakdown, rank | $0.0018 per record |
| 4 | Google Maps search | Rating, review keywords, hours, popular times | $0.000225 per record |
| 5 | Yelp reviews | Text, rating, date, reviewer, owner reply | $0.000225 per record |

> **Read coverage before data** When a slug or URL does not resolve, the answer says so in its coverage. Fix the handle instead of treating the place as closed.

## The operations in this workflow

- [Yelp search](https://apiforagents.dev/platforms/yelp/search-api): Businesses for a place and keyword, each a full profile
- [Yelp businesses](https://apiforagents.dev/platforms/yelp/business-api): Review insights, popular dishes, hours, health inspections
- [Tripadvisor searchRestaurants](https://apiforagents.dev/platforms/tripadvisor/restaurant-search-api): Cuisines, dishes, price level, rating breakdown, rank
- [Google Maps search](https://apiforagents.dev/platforms/google_maps/search-api): Rating, review keywords, hours, popular times
- [Yelp reviews](https://apiforagents.dev/platforms/yelp/reviews-api): Text, rating, date, reviewer, owner reply

## Questions

### Does Yelp return health inspections?

Yes, on the businesses operation, where Yelp shows them for the place.

### Can I search Tripadvisor by dish?

Yes. The restaurant search query takes a destination or a dish.

### Where do popular times come from?

The Google Maps place card, which also carries rating breakdown, review keywords and hours.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Ad library research. Facebook and LinkedIn ads, as data.

> Read a competitor's ads from Meta's Ad Library and the LinkedIn Ad Library: creative, headline, CTA, dates and platforms. Quote first, priced per record.

Canonical: https://apiforagents.dev/use-cases/ad-library-research · Updated 2026-10-21

See what competitors run and for how long. Read every ad a Facebook page runs in Meta's Ad Library, active or stopped, and the ads on an advertiser's LinkedIn Ad Library page, then compare creative, offers and run length.

- Facebook: from $0.0022 per record
- LinkedIn: from $0.001 per record
- Free to start: $0.10

## The workflow

1. Run Facebook ads with up to five page URLs or handles, and status "active" for what runs now or "inactive" for what stopped: creative, headline, CTA, link, dates, platforms, advertiser and EU reach.
2. Copy the advertiser's LinkedIn Ad Library URL and run LinkedIn adsLibrary on it: headline, body, format, media, click URL, impressions where shown, targeting location, start and end dates, days active.
3. Sort by days active to see which ads they keep running, and group the rest by message and offer.
4. Read the Facebook pages card alongside for the page's followers and ads status.
5. Run it on a schedule from your own job to catch new creative the week it starts.

## Who uses it

- **Performance marketers.** Keep a swipe file of competitor creative and the offers they test.
- **[Agencies](https://apiforagents.dev/platforms/facebook/ad-library-api).** Open a pitch with an audit of every ad the prospect's competitors run.
- **[Product marketing](https://apiforagents.dev/use-cases/competitor-monitoring).** Watch how competitors position on LinkedIn, ad by ad, over the quarter.

## Operations used

List prices per record. A call can carry a minimum, so quote first: the quote is free, and a record that does not come back is not charged.

| Step | Operation | What comes back | Price |
|---|---|---|---|
| 1 | Facebook ads | Creative, headline, CTA, link, dates, platforms, EU reach | $0.0045 per record |
| 2 | Facebook pages | Followers, likes, category, ads status | $0.009 per record |
| 3 | LinkedIn adsLibrary | Headline, body, format, impressions, dates, days active | $0.002 per record |

> **Set a ceiling** A large advertiser can run hundreds of ads. Set limit to what you will read and "maxUsd" on the call, and quote it first with "estimateOnly": true.

## The operations in this workflow

- [Facebook ads](https://apiforagents.dev/platforms/facebook/ad-library-api): Creative, headline, CTA, link, dates, platforms, EU reach
- [Facebook pages](https://apiforagents.dev/platforms/facebook/page-api): Followers, likes, category, ads status
- [LinkedIn adsLibrary](https://apiforagents.dev/platforms/linkedin/ads-library-api): Headline, body, format, impressions, dates, days active

## Questions

### Can I see ad spend?

Neither returns spend. Facebook ads carry EU reach, and LinkedIn ads carry impressions where LinkedIn shows them.

### Can I read ads that have stopped?

Yes. On Facebook, set status to "inactive". LinkedIn ads carry started and ended dates and days active.

### What do I pass for LinkedIn?

An Ad Library URL: an advertiser's page for all their live ads, or one ad's detail page.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Search rank and news monitoring. Google web results and Google News.

> Track where your pages rank on Google for the queries that matter, by country and language, and catch news on your brand. Billed per page of results.

Canonical: https://apiforagents.dev/use-cases/search-rank-and-news-monitoring · Updated 2026-10-21

Run your keywords through Google search by country and language, and record each result's rank, title and snippet. Run the same names through Google News for headline, publisher and date.

- Google: from $0.00009 per record
- Search: Billed per page of about ten results
- Free to start: $0.10

## The workflow

1. Run Google search with a keyword, country and language. Each page holds about ten results with rank, title, snippet and link; pages goes from 1 to 5, and each page is billed.
2. Find your domain's position and your competitors'. Use site to check one domain, or operators such as intitle: and OR in the query.
3. Run Google news with your brand or a competitor, postedWithin "1d" or "7d", country and language: headline, publisher, date and link.
4. Store each run with its date and compare, and run it on a schedule from your own job.

## Who uses it

- **SEO teams and agencies.** Check rank for a keyword set in each market you sell in, with the page that ranks.
- **[PR and communications](https://apiforagents.dev/platforms/google/news-api).** A daily list of new articles that mention the brand, with publisher and date.
- **Research agents.** Narrow web results with since, until and fileTypes, such as pdf, to find reports and filings.

## Operations used

List prices per record. A call can carry a minimum, so quote first: the quote is free, and a record that does not come back is not charged.

| Step | Operation | What comes back | Price |
|---|---|---|---|
| 1 | Google search | Organic links with title, snippet and rank, per page | $0.0009 per record |
| 2 | Google news | Headline, publisher, date, link | $0.0018 per record |

> **Ask for the depth you need** Search is billed per page of about ten results, not per result. Ask for one page when the top ten is enough, and quote deeper checks first with "estimateOnly": true.

## The operations in this workflow

- [Google search](https://apiforagents.dev/platforms/google/search-api): Organic links with title, snippet and rank, per page
- [Google news](https://apiforagents.dev/platforms/google/news-api): Headline, publisher, date, link

## Questions

### Can I check rank in another country?

Yes. Set country to a two-letter code and language to a BCP-47 tag.

### Can I limit results to a date range?

Web search takes since and until. News takes postedWithin: 1h, 1d, 7d, 1y or any.

### How deep can one call go?

Up to five pages of about ten results each.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# App review monitoring. Google Play reviews, newest first.

> Pull Google Play reviews for your app and competitors by package id, newest or most helpful first, by country and language. Priced per record.

Canonical: https://apiforagents.dev/use-cases/app-review-monitoring · Updated 2026-10-21

Read what users say in the Play Store about your app and up to four others in one call. Sort newest to catch a bad release, or helpful to see what most users agree on, and let a model group the complaints.

- Reviews: $0.00009 per record
- Per call: Up to five apps
- Free to start: $0.10

## The workflow

1. Collect package ids or Play Store URLs for your app and competitors. Google search with site set to play.google.com finds competitor apps.
2. Run Google playReviews with up to five apps, sort "newest", and the country and language you ship in.
3. Run it again with sort "helpful" for the reviews other users agreed with, or "rating_high" for the praise.
4. Group reviews by theme with your model, and alert when the newest reviews turn negative.
5. Run it on a schedule from your own job, for example after each release.

## Who uses it

- **Mobile product teams.** See within a day of a release whether reviews mention a crash or a missing feature.
- **Support teams.** Find the problems users report in public and answer them before they spread.
- **[Competitive research](https://apiforagents.dev/platforms/google/play-store-reviews-api).** Read what users of competing apps ask for and do not get.

## Operations used

List prices per record. A call can carry a minimum, so quote first: the quote is free, and a record that does not come back is not charged.

| Step | Operation | What comes back | Price |
|---|---|---|---|
| 1 | Google search | Play Store pages for a query, with site set | $0.0009 per record |
| 2 | Google playReviews | Reviews for up to five apps, by sort, country and language | $0.00009 per record |

> **Quote, then cap the loop** Five apps at a full page each adds up. Quote with "estimateOnly": true once, then set "maxUsd" on every scheduled run.

## The operations in this workflow

- [Google search](https://apiforagents.dev/platforms/google/search-api): Play Store pages for a query, with site set
- [Google playReviews](https://apiforagents.dev/platforms/google/play-store-reviews-api): Reviews for up to five apps, by sort, country and language

## Questions

### Which store does this cover?

The review operation covers Google Play, by package id or Play Store URL.

### How many reviews per call?

Up to five apps per call, and limit sets how many reviews come back, up to 100.

### Can I read reviews from one country?

Yes. Set country to a two-letter code and language to a BCP-47 tag.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# TikTok trend research. Hashtags, sounds and the posts riding them.

> Find what is trending on TikTok for a keyword, hashtag or sound: views, likes, shares and saves per post, plus comments and TikTok Shop products.

Canonical: https://apiforagents.dev/use-cases/tiktok-trend-research · Updated 2026-10-21

Pull the posts for a hashtag, a keyword or a sound, read their views, likes, shares and saves, and see which creators and formats lead. Then read the comments, and check TikTok Shop for the products behind the trend.

- TikTok: from $0.00045 per record
- History: Free
- Free to start: $0.10

## The workflow

1. Run TikTok searchPosts with exactly one of query, hashtag or soundUrl: views, likes, comments, shares, saves, sound, hashtags and duration per post.
2. Rank the posts by views and saves, and note the sounds and hashtags that repeat.
3. Run TikTok profiles on the creators behind the top posts for followers, total likes and video count.
4. Run TikTok comments on up to ten top posts to read how people react.
5. Run TikTok shop with the product keyword for price, discount, rating, sold count, seller and stock per variant.
6. Read TikTok history for free to see follower growth from past captures.

## Who uses it

- **Brands and content teams.** See which formats and sounds lead in your category this week before you brief a video.
- **[E-commerce sellers](https://apiforagents.dev/platforms/tiktok/shop-api).** Find the products behind a trend in TikTok Shop, with price, sold count and stock.
- **[Creator scouts](https://apiforagents.dev/use-cases/influencer-discovery).** Turn the top posts on a hashtag into a list of creators to read in full.

## Operations used

List prices per record. A call can carry a minimum, so quote first: the quote is free, and a record that does not come back is not charged.

| Step | Operation | What comes back | Price |
|---|---|---|---|
| 1 | TikTok searchPosts | Posts by keyword, hashtag or sound, with engagement | $0.0018 per record |
| 2 | TikTok profiles | Followers, following, total likes, video count, bio | $0.0022 per record |
| 3 | TikTok comments | Top-level comments on up to ten posts | $0.00045 per record |
| 4 | TikTok shop | Price, discount, rating, sold count, seller, variant stock | $0.013 per record |

> **Quote first** A searchPosts call can return up to 100 posts. Send it with "estimateOnly": true to see the most it can cost, and set "maxUsd" when you run it for a list of hashtags.

## The operations in this workflow

- [TikTok searchPosts](https://apiforagents.dev/platforms/tiktok/video-search-api): Posts by keyword, hashtag or sound, with engagement
- [TikTok profiles](https://apiforagents.dev/platforms/tiktok/profile-api): Followers, following, total likes, video count, bio
- [TikTok comments](https://apiforagents.dev/platforms/tiktok/comments-api): Top-level comments on up to ten posts
- [TikTok shop](https://apiforagents.dev/platforms/tiktok/shop-api): Price, discount, rating, sold count, seller, variant stock

## Questions

### Can I search by sound?

Yes. Pass a TikTok sound page URL (tiktok.com/music/...) as soundUrl and get the posts made with that sound.

### Can I combine a keyword and a hashtag?

No. Send exactly one of query, hashtag or soundUrl per call, and run two calls to compare.

### Does it return view counts?

Yes. Every post carries views, likes, comments, shares and saves.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn data in Claude. Pay per record.

> LinkedIn data in Claude: Claude Code calls the API directly, the Claude API uses it as a tool, and claude.ai can build the app. $0.10 free.

Canonical: https://apiforagents.dev/integrations/claude · Updated 2026-10-16

Three ways, depending on where you use Claude. Claude Code runs the calls itself. An app on the Claude API gives Claude a tool that calls this API. In a claude.ai chat, Claude writes the app for you, using the prompt below.

- Works with: Claude
- Price: from $0.001 / record
- Free to start: $0.10
- Setup: No SDK

## The fastest way: paste this into Claude Code, or a claude.ai chat

prompt:

```text
Use https://apiforagents.dev for LinkedIn data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (no login, new agents get $0.10 free). Read https://apiforagents.dev/llms.txt for the operations. Quote every paid call first with "estimateOnly": true and tell me what each call cost. Keep the identity_assertion so you never sign up twice.
```

## On the Claude API: a tool

python · anthropic:

```python
import os, requests

BASE = "https://apiforagents.dev"
KEY = os.environ["AFA_KEY"]  # an API key from the console, or an agent's token

def linkedin(op: str, **params) -> dict:
    """Call one LinkedIn operation. Add estimateOnly=True for a free quote."""
    r = requests.post(
        f"{BASE}/v1/linkedin",
        headers={"Authorization": f"Bearer {KEY}"},
        json={"op": op, **params},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] and body["notes"] before body["data"]

import anthropic

client = anthropic.Anthropic()
tools = [{
    "name": "linkedin_profiles",
    "description": "Look up public LinkedIn profiles by /in/<handle> or URL (up to 10).",
    "input_schema": {"type": "object", "properties": {"handles": {"type": "array", "items": {"type": "string"}}}, "required": ["handles"]},
}]
msg = client.messages.create(
    model="claude-sonnet-5-5", max_tokens=1024, tools=tools,
    messages=[{"role": "user", "content": "Where does satyanadella work now?"}],
)
for block in msg.content:
    if block.type == "tool_use":
        result = linkedin("profiles", subjects=block.input["handles"])  # send back as tool_result
```

> **A claude.ai chat cannot call the API itself** Without a tool connected, Claude in a chat cannot make requests to outside APIs. Use Claude Code, or have Claude write the app that does.

## Questions

### Is there a Claude connector or MCP server?

Not yet. Claude Code and apps on the Claude API call the REST API directly, which needs nothing installed.

### Where do I get a key?

Two ways. A person signs in at https://apiforagents.dev and makes an API key under Console, API keys. Or the agent signs itself up with one POST to https://apiforagents.dev/agent/identity, exchanges the identity for a token, and starts on $0.10 free; a person claims it later with a six-digit code to top up.

### What does a call cost?

LinkedIn profiles are $0.004 and companies $0.004 each, posts, comments, reactions and ads $0.002, jobs $0.001. Pay as you go from $5, nothing monthly. Add "estimateOnly": true to any call for a free quote, and records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn data in Claude Code. Pay per record.

> Give Claude Code LinkedIn data: it signs itself up in one call, quotes before it spends, and pays per record. $0.10 free, no SDK.

Canonical: https://apiforagents.dev/integrations/claude-code · Updated 2026-10-16

Claude Code runs commands in your terminal, so it can call the API directly: sign itself up, quote a call, fetch LinkedIn profiles, companies, posts and jobs, and write the results wherever you need them.

- Works with: Claude Code
- Price: from $0.001 / record
- Free to start: $0.10
- Setup: No SDK

## The fastest way: paste this into Claude Code

prompt:

```text
Use https://apiforagents.dev for LinkedIn data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (no login, new agents get $0.10 free). Read https://apiforagents.dev/llms.txt for the operations. Quote every paid call first with "estimateOnly": true and tell me what each call cost. Keep the identity_assertion so you never sign up twice.
```

## What happens next

1. Claude Code reads auth.md and registers itself: one POST, no login, no card.
2. It gets $0.10 of free credit, enough for about 25 LinkedIn profiles.
3. Before each paid call it asks for a quote and tells you the price.
4. When the free credit runs out it hands you a link to claim the agent and top up from $5.

## Or do it by hand

terminal:

```bash
# 1. Sign up once. Keep identity_assertion: it is the agent's identity.
curl -s -X POST https://apiforagents.dev/agent/identity \
  -H "Content-Type: application/json" -d '{"type":"anonymous"}'

# 2. Exchange it for a bearer token (repeat whenever the token expires).
curl -s -X POST https://apiforagents.dev/oauth2/token \
  -d "grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion=$IDENTITY_ASSERTION"

# 3. Quote, then call.
curl -s -X POST https://apiforagents.dev/v1/linkedin -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"profiles","subjects":["satyanadella"],"estimateOnly":true}'
```

> **Tip** Ask Claude Code to save the identity_assertion to a file in your project (and add it to .gitignore). It is the agent's identity: the next session reuses it instead of signing up again.

## Other platforms in this tool

- [Instagram in Claude Code](https://apiforagents.dev/integrations/claude-code/instagram)
- [YouTube in Claude Code](https://apiforagents.dev/integrations/claude-code/youtube)
- [X / Twitter in Claude Code](https://apiforagents.dev/integrations/claude-code/x_twitter)
- [Reddit in Claude Code](https://apiforagents.dev/integrations/claude-code/reddit)
- [TikTok in Claude Code](https://apiforagents.dev/integrations/claude-code/tiktok)
- [Facebook in Claude Code](https://apiforagents.dev/integrations/claude-code/facebook)
- [Amazon in Claude Code](https://apiforagents.dev/integrations/claude-code/amazon)
- [Shopify in Claude Code](https://apiforagents.dev/integrations/claude-code/shopify)
- [Farfetch in Claude Code](https://apiforagents.dev/integrations/claude-code/farfetch)
- [GOAT in Claude Code](https://apiforagents.dev/integrations/claude-code/goat)
- [StockX in Claude Code](https://apiforagents.dev/integrations/claude-code/stockx)
- [Blinkit in Claude Code](https://apiforagents.dev/integrations/claude-code/blinkit)
- [Swiggy Instamart in Claude Code](https://apiforagents.dev/integrations/claude-code/instamart)
- [Zepto in Claude Code](https://apiforagents.dev/integrations/claude-code/zepto)
- [Indeed in Claude Code](https://apiforagents.dev/integrations/claude-code/indeed)
- [Naukri in Claude Code](https://apiforagents.dev/integrations/claude-code/naukri)
- [Upwork in Claude Code](https://apiforagents.dev/integrations/claude-code/upwork)
- [Contacts in Claude Code](https://apiforagents.dev/integrations/claude-code/contacts)
- [Google Maps in Claude Code](https://apiforagents.dev/integrations/claude-code/google_maps)
- [Yelp in Claude Code](https://apiforagents.dev/integrations/claude-code/yelp)
- [Tripadvisor in Claude Code](https://apiforagents.dev/integrations/claude-code/tripadvisor)
- [Airbnb in Claude Code](https://apiforagents.dev/integrations/claude-code/airbnb)
- [Booking.com in Claude Code](https://apiforagents.dev/integrations/claude-code/booking)
- [Google in Claude Code](https://apiforagents.dev/integrations/claude-code/google)

## Questions

### Does Claude Code need an MCP server for this?

No. Claude Code can make HTTP requests with curl or a script, so it calls the REST API directly. There is nothing to install.

### Where do I get a key?

Two ways. A person signs in at https://apiforagents.dev and makes an API key under Console, API keys. Or the agent signs itself up with one POST to https://apiforagents.dev/agent/identity, exchanges the identity for a token, and starts on $0.10 free; a person claims it later with a six-digit code to top up.

### What does a call cost?

LinkedIn profiles are $0.004 and companies $0.004 each, posts, comments, reactions and ads $0.002, jobs $0.001. Pay as you go from $5, nothing monthly. Add "estimateOnly": true to any call for a free quote, and records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn data in Cursor. Pay per record.

> Use LinkedIn data from Cursor's agent: paste one prompt and it signs up, quotes and fetches profiles, companies and jobs. $0.10 free.

Canonical: https://apiforagents.dev/integrations/cursor · Updated 2026-10-16

Cursor's agent can write and run the code that calls the API, so the quickest way in is a prompt: it signs itself up, reads the docs and builds the feature you asked for with real LinkedIn data.

- Works with: Cursor
- Price: from $0.001 / record
- Free to start: $0.10
- Setup: No SDK

## The fastest way: paste this into Cursor's agent

prompt:

```text
Use https://apiforagents.dev for LinkedIn data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (no login, new agents get $0.10 free). Read https://apiforagents.dev/llms.txt for the operations. Quote every paid call first with "estimateOnly": true and tell me what each call cost. Keep the identity_assertion so you never sign up twice.
```

## Or add a client to your project

python:

```python
import os, requests

BASE = "https://apiforagents.dev"
KEY = os.environ["AFA_KEY"]  # an API key from the console, or an agent's token

def linkedin(op: str, **params) -> dict:
    """Call one LinkedIn operation. Add estimateOnly=True for a free quote."""
    r = requests.post(
        f"{BASE}/v1/linkedin",
        headers={"Authorization": f"Bearer {KEY}"},
        json={"op": op, **params},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] and body["notes"] before body["data"]
```

> **Keep the key out of git** Put AFA_KEY in your .env file, and let Cursor read it from the environment. Never paste a key into code you commit.

## Questions

### Which Cursor mode should I use?

Agent mode: it can run terminal commands, which is what signing up and quoting need. Ask mode can still write the client code for you to run.

### Where do I get a key?

Two ways. A person signs in at https://apiforagents.dev and makes an API key under Console, API keys. Or the agent signs itself up with one POST to https://apiforagents.dev/agent/identity, exchanges the identity for a token, and starts on $0.10 free; a person claims it later with a six-digit code to top up.

### What does a call cost?

LinkedIn profiles are $0.004 and companies $0.004 each, posts, comments, reactions and ads $0.002, jobs $0.001. Pay as you go from $5, nothing monthly. Add "estimateOnly": true to any call for a free quote, and records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn data in ChatGPT. Pay per record.

> Add LinkedIn data to a Custom GPT with Actions: import our OpenAPI file, add your API key, and your GPT can look up profiles and companies.

Canonical: https://apiforagents.dev/integrations/chatgpt · Updated 2026-10-16

A Custom GPT can call outside APIs through Actions. Import our OpenAPI file, give it your key, and your GPT can look up LinkedIn profiles, companies, posts and jobs mid-conversation, with the price of every call in the answer.

- Works with: ChatGPT
- Price: from $0.001 / record
- Free to start: $0.10
- Setup: No SDK

## Set it up in five minutes

1. Sign in at https://apiforagents.dev, add balance (from $5) and make an API key under Console, API keys.
2. In ChatGPT, create a GPT, open Configure, then Actions, and choose Import from URL.
3. Paste https://apiforagents.dev/openapi.json and import it.
4. Under Authentication choose API Key, auth type Bearer, and paste your key.
5. In the GPT's instructions, tell it to quote first with estimateOnly and to read coverage before data.

> **Plain chat cannot call APIs** Regular ChatGPT conversations cannot make HTTP requests. Either use a Custom GPT with Actions as above, or ask ChatGPT to write the app that calls the API, using the prompt on our home page.

## Instructions to give the GPT

GPT instructions:

```text
When the user asks about a person or company on LinkedIn, call the linkedin action. Always call it once with "estimateOnly": true and tell the user the price before running it. Read coverage and notes before data: a not_found omission means the handle was wrong, not that the person does not exist. Never invent a value the answer did not return.
```

## Questions

### Can my GPT sign itself up?

A Custom GPT uses the key you give it in the Action settings, so make the key in the console first. Self sign-up is for agents that can run their own HTTP calls.

### Where do I get a key?

Two ways. A person signs in at https://apiforagents.dev and makes an API key under Console, API keys. Or the agent signs itself up with one POST to https://apiforagents.dev/agent/identity, exchanges the identity for a token, and starts on $0.10 free; a person claims it later with a six-digit code to top up.

### What does a call cost?

LinkedIn profiles are $0.004 and companies $0.004 each, posts, comments, reactions and ads $0.002, jobs $0.001. Pay as you go from $5, nothing monthly. Add "estimateOnly": true to any call for a free quote, and records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn data in LangChain. Pay per record.

> A LangChain tool for LinkedIn data: profiles, companies, posts and jobs, priced per record with a quote before every call. Copy the code.

Canonical: https://apiforagents.dev/integrations/langchain · Updated 2026-10-16

Wrap one function as a LangChain tool and any LangChain or LangGraph agent can look up LinkedIn people, companies, posts and jobs, and see what each lookup cost.

- Works with: LangChain
- Price: from $0.001 / record
- Free to start: $0.10
- Setup: No SDK

## The tool

python · langchain:

```python
import os, requests

BASE = "https://apiforagents.dev"
KEY = os.environ["AFA_KEY"]  # an API key from the console, or an agent's token

def linkedin(op: str, **params) -> dict:
    """Call one LinkedIn operation. Add estimateOnly=True for a free quote."""
    r = requests.post(
        f"{BASE}/v1/linkedin",
        headers={"Authorization": f"Bearer {KEY}"},
        json={"op": op, **params},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] and body["notes"] before body["data"]

from langchain_core.tools import tool

@tool
def linkedin_profiles(handles: list[str]) -> dict:
    """Look up LinkedIn profiles by /in/<handle> or profile URL (up to 10).
    Returns name, headline, location, skills and positions per person."""
    return linkedin("profiles", subjects=handles)
```

## Give it to an agent

python · langgraph:

```python
from langgraph.prebuilt import create_react_agent

agent = create_react_agent("anthropic:claude-sonnet-5-5", tools=[linkedin_profiles])
agent.invoke({"messages": [("user", "What does satyanadella do now, per LinkedIn?")]})
```

> **Budget per run** Pass maxUsd in a call and the API refuses anything that would cost more, before it spends: a hard ceiling an agent cannot talk its way past.

## Other platforms in this tool

- [Instagram in LangChain](https://apiforagents.dev/integrations/langchain/instagram)
- [YouTube in LangChain](https://apiforagents.dev/integrations/langchain/youtube)
- [X / Twitter in LangChain](https://apiforagents.dev/integrations/langchain/x_twitter)
- [Reddit in LangChain](https://apiforagents.dev/integrations/langchain/reddit)
- [TikTok in LangChain](https://apiforagents.dev/integrations/langchain/tiktok)
- [Facebook in LangChain](https://apiforagents.dev/integrations/langchain/facebook)
- [Amazon in LangChain](https://apiforagents.dev/integrations/langchain/amazon)
- [Shopify in LangChain](https://apiforagents.dev/integrations/langchain/shopify)
- [Farfetch in LangChain](https://apiforagents.dev/integrations/langchain/farfetch)
- [GOAT in LangChain](https://apiforagents.dev/integrations/langchain/goat)
- [StockX in LangChain](https://apiforagents.dev/integrations/langchain/stockx)
- [Blinkit in LangChain](https://apiforagents.dev/integrations/langchain/blinkit)
- [Swiggy Instamart in LangChain](https://apiforagents.dev/integrations/langchain/instamart)
- [Zepto in LangChain](https://apiforagents.dev/integrations/langchain/zepto)
- [Indeed in LangChain](https://apiforagents.dev/integrations/langchain/indeed)
- [Naukri in LangChain](https://apiforagents.dev/integrations/langchain/naukri)
- [Upwork in LangChain](https://apiforagents.dev/integrations/langchain/upwork)
- [Contacts in LangChain](https://apiforagents.dev/integrations/langchain/contacts)
- [Google Maps in LangChain](https://apiforagents.dev/integrations/langchain/google_maps)
- [Yelp in LangChain](https://apiforagents.dev/integrations/langchain/yelp)
- [Tripadvisor in LangChain](https://apiforagents.dev/integrations/langchain/tripadvisor)
- [Airbnb in LangChain](https://apiforagents.dev/integrations/langchain/airbnb)
- [Booking.com in LangChain](https://apiforagents.dev/integrations/langchain/booking)
- [Google in LangChain](https://apiforagents.dev/integrations/langchain/google)

## Questions

### Is there an official LangChain package?

No package is needed. The tool above is a plain HTTP call; copy it into your project and add the operations you need.

### Where do I get a key?

Two ways. A person signs in at https://apiforagents.dev and makes an API key under Console, API keys. Or the agent signs itself up with one POST to https://apiforagents.dev/agent/identity, exchanges the identity for a token, and starts on $0.10 free; a person claims it later with a six-digit code to top up.

### What does a call cost?

LinkedIn profiles are $0.004 and companies $0.004 each, posts, comments, reactions and ads $0.002, jobs $0.001. Pay as you go from $5, nothing monthly. Add "estimateOnly": true to any call for a free quote, and records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn data in CrewAI. Pay per record.

> Give a CrewAI crew LinkedIn data with one custom tool: profiles, companies, people search and jobs, pay per record, $0.10 free to start.

Canonical: https://apiforagents.dev/integrations/crewai · Updated 2026-10-16

A CrewAI tool is a decorated function. Give your researcher agent LinkedIn people and company lookups, and let the crew build account briefs and lead lists from real data.

- Works with: CrewAI
- Price: from $0.001 / record
- Free to start: $0.10
- Setup: No SDK

## The tool

python · crewai:

```python
import os, requests

BASE = "https://apiforagents.dev"
KEY = os.environ["AFA_KEY"]  # an API key from the console, or an agent's token

def linkedin(op: str, **params) -> dict:
    """Call one LinkedIn operation. Add estimateOnly=True for a free quote."""
    r = requests.post(
        f"{BASE}/v1/linkedin",
        headers={"Authorization": f"Bearer {KEY}"},
        json={"op": op, **params},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] and body["notes"] before body["data"]

from crewai.tools import tool

@tool("LinkedIn company lookup")
def linkedin_company(handle: str) -> dict:
    """Industry, size, employee count, website and HQ for a LinkedIn
    company, by /company/<handle> or URL."""
    return linkedin("companies", subjects=[handle])
```

## Use it

python:

```python
from crewai import Agent

researcher = Agent(
    role="Account researcher",
    goal="Write a one-page brief on a target account from its LinkedIn data",
    backstory="You only state facts the tools returned.",
    tools=[linkedin_company],
)
```

## Questions

### Where do I get a key?

Two ways. A person signs in at https://apiforagents.dev and makes an API key under Console, API keys. Or the agent signs itself up with one POST to https://apiforagents.dev/agent/identity, exchanges the identity for a token, and starts on $0.10 free; a person claims it later with a six-digit code to top up.

### What does a call cost?

LinkedIn profiles are $0.004 and companies $0.004 each, posts, comments, reactions and ads $0.002, jobs $0.001. Pay as you go from $5, nothing monthly. Add "estimateOnly": true to any call for a free quote, and records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn data in the OpenAI Agents SDK. Pay per record.

> A function tool for the OpenAI Agents SDK that fetches LinkedIn profiles, companies, posts and jobs, priced per record. Copy the code.

Canonical: https://apiforagents.dev/integrations/openai-agents-sdk · Updated 2026-10-16

Decorate one function with function_tool and an OpenAI agent can fetch LinkedIn data on demand, with the cost of each call in the result.

- Works with: the OpenAI Agents SDK
- Price: from $0.001 / record
- Free to start: $0.10
- Setup: No SDK

## The tool and the agent

python · openai-agents:

```python
import os, requests

BASE = "https://apiforagents.dev"
KEY = os.environ["AFA_KEY"]  # an API key from the console, or an agent's token

def linkedin(op: str, **params) -> dict:
    """Call one LinkedIn operation. Add estimateOnly=True for a free quote."""
    r = requests.post(
        f"{BASE}/v1/linkedin",
        headers={"Authorization": f"Bearer {KEY}"},
        json={"op": op, **params},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] and body["notes"] before body["data"]

from agents import Agent, Runner, function_tool

@function_tool
def linkedin_jobs(query: str, location: str, limit: int = 10) -> dict:
    """Search LinkedIn job listings by title keyword and location."""
    return linkedin("jobs", query=query, locations=[location], limit=limit)

agent = Agent(name="Recruiter", instructions="Use the tools; never invent data.", tools=[linkedin_jobs])
print(Runner.run_sync(agent, "Ten data engineering jobs in Berlin posted this week").final_output)
```

## Questions

### Where do I get a key?

Two ways. A person signs in at https://apiforagents.dev and makes an API key under Console, API keys. Or the agent signs itself up with one POST to https://apiforagents.dev/agent/identity, exchanges the identity for a token, and starts on $0.10 free; a person claims it later with a six-digit code to top up.

### What does a call cost?

LinkedIn profiles are $0.004 and companies $0.004 each, posts, comments, reactions and ads $0.002, jobs $0.001. Pay as you go from $5, nothing monthly. Add "estimateOnly": true to any call for a free quote, and records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn data in n8n. Pay per record.

> Pull LinkedIn profiles, companies and jobs into n8n workflows with the HTTP Request node. Pay per record, quote first, $5 to start.

Canonical: https://apiforagents.dev/integrations/n8n · Updated 2026-10-16

n8n's HTTP Request node is all you need: enrich every new lead with LinkedIn data, watch competitors' ads, or post new job listings to Slack.

- Works with: n8n
- Price: from $0.001 / record
- Free to start: $0.10
- Setup: No SDK

## Configure the HTTP Request node

1. Method: POST. URL: https://apiforagents.dev/v1/linkedin
2. Authentication: Generic credential, Header Auth. Name: Authorization. Value: Bearer <your key>.
3. Body: JSON, for example {"op": "profiles", "subjects": ["{{ $json.linkedinHandle }}"]}.
4. Read the response's data.profiles, and check coverage before you trust a row.

## The body, for a profile lookup

json:

```json
{
  "op": "profiles",
  "subjects": ["{{ $json.linkedinHandle }}"]
}
```

> **Guard the spend** Add "maxUsd": 0.05 to the body and the API refuses any call that would cost more, so a loop that goes wrong cannot drain the balance.

## Other platforms in this tool

- [Instagram in n8n](https://apiforagents.dev/integrations/n8n/instagram)
- [YouTube in n8n](https://apiforagents.dev/integrations/n8n/youtube)
- [X / Twitter in n8n](https://apiforagents.dev/integrations/n8n/x_twitter)
- [Reddit in n8n](https://apiforagents.dev/integrations/n8n/reddit)
- [TikTok in n8n](https://apiforagents.dev/integrations/n8n/tiktok)
- [Facebook in n8n](https://apiforagents.dev/integrations/n8n/facebook)
- [Amazon in n8n](https://apiforagents.dev/integrations/n8n/amazon)
- [Shopify in n8n](https://apiforagents.dev/integrations/n8n/shopify)
- [Farfetch in n8n](https://apiforagents.dev/integrations/n8n/farfetch)
- [GOAT in n8n](https://apiforagents.dev/integrations/n8n/goat)
- [StockX in n8n](https://apiforagents.dev/integrations/n8n/stockx)
- [Blinkit in n8n](https://apiforagents.dev/integrations/n8n/blinkit)
- [Swiggy Instamart in n8n](https://apiforagents.dev/integrations/n8n/instamart)
- [Zepto in n8n](https://apiforagents.dev/integrations/n8n/zepto)
- [Indeed in n8n](https://apiforagents.dev/integrations/n8n/indeed)
- [Naukri in n8n](https://apiforagents.dev/integrations/n8n/naukri)
- [Upwork in n8n](https://apiforagents.dev/integrations/n8n/upwork)
- [Contacts in n8n](https://apiforagents.dev/integrations/n8n/contacts)
- [Google Maps in n8n](https://apiforagents.dev/integrations/n8n/google_maps)
- [Yelp in n8n](https://apiforagents.dev/integrations/n8n/yelp)
- [Tripadvisor in n8n](https://apiforagents.dev/integrations/n8n/tripadvisor)
- [Airbnb in n8n](https://apiforagents.dev/integrations/n8n/airbnb)
- [Booking.com in n8n](https://apiforagents.dev/integrations/n8n/booking)
- [Google in n8n](https://apiforagents.dev/integrations/n8n/google)

## Questions

### Where do I get a key?

Two ways. A person signs in at https://apiforagents.dev and makes an API key under Console, API keys. Or the agent signs itself up with one POST to https://apiforagents.dev/agent/identity, exchanges the identity for a token, and starts on $0.10 free; a person claims it later with a six-digit code to top up.

### What does a call cost?

LinkedIn profiles are $0.004 and companies $0.004 each, posts, comments, reactions and ads $0.002, jobs $0.001. Pay as you go from $5, nothing monthly. Add "estimateOnly": true to any call for a free quote, and records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn data in Make. Pay per record.

> Use LinkedIn data in Make scenarios with the HTTP module: enrich leads, watch job posts, track companies. Pay per record from $5.

Canonical: https://apiforagents.dev/integrations/make · Updated 2026-10-16

Make's HTTP "Make a request" module calls the API: add LinkedIn data to any scenario, from CRM enrichment to job alerts.

- Works with: Make
- Price: from $0.001 / record
- Free to start: $0.10
- Setup: No SDK

## Configure the HTTP module

1. URL: https://apiforagents.dev/v1/linkedin. Method: POST.
2. Headers: Authorization = Bearer <your key>; Content-Type = application/json.
3. Body type: Raw, JSON, with the operation and its inputs.
4. Parse response: Yes, then map data.profiles (or data.companies, data.jobs) onward.

## A company lookup body

json:

```json
{ "op": "companies", "subjects": ["{{1.companyLinkedinUrl}}"] }
```

## Other platforms in this tool

- [Instagram in Make](https://apiforagents.dev/integrations/make/instagram)
- [YouTube in Make](https://apiforagents.dev/integrations/make/youtube)
- [X / Twitter in Make](https://apiforagents.dev/integrations/make/x_twitter)
- [Reddit in Make](https://apiforagents.dev/integrations/make/reddit)
- [TikTok in Make](https://apiforagents.dev/integrations/make/tiktok)
- [Facebook in Make](https://apiforagents.dev/integrations/make/facebook)
- [Amazon in Make](https://apiforagents.dev/integrations/make/amazon)
- [Shopify in Make](https://apiforagents.dev/integrations/make/shopify)
- [Farfetch in Make](https://apiforagents.dev/integrations/make/farfetch)
- [GOAT in Make](https://apiforagents.dev/integrations/make/goat)
- [StockX in Make](https://apiforagents.dev/integrations/make/stockx)
- [Blinkit in Make](https://apiforagents.dev/integrations/make/blinkit)
- [Swiggy Instamart in Make](https://apiforagents.dev/integrations/make/instamart)
- [Zepto in Make](https://apiforagents.dev/integrations/make/zepto)
- [Indeed in Make](https://apiforagents.dev/integrations/make/indeed)
- [Naukri in Make](https://apiforagents.dev/integrations/make/naukri)
- [Upwork in Make](https://apiforagents.dev/integrations/make/upwork)
- [Contacts in Make](https://apiforagents.dev/integrations/make/contacts)
- [Google Maps in Make](https://apiforagents.dev/integrations/make/google_maps)
- [Yelp in Make](https://apiforagents.dev/integrations/make/yelp)
- [Tripadvisor in Make](https://apiforagents.dev/integrations/make/tripadvisor)
- [Airbnb in Make](https://apiforagents.dev/integrations/make/airbnb)
- [Booking.com in Make](https://apiforagents.dev/integrations/make/booking)
- [Google in Make](https://apiforagents.dev/integrations/make/google)

## Questions

### Where do I get a key?

Two ways. A person signs in at https://apiforagents.dev and makes an API key under Console, API keys. Or the agent signs itself up with one POST to https://apiforagents.dev/agent/identity, exchanges the identity for a token, and starts on $0.10 free; a person claims it later with a six-digit code to top up.

### What does a call cost?

LinkedIn profiles are $0.004 and companies $0.004 each, posts, comments, reactions and ads $0.002, jobs $0.001. Pay as you go from $5, nothing monthly. Add "estimateOnly": true to any call for a free quote, and records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn data in Zapier. Pay per record.

> Add LinkedIn profiles and companies to Zaps with Webhooks by Zapier: one POST per lookup, pay per record, quote first. $5 to start.

Canonical: https://apiforagents.dev/integrations/zapier · Updated 2026-10-16

Webhooks by Zapier can POST to any API. Use it to enrich new CRM contacts, form signups or spreadsheet rows with LinkedIn data.

- Works with: Zapier
- Price: from $0.001 / record
- Free to start: $0.10
- Setup: No SDK

## Configure Webhooks by Zapier

1. Action: Custom Request. Method: POST.
2. URL: https://apiforagents.dev/v1/linkedin.
3. Data: {"op": "profiles", "subjects": ["<the LinkedIn URL field>"]}.
4. Headers: Authorization | Bearer <your key>, and Content-Type | application/json.

> **Map coverage too** Zapier passes the whole response on. Use coverage.returned to skip rows the API could not find, instead of writing blanks into your CRM.

## Other platforms in this tool

- [Instagram in Zapier](https://apiforagents.dev/integrations/zapier/instagram)
- [YouTube in Zapier](https://apiforagents.dev/integrations/zapier/youtube)
- [X / Twitter in Zapier](https://apiforagents.dev/integrations/zapier/x_twitter)
- [Reddit in Zapier](https://apiforagents.dev/integrations/zapier/reddit)
- [TikTok in Zapier](https://apiforagents.dev/integrations/zapier/tiktok)
- [Facebook in Zapier](https://apiforagents.dev/integrations/zapier/facebook)
- [Amazon in Zapier](https://apiforagents.dev/integrations/zapier/amazon)
- [Shopify in Zapier](https://apiforagents.dev/integrations/zapier/shopify)
- [Farfetch in Zapier](https://apiforagents.dev/integrations/zapier/farfetch)
- [GOAT in Zapier](https://apiforagents.dev/integrations/zapier/goat)
- [StockX in Zapier](https://apiforagents.dev/integrations/zapier/stockx)
- [Blinkit in Zapier](https://apiforagents.dev/integrations/zapier/blinkit)
- [Swiggy Instamart in Zapier](https://apiforagents.dev/integrations/zapier/instamart)
- [Zepto in Zapier](https://apiforagents.dev/integrations/zapier/zepto)
- [Indeed in Zapier](https://apiforagents.dev/integrations/zapier/indeed)
- [Naukri in Zapier](https://apiforagents.dev/integrations/zapier/naukri)
- [Upwork in Zapier](https://apiforagents.dev/integrations/zapier/upwork)
- [Contacts in Zapier](https://apiforagents.dev/integrations/zapier/contacts)
- [Google Maps in Zapier](https://apiforagents.dev/integrations/zapier/google_maps)
- [Yelp in Zapier](https://apiforagents.dev/integrations/zapier/yelp)
- [Tripadvisor in Zapier](https://apiforagents.dev/integrations/zapier/tripadvisor)
- [Airbnb in Zapier](https://apiforagents.dev/integrations/zapier/airbnb)
- [Booking.com in Zapier](https://apiforagents.dev/integrations/zapier/booking)
- [Google in Zapier](https://apiforagents.dev/integrations/zapier/google)

## Questions

### Where do I get a key?

Two ways. A person signs in at https://apiforagents.dev and makes an API key under Console, API keys. Or the agent signs itself up with one POST to https://apiforagents.dev/agent/identity, exchanges the identity for a token, and starts on $0.10 free; a person claims it later with a six-digit code to top up.

### What does a call cost?

LinkedIn profiles are $0.004 and companies $0.004 each, posts, comments, reactions and ads $0.002, jobs $0.001. Pay as you go from $5, nothing monthly. Add "estimateOnly": true to any call for a free quote, and records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn data in Google Sheets. Pay per record.

> Pull LinkedIn profile data into Google Sheets with a 10-line Apps Script function: =LINKEDIN_HEADLINE(A2). Pay per record from $5.

Canonical: https://apiforagents.dev/integrations/google-sheets · Updated 2026-10-16

A small Apps Script custom function turns a column of LinkedIn URLs into headlines, companies and locations, right in the sheet.

- Works with: Google Sheets
- Price: from $0.001 / record
- Free to start: $0.10
- Setup: No SDK

## Extensions, Apps Script: paste this

apps script:

```javascript
const AFA_KEY = PropertiesService.getScriptProperties().getProperty("AFA_KEY");

/** =LINKEDIN_HEADLINE("https://www.linkedin.com/in/satyanadella") */
function LINKEDIN_HEADLINE(url) {
  const res = UrlFetchApp.fetch("https://apiforagents.dev/v1/linkedin", {
    method: "post",
    contentType: "application/json",
    headers: { Authorization: "Bearer " + AFA_KEY },
    payload: JSON.stringify({ op: "profiles", subjects: [url] }),
    muteHttpExceptions: true,
  });
  const body = JSON.parse(res.getContentText());
  const p = ((body.data || {}).profiles || [])[0];
  return p ? p.headline : body.error_description || "not found";
}
```

## Then

1. Project Settings, Script Properties: add AFA_KEY with your key, so it never sits in the sheet.
2. In a cell, type =LINKEDIN_HEADLINE(A2) and fill down.
3. Each row is one lookup at $0.004; a row looked up again the same day is free.

## Questions

### Will it re-charge every time the sheet recalculates?

A profile your account already fetched today is served free, so recalculations on the same day cost nothing. Sheets also caches custom function results.

### Where do I get a key?

Two ways. A person signs in at https://apiforagents.dev and makes an API key under Console, API keys. Or the agent signs itself up with one POST to https://apiforagents.dev/agent/identity, exchanges the identity for a token, and starts on $0.10 free; a person claims it later with a six-digit code to top up.

### What does a call cost?

LinkedIn profiles are $0.004 and companies $0.004 each, posts, comments, reactions and ads $0.002, jobs $0.001. Pay as you go from $5, nothing monthly. Add "estimateOnly": true to any call for a free quote, and records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn data in Python. Pay per record.

> Call the LinkedIn data API from Python with requests: profiles, companies, posts, jobs and search. No SDK, pay per record, $0.10 free.

Canonical: https://apiforagents.dev/integrations/python · Updated 2026-10-16

One function with requests covers every operation. Quote first, run, and read coverage before data.

- Works with: Python
- Price: from $0.001 / record
- Free to start: $0.10
- Setup: No SDK

## The client

python:

```python
import os, requests

BASE = "https://apiforagents.dev"
KEY = os.environ["AFA_KEY"]  # an API key from the console, or an agent's token

def linkedin(op: str, **params) -> dict:
    """Call one LinkedIn operation. Add estimateOnly=True for a free quote."""
    r = requests.post(
        f"{BASE}/v1/linkedin",
        headers={"Authorization": f"Bearer {KEY}"},
        json={"op": op, **params},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] and body["notes"] before body["data"]
```

## Quote, then run

python:

```python
quote = linkedin("searchPeople", company="stripe", titles=["Head of Data"], limit=10, estimateOnly=True)
print("at most", quote["cost"]["wouldChargeUsd"], "USD")

answer = linkedin("searchPeople", company="stripe", titles=["Head of Data"], limit=10)
for person in answer["data"]["profiles"]:
    print(person["name"], "-", person["headline"])
print("charged", answer["cost"]["usd"], "USD")
```

## No key yet? Let the script sign up

python:

```python
import requests
reg = requests.post("https://apiforagents.dev/agent/identity", json={"type": "anonymous"}).json()
tok = requests.post("https://apiforagents.dev/oauth2/token", data={
    "grant_type": "urn:ietf:params:oauth:grant-type:jwt-bearer",
    "assertion": reg["identity_assertion"],
}).json()["access_token"]
# $0.10 free to spend; keep reg["identity_assertion"] to sign in again later.
```

## Other platforms in this tool

- [Instagram in Python](https://apiforagents.dev/integrations/python/instagram)
- [YouTube in Python](https://apiforagents.dev/integrations/python/youtube)
- [X / Twitter in Python](https://apiforagents.dev/integrations/python/x_twitter)
- [Reddit in Python](https://apiforagents.dev/integrations/python/reddit)
- [TikTok in Python](https://apiforagents.dev/integrations/python/tiktok)
- [Facebook in Python](https://apiforagents.dev/integrations/python/facebook)
- [Amazon in Python](https://apiforagents.dev/integrations/python/amazon)
- [Shopify in Python](https://apiforagents.dev/integrations/python/shopify)
- [Farfetch in Python](https://apiforagents.dev/integrations/python/farfetch)
- [GOAT in Python](https://apiforagents.dev/integrations/python/goat)
- [StockX in Python](https://apiforagents.dev/integrations/python/stockx)
- [Blinkit in Python](https://apiforagents.dev/integrations/python/blinkit)
- [Swiggy Instamart in Python](https://apiforagents.dev/integrations/python/instamart)
- [Zepto in Python](https://apiforagents.dev/integrations/python/zepto)
- [Indeed in Python](https://apiforagents.dev/integrations/python/indeed)
- [Naukri in Python](https://apiforagents.dev/integrations/python/naukri)
- [Upwork in Python](https://apiforagents.dev/integrations/python/upwork)
- [Contacts in Python](https://apiforagents.dev/integrations/python/contacts)
- [Google Maps in Python](https://apiforagents.dev/integrations/python/google_maps)
- [Yelp in Python](https://apiforagents.dev/integrations/python/yelp)
- [Tripadvisor in Python](https://apiforagents.dev/integrations/python/tripadvisor)
- [Airbnb in Python](https://apiforagents.dev/integrations/python/airbnb)
- [Booking.com in Python](https://apiforagents.dev/integrations/python/booking)
- [Google in Python](https://apiforagents.dev/integrations/python/google)

## Questions

### Where do I get a key?

Two ways. A person signs in at https://apiforagents.dev and makes an API key under Console, API keys. Or the agent signs itself up with one POST to https://apiforagents.dev/agent/identity, exchanges the identity for a token, and starts on $0.10 free; a person claims it later with a six-digit code to top up.

### What does a call cost?

LinkedIn profiles are $0.004 and companies $0.004 each, posts, comments, reactions and ads $0.002, jobs $0.001. Pay as you go from $5, nothing monthly. Add "estimateOnly": true to any call for a free quote, and records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn data in JavaScript and Node.js. Pay per record.

> Call the LinkedIn data API from Node.js or the browser's server side with fetch: profiles, companies, posts and jobs. Pay per record.

Canonical: https://apiforagents.dev/integrations/javascript · Updated 2026-10-16

fetch is all it takes, in Node.js, Deno, Bun or a serverless function. Keep the key on the server.

- Works with: JavaScript and Node.js
- Price: from $0.001 / record
- Free to start: $0.10
- Setup: No SDK

## The client

node · fetch:

```javascript
const BASE = "https://apiforagents.dev";

export async function linkedin(op, params) {
  const r = await fetch(`${BASE}/v1/linkedin`, {
    method: "POST",
    headers: { Authorization: `Bearer ${process.env.AFA_KEY}`, "Content-Type": "application/json" },
    body: JSON.stringify({ op, ...params }),
  });
  const body = await r.json();
  if (!r.ok) throw new Error(`${body.error}: ${body.error_description}`);
  return body; // read body.coverage and body.notes before body.data
}

const { data, cost } = await linkedin("companies", { subjects: ["microsoft"] });
console.log(data.companies[0].employeesCount, "employees; charged", cost.usd);
```

> **Never in the browser** The key spends your balance. Call the API from your server or a serverless function, never from code that ships to a browser.

## Questions

### Where do I get a key?

Two ways. A person signs in at https://apiforagents.dev and makes an API key under Console, API keys. Or the agent signs itself up with one POST to https://apiforagents.dev/agent/identity, exchanges the identity for a token, and starts on $0.10 free; a person claims it later with a six-digit code to top up.

### What does a call cost?

LinkedIn profiles are $0.004 and companies $0.004 each, posts, comments, reactions and ads $0.002, jobs $0.001. Pay as you go from $5, nothing monthly. Add "estimateOnly": true to any call for a free quote, and records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Instagram data in n8n. Pay per record.

> Get Instagram data into n8n: one HTTPS call per operation, a free quote first, pay per record from $0.00045 per record.

Canonical: https://apiforagents.dev/integrations/n8n/instagram · Updated 2026-10-21

Call the Instagram API from n8n with one HTTPS request per operation: profiles, posts by a person, similar and hashtag. Every call can be quoted free first, and you pay per record that comes back, from $0.00045 per record, from a prepaid balance with $0.10 free to start.

- Works with: n8n
- Operations: 7
- Price: From $0.00045 per record
- Free to start: $0.10

## Set it up in n8n

1. Add an HTTP Request node. Method POST, URL https://apiforagents.dev/v1/instagram.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Profiles

json · n8n body for Instagram:

```json
{
  "op": "profiles",
  "subjects": [
    "natgeo",
    "nike"
  ]
}
```

## Posts by a person

json · n8n body for Instagram:

```json
{
  "op": "posts",
  "subject": "natgeo",
  "limit": 12
}
```

## Similar

json · n8n body for Instagram:

```json
{
  "op": "similar",
  "subject": "natgeo",
  "limit": 20
}
```

## Hashtag

json · n8n body for Instagram:

```json
{
  "op": "hashtag",
  "hashtag": "streetphotography",
  "sort": "top",
  "limit": 20
}
```

## Instagram operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Profiles | $0.0018 |
| Posts by a person | $0.0018 |
| Similar | $0.00045 |
| Hashtag | $0.00045 |
| Search | $0.00045 |
| Comments | $0.00045 |
| Followers | $0.000675 |

## Each operation in detail

- [Instagram Profile API](https://apiforagents.dev/platforms/instagram/profile-api): inputs, fields, sample, price
- [Instagram Posts API](https://apiforagents.dev/platforms/instagram/posts-api): inputs, fields, sample, price
- [Instagram Similar Accounts API](https://apiforagents.dev/platforms/instagram/similar-accounts-api): inputs, fields, sample, price
- [Instagram Hashtag API](https://apiforagents.dev/platforms/instagram/hashtag-api): inputs, fields, sample, price
- [Instagram Account Search API](https://apiforagents.dev/platforms/instagram/account-search-api): inputs, fields, sample, price
- [Instagram Comments API](https://apiforagents.dev/platforms/instagram/comments-api): inputs, fields, sample, price
- [Instagram Followers API](https://apiforagents.dev/platforms/instagram/followers-api): inputs, fields, sample, price

## Questions

### Do I need a Instagram account or login?

No. The call returns public Instagram data; no login, cookie or session of yours is involved.

### How do I loop over many rows in n8n?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Instagram data cost?

Pay as you go, from $0.00045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=instagram (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# YouTube data in n8n. Pay per record.

> Get YouTube channels, videos and comments into n8n: one HTTPS call per operation, a free quote first, pay per record from $0.00045 per record.

Canonical: https://apiforagents.dev/integrations/n8n/youtube · Updated 2026-10-21

Call the YouTube API from n8n with one HTTPS request per operation: channels, videos and comments. Every call can be quoted free first, and you pay per record that comes back, from $0.00045 per record, from a prepaid balance with $0.10 free to start.

- Works with: n8n
- Operations: 3
- Price: From $0.00045 per record
- Free to start: $0.10

## Set it up in n8n

1. Add an HTTP Request node. Method POST, URL https://apiforagents.dev/v1/youtube.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Channels

json · n8n body for YouTube:

```json
{
  "op": "channels",
  "subjects": [
    "@mkbhd"
  ]
}
```

## Videos

json · n8n body for YouTube:

```json
{
  "op": "videos",
  "subject": "@mkbhd",
  "limit": 10
}
```

## Comments

json · n8n body for YouTube:

```json
{
  "op": "comments",
  "subjects": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  ],
  "limit": 50
}
```

## YouTube operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Channels | $0.00045 |
| Videos | $0.00045 |
| Comments | $0.00045 |

## Each operation in detail

- [YouTube Channel API](https://apiforagents.dev/platforms/youtube/channel-api): inputs, fields, sample, price
- [YouTube Videos API](https://apiforagents.dev/platforms/youtube/videos-api): inputs, fields, sample, price
- [YouTube Comments API](https://apiforagents.dev/platforms/youtube/comments-api): inputs, fields, sample, price

## Questions

### Do I need a YouTube account or login?

No. The call returns public YouTube data; no login, cookie or session of yours is involved.

### How do I loop over many rows in n8n?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does YouTube data cost?

Pay as you go, from $0.00045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=youtube (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# X / Twitter data in n8n. Pay per record.

> Get X / Twitter data into n8n: one HTTPS call per operation, a free quote first, pay per record from $0.000225 per record.

Canonical: https://apiforagents.dev/integrations/n8n/x_twitter · Updated 2026-10-21

Call the X / Twitter API from n8n with one HTTPS request per operation: profiles, posts by a person, search and search posts. Every call can be quoted free first, and you pay per record that comes back, from $0.000225 per record, from a prepaid balance with $0.10 free to start.

- Works with: n8n
- Operations: 4
- Price: From $0.000225 per record
- Free to start: $0.10

## Set it up in n8n

1. Add an HTTP Request node. Method POST, URL https://apiforagents.dev/v1/x_twitter.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Profiles

json · n8n body for X / Twitter:

```json
{
  "op": "profiles",
  "subjects": [
    "@NASA"
  ]
}
```

## Posts by a person

json · n8n body for X / Twitter:

```json
{
  "op": "posts",
  "subject": "@NASA",
  "limit": 20
}
```

## Search

json · n8n body for X / Twitter:

```json
{
  "op": "search",
  "query": "climate scientist",
  "limit": 10
}
```

## Search posts

json · n8n body for X / Twitter:

```json
{
  "op": "searchPosts",
  "query": "electric cars",
  "limit": 25
}
```

## X / Twitter operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Profiles | $0.000225 |
| Posts by a person | $0.000225 |
| Search | $0.000225 |
| Search posts | $0.000225 |

## Each operation in detail

- [X Profile API](https://apiforagents.dev/platforms/x_twitter/profile-api): inputs, fields, sample, price
- [X Posts API](https://apiforagents.dev/platforms/x_twitter/posts-api): inputs, fields, sample, price
- [X Account Search API](https://apiforagents.dev/platforms/x_twitter/account-search-api): inputs, fields, sample, price
- [X Post Search API](https://apiforagents.dev/platforms/x_twitter/post-search-api): inputs, fields, sample, price

## Questions

### Do I need a X / Twitter account or login?

No. The call returns public X / Twitter data; no login, cookie or session of yours is involved.

### How do I loop over many rows in n8n?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does X / Twitter data cost?

Pay as you go, from $0.000225 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=x_twitter (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Reddit data in n8n. Pay per record.

> Get Reddit data into n8n: one HTTPS call per operation, a free quote first, pay per record from $0.0045 per record.

Canonical: https://apiforagents.dev/integrations/n8n/reddit · Updated 2026-10-21

Call the Reddit API from n8n with one HTTPS request per operation: posts by a person, subreddit, comments and search. Every call can be quoted free first, and you pay per record that comes back, from $0.0045 per record, from a prepaid balance with $0.10 free to start.

- Works with: n8n
- Operations: 4
- Price: From $0.0045 per record
- Free to start: $0.10

## Set it up in n8n

1. Add an HTTP Request node. Method POST, URL https://apiforagents.dev/v1/reddit.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Posts by a person

json · n8n body for Reddit:

```json
{
  "op": "posts",
  "subject": "u/spez",
  "limit": 25
}
```

## Subreddit

json · n8n body for Reddit:

```json
{
  "op": "subreddit",
  "subject": "r/technology",
  "sort": "top",
  "postedWithin": "7d",
  "limit": 25
}
```

## Comments

json · n8n body for Reddit:

```json
{
  "op": "comments",
  "subjects": [
    "https://www.reddit.com/r/technology/comments/<post-id>/"
  ],
  "limit": 50
}
```

## Search

json · n8n body for Reddit:

```json
{
  "op": "search",
  "query": "electric cars",
  "sort": "top",
  "postedWithin": "30d",
  "limit": 25
}
```

## Reddit operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Posts by a person | $0.0045 |
| Subreddit | $0.0045 |
| Comments | $0.0045 |
| Search | $0.0045 |

## Each operation in detail

- [Reddit User Posts API](https://apiforagents.dev/platforms/reddit/user-posts-api): inputs, fields, sample, price
- [Reddit Subreddit API](https://apiforagents.dev/platforms/reddit/subreddit-api): inputs, fields, sample, price
- [Reddit Comments API](https://apiforagents.dev/platforms/reddit/comments-api): inputs, fields, sample, price
- [Reddit Search API](https://apiforagents.dev/platforms/reddit/search-api): inputs, fields, sample, price

## Questions

### Do I need a Reddit account or login?

No. The call returns public Reddit data; no login, cookie or session of yours is involved.

### How do I loop over many rows in n8n?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Reddit data cost?

Pay as you go, from $0.0045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=reddit (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# TikTok data in n8n. Pay per record.

> Get TikTok data into n8n: one HTTPS call per operation, a free quote first, pay per record from $0.00045 per record.

Canonical: https://apiforagents.dev/integrations/n8n/tiktok · Updated 2026-10-21

Call the TikTok API from n8n with one HTTPS request per operation: profiles, posts by a person, videos and search posts. Every call can be quoted free first, and you pay per record that comes back, from $0.00045 per record, from a prepaid balance with $0.10 free to start.

- Works with: n8n
- Operations: 8
- Price: From $0.00045 per record
- Free to start: $0.10

## Set it up in n8n

1. Add an HTTP Request node. Method POST, URL https://apiforagents.dev/v1/tiktok.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Profiles

json · n8n body for TikTok:

```json
{
  "op": "profiles",
  "subjects": [
    "@nba",
    "@natgeo"
  ]
}
```

## Posts by a person

json · n8n body for TikTok:

```json
{
  "op": "posts",
  "subject": "@nba",
  "limit": 20
}
```

## Videos

json · n8n body for TikTok:

```json
{
  "op": "videos",
  "subjects": [
    "https://www.tiktok.com/@nba/video/<video-id>"
  ]
}
```

## Search posts

json · n8n body for TikTok:

```json
{
  "op": "searchPosts",
  "hashtag": "booktok",
  "limit": 25
}
```

## TikTok operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Profiles | $0.0022 |
| Posts by a person | $0.0018 |
| Videos | $0.00045 |
| Search posts | $0.0018 |
| Search | $0.00045 |
| Comments | $0.00045 |
| Followers | $0.0009 |
| Shop | $0.013 |

## Each operation in detail

- [TikTok Profile API](https://apiforagents.dev/platforms/tiktok/profile-api): inputs, fields, sample, price
- [TikTok Posts API](https://apiforagents.dev/platforms/tiktok/posts-api): inputs, fields, sample, price
- [TikTok Video API](https://apiforagents.dev/platforms/tiktok/video-api): inputs, fields, sample, price
- [TikTok Video Search API](https://apiforagents.dev/platforms/tiktok/video-search-api): inputs, fields, sample, price
- [TikTok Account Search API](https://apiforagents.dev/platforms/tiktok/account-search-api): inputs, fields, sample, price
- [TikTok Comments API](https://apiforagents.dev/platforms/tiktok/comments-api): inputs, fields, sample, price
- [TikTok Followers API](https://apiforagents.dev/platforms/tiktok/followers-api): inputs, fields, sample, price
- [TikTok Shop API](https://apiforagents.dev/platforms/tiktok/shop-api): inputs, fields, sample, price

## Questions

### Do I need a TikTok account or login?

No. The call returns public TikTok data; no login, cookie or session of yours is involved.

### How do I loop over many rows in n8n?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does TikTok data cost?

Pay as you go, from $0.00045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tiktok (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Facebook data in n8n. Pay per record.

> Get Facebook data into n8n: one HTTPS call per operation, a free quote first, pay per record from $0.0022 per record.

Canonical: https://apiforagents.dev/integrations/n8n/facebook · Updated 2026-10-21

Call the Facebook API from n8n with one HTTPS request per operation: pages, posts by a person, reels and comments. Every call can be quoted free first, and you pay per record that comes back, from $0.0022 per record, from a prepaid balance with $0.10 free to start.

- Works with: n8n
- Operations: 9
- Price: From $0.0022 per record
- Free to start: $0.10

## Set it up in n8n

1. Add an HTTP Request node. Method POST, URL https://apiforagents.dev/v1/facebook.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Pages

json · n8n body for Facebook:

```json
{
  "op": "pages",
  "subjects": [
    "nike",
    "natgeo"
  ]
}
```

## Posts by a person

json · n8n body for Facebook:

```json
{
  "op": "posts",
  "subject": "nike",
  "since": "2026-10-01",
  "limit": 20
}
```

## Reels

json · n8n body for Facebook:

```json
{
  "op": "reels",
  "subject": "natgeo",
  "limit": 10
}
```

## Comments

json · n8n body for Facebook:

```json
{
  "op": "comments",
  "subjects": [
    "https://www.facebook.com/nike/posts/<post-id>"
  ],
  "sort": "top",
  "limit": 50
}
```

## Facebook operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Pages | $0.009 |
| Posts by a person | $0.0045 |
| Reels | $0.0045 |
| Comments | $0.0022 |
| Reviews | $0.0022 |
| Followers | $0.0067 |
| Ads | $0.0045 |
| Events | $0.009 |
| Marketplace | $0.009 |

## Each operation in detail

- [Facebook Page API](https://apiforagents.dev/platforms/facebook/page-api): inputs, fields, sample, price
- [Facebook Posts API](https://apiforagents.dev/platforms/facebook/posts-api): inputs, fields, sample, price
- [Facebook Reels API](https://apiforagents.dev/platforms/facebook/reels-api): inputs, fields, sample, price
- [Facebook Comments API](https://apiforagents.dev/platforms/facebook/comments-api): inputs, fields, sample, price
- [Facebook Reviews API](https://apiforagents.dev/platforms/facebook/reviews-api): inputs, fields, sample, price
- [Facebook Followers API](https://apiforagents.dev/platforms/facebook/followers-api): inputs, fields, sample, price
- [Facebook Ad Library API](https://apiforagents.dev/platforms/facebook/ad-library-api): inputs, fields, sample, price
- [Facebook Events API](https://apiforagents.dev/platforms/facebook/events-api): inputs, fields, sample, price
- [Facebook Marketplace API](https://apiforagents.dev/platforms/facebook/marketplace-api): inputs, fields, sample, price

## Questions

### Do I need a Facebook account or login?

No. The call returns public Facebook data; no login, cookie or session of yours is involved.

### How do I loop over many rows in n8n?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Facebook data cost?

Pay as you go, from $0.0022 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=facebook (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Amazon data in n8n. Pay per record.

> Get Amazon products, search and reviews into n8n: one HTTPS call per operation, a free quote first, pay per record from $0.00045 per record.

Canonical: https://apiforagents.dev/integrations/n8n/amazon · Updated 2026-10-21

Call the Amazon API from n8n with one HTTPS request per operation: products, search and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.00045 per record, from a prepaid balance with $0.10 free to start.

- Works with: n8n
- Operations: 3
- Price: From $0.00045 per record
- Free to start: $0.10

## Set it up in n8n

1. Add an HTTP Request node. Method POST, URL https://apiforagents.dev/v1/amazon.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Products

json · n8n body for Amazon:

```json
{
  "op": "products",
  "subjects": [
    "B0DGHMNQ5Z"
  ],
  "marketplace": "com"
}
```

## Search

json · n8n body for Amazon:

```json
{
  "op": "search",
  "query": "wireless earbuds",
  "marketplace": "com",
  "limit": 10
}
```

## Reviews

json · n8n body for Amazon:

```json
{
  "op": "reviews",
  "subjects": [
    "B0DGHMNQ5Z"
  ],
  "marketplace": "com",
  "limit": 50
}
```

## Amazon operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0014 |
| Search | $0.00045 |
| Reviews | $0.00045 |

## Each operation in detail

- [Amazon Product API](https://apiforagents.dev/platforms/amazon/product-api): inputs, fields, sample, price
- [Amazon Search API](https://apiforagents.dev/platforms/amazon/search-api): inputs, fields, sample, price
- [Amazon Reviews API](https://apiforagents.dev/platforms/amazon/reviews-api): inputs, fields, sample, price

## Questions

### Do I need a Amazon account or login?

No. The call returns public Amazon data; no login, cookie or session of yours is involved.

### How do I loop over many rows in n8n?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Amazon data cost?

Pay as you go, from $0.00045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=amazon (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Shopify data in n8n. Pay per record.

> Get Shopify products into n8n: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/n8n/shopify · Updated 2026-10-21

Call the Shopify API from n8n with one HTTPS request per operation: products. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: n8n
- Operations: 1
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in n8n

1. Add an HTTP Request node. Method POST, URL https://apiforagents.dev/v1/shopify.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Products

json · n8n body for Shopify:

```json
{
  "op": "products",
  "subjects": [
    "https://www.allbirds.com"
  ],
  "limit": 25
}
```

## Shopify operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |

## Each operation in detail

- [Shopify Products API](https://apiforagents.dev/platforms/shopify/products-api): inputs, fields, sample, price

## Questions

### Do I need a Shopify account or login?

No. The call returns public Shopify data; no login, cookie or session of yours is involved.

### How do I loop over many rows in n8n?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Shopify data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=shopify (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Farfetch data in n8n. Pay per record.

> Get Farfetch products, search and listing into n8n: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/n8n/farfetch · Updated 2026-10-21

Call the Farfetch API from n8n with one HTTPS request per operation: products, search and listing. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: n8n
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in n8n

1. Add an HTTP Request node. Method POST, URL https://apiforagents.dev/v1/farfetch.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Products

json · n8n body for Farfetch:

```json
{
  "op": "products",
  "subjects": [
    "https://www.farfetch.com/shopping/women/<product>-item-<id>.aspx"
  ]
}
```

## Search

json · n8n body for Farfetch:

```json
{
  "op": "search",
  "query": "Gucci loafers",
  "limit": 20
}
```

## Listing

json · n8n body for Farfetch:

```json
{
  "op": "listing",
  "subject": "https://www.farfetch.com/shopping/women/gucci/items.aspx",
  "limit": 20
}
```

## Farfetch operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Listing | $0.0009 |

## Each operation in detail

- [Farfetch Product API](https://apiforagents.dev/platforms/farfetch/product-api): inputs, fields, sample, price
- [Farfetch Search API](https://apiforagents.dev/platforms/farfetch/search-api): inputs, fields, sample, price
- [Farfetch Listings API](https://apiforagents.dev/platforms/farfetch/listings-api): inputs, fields, sample, price

## Questions

### Do I need a Farfetch account or login?

No. The call returns public Farfetch data; no login, cookie or session of yours is involved.

### How do I loop over many rows in n8n?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Farfetch data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=farfetch (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# GOAT data in n8n. Pay per record.

> Get GOAT products, search and listing into n8n: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/n8n/goat · Updated 2026-10-21

Call the GOAT API from n8n with one HTTPS request per operation: products, search and listing. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: n8n
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in n8n

1. Add an HTTP Request node. Method POST, URL https://apiforagents.dev/v1/goat.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Products

json · n8n body for GOAT:

```json
{
  "op": "products",
  "subjects": [
    "https://www.goat.com/sneakers/<product-slug>"
  ],
  "country": "US"
}
```

## Search

json · n8n body for GOAT:

```json
{
  "op": "search",
  "query": "Nike Dunk Low",
  "country": "US",
  "limit": 20
}
```

## Listing

json · n8n body for GOAT:

```json
{
  "op": "listing",
  "subject": "https://www.goat.com/brand/nike",
  "country": "US",
  "limit": 20
}
```

## GOAT operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Listing | $0.0009 |

## Each operation in detail

- [GOAT Product API](https://apiforagents.dev/platforms/goat/product-api): inputs, fields, sample, price
- [GOAT Search API](https://apiforagents.dev/platforms/goat/search-api): inputs, fields, sample, price
- [GOAT Listings API](https://apiforagents.dev/platforms/goat/listings-api): inputs, fields, sample, price

## Questions

### Do I need a GOAT account or login?

No. The call returns public GOAT data; no login, cookie or session of yours is involved.

### How do I loop over many rows in n8n?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does GOAT data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=goat (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# StockX data in n8n. Pay per record.

> Get StockX products, search and listing into n8n: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/n8n/stockx · Updated 2026-10-21

Call the StockX API from n8n with one HTTPS request per operation: products, search and listing. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: n8n
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in n8n

1. Add an HTTP Request node. Method POST, URL https://apiforagents.dev/v1/stockx.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Products

json · n8n body for StockX:

```json
{
  "op": "products",
  "subjects": [
    "https://stockx.com/nike-dunk-low-retro-white-black-2021"
  ],
  "country": "US"
}
```

## Search

json · n8n body for StockX:

```json
{
  "op": "search",
  "query": "Air Jordan 1",
  "country": "US",
  "limit": 20
}
```

## Listing

json · n8n body for StockX:

```json
{
  "op": "listing",
  "subject": "https://stockx.com/brands/nike",
  "country": "US",
  "limit": 20
}
```

## StockX operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Listing | $0.0009 |

## Each operation in detail

- [StockX Product API](https://apiforagents.dev/platforms/stockx/product-api): inputs, fields, sample, price
- [StockX Search API](https://apiforagents.dev/platforms/stockx/search-api): inputs, fields, sample, price
- [StockX Listings API](https://apiforagents.dev/platforms/stockx/listings-api): inputs, fields, sample, price

## Questions

### Do I need a StockX account or login?

No. The call returns public StockX data; no login, cookie or session of yours is involved.

### How do I loop over many rows in n8n?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does StockX data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=stockx (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Blinkit data in n8n. Pay per record.

> Get Blinkit products, search and category into n8n: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/n8n/blinkit · Updated 2026-10-21

Call the Blinkit API from n8n with one HTTPS request per operation: products, search and category. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: n8n
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in n8n

1. Add an HTTP Request node. Method POST, URL https://apiforagents.dev/v1/blinkit.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Products

json · n8n body for Blinkit:

```json
{
  "op": "products",
  "subjects": [
    "https://blinkit.com/prn/<product-name>/prid/<id>"
  ],
  "store": {
    "city": "Bengaluru",
    "pincode": "560001"
  }
}
```

## Search

json · n8n body for Blinkit:

```json
{
  "op": "search",
  "query": "Amul butter",
  "store": {
    "city": "Bengaluru",
    "pincode": "560001"
  },
  "limit": 20
}
```

## Category

json · n8n body for Blinkit:

```json
{
  "op": "category",
  "category": "Atta, Rice & Dal",
  "subCategory": "Atta",
  "store": {
    "city": "Delhi",
    "pincode": "110001"
  },
  "limit": 50
}
```

## Blinkit operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Category | $0.0009 |

## Each operation in detail

- [Blinkit Price and Stock API](https://apiforagents.dev/platforms/blinkit/price-and-stock-api): inputs, fields, sample, price
- [Blinkit Search API](https://apiforagents.dev/platforms/blinkit/search-api): inputs, fields, sample, price
- [Blinkit Category API](https://apiforagents.dev/platforms/blinkit/category-api): inputs, fields, sample, price

## Questions

### Do I need a Blinkit account or login?

No. The call returns public Blinkit data; no login, cookie or session of yours is involved.

### How do I loop over many rows in n8n?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Blinkit data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=blinkit (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Swiggy Instamart data in n8n. Pay per record.

> Get Swiggy Instamart products, search and category into n8n: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/n8n/instamart · Updated 2026-10-21

Call the Swiggy Instamart API from n8n with one HTTPS request per operation: products, search and category. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: n8n
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in n8n

1. Add an HTTP Request node. Method POST, URL https://apiforagents.dev/v1/instamart.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Products

json · n8n body for Swiggy Instamart:

```json
{
  "op": "products",
  "subjects": [
    "https://www.swiggy.com/instamart/item/<item-id>"
  ],
  "store": {
    "city": "Delhi",
    "pincode": "110001"
  }
}
```

## Search

json · n8n body for Swiggy Instamart:

```json
{
  "op": "search",
  "query": "Maggi noodles",
  "store": {
    "city": "Bengaluru",
    "pincode": "560001"
  },
  "limit": 20
}
```

## Category

json · n8n body for Swiggy Instamart:

```json
{
  "op": "category",
  "category": "Atta, Rice and Dal",
  "subCategory": "Atta",
  "store": {
    "city": "Delhi",
    "pincode": "110001"
  },
  "limit": 50
}
```

## Swiggy Instamart operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Category | $0.0009 |

## Each operation in detail

- [Instamart Price and Stock API](https://apiforagents.dev/platforms/instamart/price-and-stock-api): inputs, fields, sample, price
- [Instamart Search API](https://apiforagents.dev/platforms/instamart/search-api): inputs, fields, sample, price
- [Instamart Category API](https://apiforagents.dev/platforms/instamart/category-api): inputs, fields, sample, price

## Questions

### Do I need a Swiggy Instamart account or login?

No. The call returns public Swiggy Instamart data; no login, cookie or session of yours is involved.

### How do I loop over many rows in n8n?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Swiggy Instamart data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=instamart (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Zepto data in n8n. Pay per record.

> Get Zepto products, search and category into n8n: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/n8n/zepto · Updated 2026-10-21

Call the Zepto API from n8n with one HTTPS request per operation: products, search and category. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: n8n
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in n8n

1. Add an HTTP Request node. Method POST, URL https://apiforagents.dev/v1/zepto.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Products

json · n8n body for Zepto:

```json
{
  "op": "products",
  "subjects": [
    "https://www.zepto.com/pn/<product-name>/pvid/<id>"
  ],
  "store": {
    "city": "Bengaluru",
    "pincode": "560001"
  }
}
```

## Search

json · n8n body for Zepto:

```json
{
  "op": "search",
  "query": "Tata Salt",
  "store": {
    "city": "Delhi",
    "pincode": "110001"
  },
  "limit": 20
}
```

## Category

json · n8n body for Zepto:

```json
{
  "op": "category",
  "category": "Atta Rice Oil Dals",
  "subCategory": "Atta",
  "store": {
    "city": "Bengaluru",
    "pincode": "560001"
  },
  "limit": 50
}
```

## Zepto operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Category | $0.0009 |

## Each operation in detail

- [Zepto Price and Stock API](https://apiforagents.dev/platforms/zepto/price-and-stock-api): inputs, fields, sample, price
- [Zepto Search API](https://apiforagents.dev/platforms/zepto/search-api): inputs, fields, sample, price
- [Zepto Category API](https://apiforagents.dev/platforms/zepto/category-api): inputs, fields, sample, price

## Questions

### Do I need a Zepto account or login?

No. The call returns public Zepto data; no login, cookie or session of yours is involved.

### How do I loop over many rows in n8n?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Zepto data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=zepto (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Indeed data in n8n. Pay per record.

> Get Indeed search and jobs into n8n: one HTTPS call per operation, a free quote first, pay per record from $0.000045 per record.

Canonical: https://apiforagents.dev/integrations/n8n/indeed · Updated 2026-10-21

Call the Indeed API from n8n with one HTTPS request per operation: search and jobs. Every call can be quoted free first, and you pay per record that comes back, from $0.000045 per record, from a prepaid balance with $0.10 free to start.

- Works with: n8n
- Operations: 2
- Price: From $0.000045 per record
- Free to start: $0.10

## Set it up in n8n

1. Add an HTTP Request node. Method POST, URL https://apiforagents.dev/v1/indeed.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Search

json · n8n body for Indeed:

```json
{
  "op": "search",
  "query": "software engineer",
  "location": "Austin, TX",
  "country": "US",
  "postedWithin": "7d",
  "limit": 10
}
```

## Jobs

json · n8n body for Indeed:

```json
{
  "op": "jobs",
  "subjects": [
    "https://www.indeed.com/viewjob?jk=<job-key>"
  ],
  "country": "US"
}
```

## Indeed operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Search | $0.000045 |
| Jobs | $0.000045 |

## Each operation in detail

- [Indeed Jobs API](https://apiforagents.dev/platforms/indeed/jobs-api): inputs, fields, sample, price
- [Indeed Job Details API](https://apiforagents.dev/platforms/indeed/job-details-api): inputs, fields, sample, price

## Questions

### Do I need a Indeed account or login?

No. The call returns public Indeed data; no login, cookie or session of yours is involved.

### How do I loop over many rows in n8n?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Indeed data cost?

Pay as you go, from $0.000045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=indeed (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Naukri data in n8n. Pay per record.

> Get Naukri search into n8n: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/n8n/naukri · Updated 2026-10-21

Call the Naukri API from n8n with one HTTPS request per operation: search. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: n8n
- Operations: 1
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in n8n

1. Add an HTTP Request node. Method POST, URL https://apiforagents.dev/v1/naukri.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Search

json · n8n body for Naukri:

```json
{
  "op": "search",
  "query": "data scientist",
  "postedWithin": "7d",
  "experience": "3",
  "locations": [
    "Bengaluru"
  ],
  "limit": 50
}
```

## Naukri operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Search | $0.0018 |

## Each operation in detail

- [Naukri Jobs API](https://apiforagents.dev/platforms/naukri/jobs-api): inputs, fields, sample, price

## Questions

### Do I need a Naukri account or login?

No. The call returns public Naukri data; no login, cookie or session of yours is involved.

### How do I loop over many rows in n8n?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Naukri data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=naukri (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Upwork data in n8n. Pay per record.

> Get Upwork search into n8n: one HTTPS call per operation, a free quote first, pay per record from $0.0027 per record.

Canonical: https://apiforagents.dev/integrations/n8n/upwork · Updated 2026-10-21

Call the Upwork API from n8n with one HTTPS request per operation: search. Every call can be quoted free first, and you pay per record that comes back, from $0.0027 per record, from a prepaid balance with $0.10 free to start.

- Works with: n8n
- Operations: 1
- Price: From $0.0027 per record
- Free to start: $0.10

## Set it up in n8n

1. Add an HTTP Request node. Method POST, URL https://apiforagents.dev/v1/upwork.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Search

json · n8n body for Upwork:

```json
{
  "op": "search",
  "query": "shopify developer",
  "sort": "newest",
  "experienceLevel": [
    "expert"
  ],
  "clientLocation": [
    "United States"
  ],
  "limit": 10
}
```

## Upwork operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Search | $0.0027 |

## Each operation in detail

- [Upwork Jobs API](https://apiforagents.dev/platforms/upwork/jobs-api): inputs, fields, sample, price

## Questions

### Do I need a Upwork account or login?

No. The call returns public Upwork data; no login, cookie or session of yours is involved.

### How do I loop over many rows in n8n?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Upwork data cost?

Pay as you go, from $0.0027 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=upwork (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Contacts data in n8n. Pay per record.

> Get Contacts reveal into n8n: one HTTPS call per operation, a free quote first, pay per record priced per call.

Canonical: https://apiforagents.dev/integrations/n8n/contacts · Updated 2026-10-21

Call the Contacts API from n8n with one HTTPS request per operation: reveal. Every call can be quoted free first, and you pay per record that comes back, priced per call, from a prepaid balance with $0.10 free to start.

- Works with: n8n
- Operations: 1
- Price: priced per call
- Free to start: $0.10

## Set it up in n8n

1. Add an HTTP Request node. Method POST, URL https://apiforagents.dev/v1/contacts.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Reveal

json · n8n body for Contacts:

```json
{
  "op": "reveal",
  "subjects": [
    "satyanadella"
  ],
  "reveal": [
    "email"
  ]
}
```

## Contacts operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Reveal | quoted per call |

## Each operation in detail

- [Work Email and Phone API](https://apiforagents.dev/platforms/contacts/work-email-and-phone-api): inputs, fields, sample, price

## Questions

### Do I need a Contacts account or login?

No. The call returns public Contacts data; no login, cookie or session of yours is involved.

### How do I loop over many rows in n8n?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Contacts data cost?

Pay as you go, priced per call at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=contacts (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Google Maps data in n8n. Pay per record.

> Get Google Maps places, search and reviews into n8n: one HTTPS call per operation, a free quote first, pay per record from $0.000225 per record.

Canonical: https://apiforagents.dev/integrations/n8n/google_maps · Updated 2026-10-21

Call the Google Maps API from n8n with one HTTPS request per operation: places, search and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.000225 per record, from a prepaid balance with $0.10 free to start.

- Works with: n8n
- Operations: 3
- Price: From $0.000225 per record
- Free to start: $0.10

## Set it up in n8n

1. Add an HTTP Request node. Method POST, URL https://apiforagents.dev/v1/google_maps.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Places

json · n8n body for Google Maps:

```json
{
  "op": "places",
  "subjects": [
    "ChIJN1t_tDeuEmsRUsoyG83frY4"
  ]
}
```

## Search

json · n8n body for Google Maps:

```json
{
  "op": "search",
  "query": "coffee shop",
  "location": "Seattle, WA",
  "minRating": "4.5",
  "limit": 20
}
```

## Reviews

json · n8n body for Google Maps:

```json
{
  "op": "reviews",
  "subjects": [
    "ChIJN1t_tDeuEmsRUsoyG83frY4"
  ],
  "sort": "newest",
  "limit": 25
}
```

## Google Maps operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Places | $0.000225 |
| Search | $0.000225 |
| Reviews | $0.000225 |

## Each operation in detail

- [Google Maps Places API](https://apiforagents.dev/platforms/google_maps/places-api): inputs, fields, sample, price
- [Google Maps Search API](https://apiforagents.dev/platforms/google_maps/search-api): inputs, fields, sample, price
- [Google Maps Reviews API](https://apiforagents.dev/platforms/google_maps/reviews-api): inputs, fields, sample, price

## Questions

### Do I need a Google Maps account or login?

No. The call returns public Google Maps data; no login, cookie or session of yours is involved.

### How do I loop over many rows in n8n?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Google Maps data cost?

Pay as you go, from $0.000225 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=google_maps (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Yelp data in n8n. Pay per record.

> Get Yelp businesses, search and reviews into n8n: one HTTPS call per operation, a free quote first, pay per record from $0.000225 per record.

Canonical: https://apiforagents.dev/integrations/n8n/yelp · Updated 2026-10-21

Call the Yelp API from n8n with one HTTPS request per operation: businesses, search and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.000225 per record, from a prepaid balance with $0.10 free to start.

- Works with: n8n
- Operations: 3
- Price: From $0.000225 per record
- Free to start: $0.10

## Set it up in n8n

1. Add an HTTP Request node. Method POST, URL https://apiforagents.dev/v1/yelp.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Businesses

json · n8n body for Yelp:

```json
{
  "op": "businesses",
  "subjects": [
    "katzs-delicatessen-new-york"
  ]
}
```

## Search

json · n8n body for Yelp:

```json
{
  "op": "search",
  "query": "ramen",
  "location": "San Francisco, CA",
  "sort": "rating_high",
  "priceLevels": [
    "1",
    "2"
  ],
  "limit": 20
}
```

## Reviews

json · n8n body for Yelp:

```json
{
  "op": "reviews",
  "subjects": [
    "katzs-delicatessen-new-york"
  ],
  "limit": 25
}
```

## Yelp operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Businesses | $0.000225 |
| Search | $0.000225 |
| Reviews | $0.000225 |

## Each operation in detail

- [Yelp Business API](https://apiforagents.dev/platforms/yelp/business-api): inputs, fields, sample, price
- [Yelp Search API](https://apiforagents.dev/platforms/yelp/search-api): inputs, fields, sample, price
- [Yelp Reviews API](https://apiforagents.dev/platforms/yelp/reviews-api): inputs, fields, sample, price

## Questions

### Do I need a Yelp account or login?

No. The call returns public Yelp data; no login, cookie or session of yours is involved.

### How do I loop over many rows in n8n?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Yelp data cost?

Pay as you go, from $0.000225 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=yelp (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Tripadvisor data in n8n. Pay per record.

> Get Tripadvisor data into n8n: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/n8n/tripadvisor · Updated 2026-10-21

Call the Tripadvisor API from n8n with one HTTPS request per operation: hotels, restaurants, attractions and search hotels. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: n8n
- Operations: 7
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in n8n

1. Add an HTTP Request node. Method POST, URL https://apiforagents.dev/v1/tripadvisor.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Hotels

json · n8n body for Tripadvisor:

```json
{
  "op": "hotels",
  "subjects": [
    "https://www.tripadvisor.com/Hotel_Review-<place-id>-Reviews-The_Plaza-New_York_City_New_York.html"
  ],
  "currency": "USD",
  "stay": {
    "checkIn": "2027-03-12",
    "checkOut": "2027-03-15"
  }
}
```

## Restaurants

json · n8n body for Tripadvisor:

```json
{
  "op": "restaurants",
  "subjects": [
    "https://www.tripadvisor.com/Restaurant_Review-<place-id>-Reviews-Katz_s_Delicatessen-New_York_City_New_York.html"
  ]
}
```

## Attractions

json · n8n body for Tripadvisor:

```json
{
  "op": "attractions",
  "subjects": [
    "https://www.tripadvisor.com/Attraction_Review-<place-id>-Reviews-Statue_of_Liberty-New_York_City_New_York.html"
  ]
}
```

## Search hotels

json · n8n body for Tripadvisor:

```json
{
  "op": "searchHotels",
  "query": "Lisbon",
  "currency": "EUR",
  "limit": 20,
  "stay": {
    "checkIn": "2027-03-12",
    "checkOut": "2027-03-15"
  }
}
```

## Tripadvisor operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Hotels | $0.0018 |
| Restaurants | $0.0018 |
| Attractions | $0.0018 |
| Search hotels | $0.0018 |
| Search restaurants | $0.0018 |
| Search attractions | $0.0018 |
| Reviews | $0.0018 |

## Each operation in detail

- [Tripadvisor Hotels API](https://apiforagents.dev/platforms/tripadvisor/hotels-api): inputs, fields, sample, price
- [Tripadvisor Restaurants API](https://apiforagents.dev/platforms/tripadvisor/restaurants-api): inputs, fields, sample, price
- [Tripadvisor Attractions API](https://apiforagents.dev/platforms/tripadvisor/attractions-api): inputs, fields, sample, price
- [Tripadvisor Hotel Search API](https://apiforagents.dev/platforms/tripadvisor/hotel-search-api): inputs, fields, sample, price
- [Tripadvisor Restaurant Search API](https://apiforagents.dev/platforms/tripadvisor/restaurant-search-api): inputs, fields, sample, price
- [Tripadvisor Attraction Search API](https://apiforagents.dev/platforms/tripadvisor/attraction-search-api): inputs, fields, sample, price
- [Tripadvisor Reviews API](https://apiforagents.dev/platforms/tripadvisor/reviews-api): inputs, fields, sample, price

## Questions

### Do I need a Tripadvisor account or login?

No. The call returns public Tripadvisor data; no login, cookie or session of yours is involved.

### How do I loop over many rows in n8n?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Tripadvisor data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tripadvisor (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Airbnb data in n8n. Pay per record.

> Get Airbnb listings and reviews into n8n: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/n8n/airbnb · Updated 2026-10-21

Call the Airbnb API from n8n with one HTTPS request per operation: listings and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: n8n
- Operations: 2
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in n8n

1. Add an HTTP Request node. Method POST, URL https://apiforagents.dev/v1/airbnb.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Listings

json · n8n body for Airbnb:

```json
{
  "op": "listings",
  "subjects": [
    "https://www.airbnb.com/rooms/<room-id>"
  ],
  "stay": {
    "checkIn": "2027-03-12",
    "checkOut": "2027-03-15",
    "adults": 2,
    "currency": "USD"
  }
}
```

## Reviews

json · n8n body for Airbnb:

```json
{
  "op": "reviews",
  "subjects": [
    "https://www.airbnb.com/rooms/<room-id>"
  ],
  "locale": "en-US",
  "limit": 25
}
```

## Airbnb operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Listings | $0.0018 |
| Reviews | $0.0018 |

## Each operation in detail

- [Airbnb Listings API](https://apiforagents.dev/platforms/airbnb/listings-api): inputs, fields, sample, price
- [Airbnb Reviews API](https://apiforagents.dev/platforms/airbnb/reviews-api): inputs, fields, sample, price

## Questions

### Do I need a Airbnb account or login?

No. The call returns public Airbnb data; no login, cookie or session of yours is involved.

### How do I loop over many rows in n8n?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Airbnb data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=airbnb (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Booking.com data in n8n. Pay per record.

> Get Booking.com properties, search and reviews into n8n: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/n8n/booking · Updated 2026-10-21

Call the Booking.com API from n8n with one HTTPS request per operation: properties, search and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: n8n
- Operations: 3
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in n8n

1. Add an HTTP Request node. Method POST, URL https://apiforagents.dev/v1/booking.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Properties

json · n8n body for Booking.com:

```json
{
  "op": "properties",
  "subjects": [
    "https://www.booking.com/hotel/gb/<hotel-name>.html"
  ],
  "stay": {
    "checkIn": "2027-03-12",
    "checkOut": "2027-03-15",
    "currency": "GBP"
  }
}
```

## Search

json · n8n body for Booking.com:

```json
{
  "op": "search",
  "location": "Barcelona",
  "stay": {
    "checkIn": "2027-03-12",
    "checkOut": "2027-03-15",
    "currency": "EUR"
  },
  "minRating": 8,
  "sort": "price_low",
  "limit": 20
}
```

## Reviews

json · n8n body for Booking.com:

```json
{
  "op": "reviews",
  "subjects": [
    "https://www.booking.com/hotel/gb/<hotel-name>.html"
  ],
  "sort": "newest",
  "scoreBands": [
    "average",
    "poor"
  ],
  "limit": 25
}
```

## Booking.com operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Properties | $0.0018 |
| Search | $0.0018 |
| Reviews | $0.0018 |

## Each operation in detail

- [Booking.com Hotels API](https://apiforagents.dev/platforms/booking/hotels-api): inputs, fields, sample, price
- [Booking.com Search API](https://apiforagents.dev/platforms/booking/search-api): inputs, fields, sample, price
- [Booking.com Reviews API](https://apiforagents.dev/platforms/booking/reviews-api): inputs, fields, sample, price

## Questions

### Do I need a Booking.com account or login?

No. The call returns public Booking.com data; no login, cookie or session of yours is involved.

### How do I loop over many rows in n8n?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Booking.com data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=booking (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Google data in n8n. Pay per record.

> Get Google search, news, images and shopping into n8n: one HTTPS call per operation, a free quote first, pay per record from $0.00009 per record.

Canonical: https://apiforagents.dev/integrations/n8n/google · Updated 2026-10-21

Call the Google API from n8n with one HTTPS request per operation: search, news, images and shopping. Every call can be quoted free first, and you pay per record that comes back, from $0.00009 per record, from a prepaid balance with $0.10 free to start.

- Works with: n8n
- Operations: 5
- Price: From $0.00009 per record
- Free to start: $0.10

## Set it up in n8n

1. Add an HTTP Request node. Method POST, URL https://apiforagents.dev/v1/google.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Search

json · n8n body for Google:

```json
{
  "op": "search",
  "query": "best CRM for startups",
  "pages": 1,
  "country": "US",
  "language": "en"
}
```

## News

json · n8n body for Google:

```json
{
  "op": "news",
  "query": "electric vehicles",
  "postedWithin": "7d",
  "country": "US",
  "language": "en",
  "limit": 20
}
```

## Images

json · n8n body for Google:

```json
{
  "op": "images",
  "query": "Eiffel Tower at night",
  "limit": 20
}
```

## Shopping

json · n8n body for Google:

```json
{
  "op": "shopping",
  "query": "Sony WH-1000XM5",
  "country": "US",
  "language": "en",
  "limit": 20
}
```

## Google operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Search | $0.0009 |
| News | $0.0018 |
| Images | $0.0009 |
| Shopping | $0.0027 |
| Play reviews | $0.00009 |

## Each operation in detail

- [Google Search API](https://apiforagents.dev/platforms/google/search-api): inputs, fields, sample, price
- [Google News API](https://apiforagents.dev/platforms/google/news-api): inputs, fields, sample, price
- [Google Images API](https://apiforagents.dev/platforms/google/images-api): inputs, fields, sample, price
- [Google Shopping API](https://apiforagents.dev/platforms/google/shopping-api): inputs, fields, sample, price
- [Google Play Reviews API](https://apiforagents.dev/platforms/google/play-store-reviews-api): inputs, fields, sample, price

## Questions

### Do I need a Google account or login?

No. The call returns public Google data; no login, cookie or session of yours is involved.

### How do I loop over many rows in n8n?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Google data cost?

Pay as you go, from $0.00009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=google (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Instagram data in Make. Pay per record.

> Get Instagram data into Make: one HTTPS call per operation, a free quote first, pay per record from $0.00045 per record.

Canonical: https://apiforagents.dev/integrations/make/instagram · Updated 2026-10-21

Call the Instagram API from Make with one HTTPS request per operation: profiles, posts by a person, similar and hashtag. Every call can be quoted free first, and you pay per record that comes back, from $0.00045 per record, from a prepaid balance with $0.10 free to start.

- Works with: Make
- Operations: 7
- Price: From $0.00045 per record
- Free to start: $0.10

## Set it up in Make

1. Add an HTTP module (Make a request). Method POST, URL https://apiforagents.dev/v1/instagram.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Profiles

json · Make body for Instagram:

```json
{
  "op": "profiles",
  "subjects": [
    "natgeo",
    "nike"
  ]
}
```

## Posts by a person

json · Make body for Instagram:

```json
{
  "op": "posts",
  "subject": "natgeo",
  "limit": 12
}
```

## Similar

json · Make body for Instagram:

```json
{
  "op": "similar",
  "subject": "natgeo",
  "limit": 20
}
```

## Hashtag

json · Make body for Instagram:

```json
{
  "op": "hashtag",
  "hashtag": "streetphotography",
  "sort": "top",
  "limit": 20
}
```

## Instagram operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Profiles | $0.0018 |
| Posts by a person | $0.0018 |
| Similar | $0.00045 |
| Hashtag | $0.00045 |
| Search | $0.00045 |
| Comments | $0.00045 |
| Followers | $0.000675 |

## Each operation in detail

- [Instagram Profile API](https://apiforagents.dev/platforms/instagram/profile-api): inputs, fields, sample, price
- [Instagram Posts API](https://apiforagents.dev/platforms/instagram/posts-api): inputs, fields, sample, price
- [Instagram Similar Accounts API](https://apiforagents.dev/platforms/instagram/similar-accounts-api): inputs, fields, sample, price
- [Instagram Hashtag API](https://apiforagents.dev/platforms/instagram/hashtag-api): inputs, fields, sample, price
- [Instagram Account Search API](https://apiforagents.dev/platforms/instagram/account-search-api): inputs, fields, sample, price
- [Instagram Comments API](https://apiforagents.dev/platforms/instagram/comments-api): inputs, fields, sample, price
- [Instagram Followers API](https://apiforagents.dev/platforms/instagram/followers-api): inputs, fields, sample, price

## Questions

### Do I need a Instagram account or login?

No. The call returns public Instagram data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Make?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Instagram data cost?

Pay as you go, from $0.00045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=instagram (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# YouTube data in Make. Pay per record.

> Get YouTube channels, videos and comments into Make: one HTTPS call per operation, a free quote first, pay per record from $0.00045 per record.

Canonical: https://apiforagents.dev/integrations/make/youtube · Updated 2026-10-21

Call the YouTube API from Make with one HTTPS request per operation: channels, videos and comments. Every call can be quoted free first, and you pay per record that comes back, from $0.00045 per record, from a prepaid balance with $0.10 free to start.

- Works with: Make
- Operations: 3
- Price: From $0.00045 per record
- Free to start: $0.10

## Set it up in Make

1. Add an HTTP module (Make a request). Method POST, URL https://apiforagents.dev/v1/youtube.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Channels

json · Make body for YouTube:

```json
{
  "op": "channels",
  "subjects": [
    "@mkbhd"
  ]
}
```

## Videos

json · Make body for YouTube:

```json
{
  "op": "videos",
  "subject": "@mkbhd",
  "limit": 10
}
```

## Comments

json · Make body for YouTube:

```json
{
  "op": "comments",
  "subjects": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  ],
  "limit": 50
}
```

## YouTube operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Channels | $0.00045 |
| Videos | $0.00045 |
| Comments | $0.00045 |

## Each operation in detail

- [YouTube Channel API](https://apiforagents.dev/platforms/youtube/channel-api): inputs, fields, sample, price
- [YouTube Videos API](https://apiforagents.dev/platforms/youtube/videos-api): inputs, fields, sample, price
- [YouTube Comments API](https://apiforagents.dev/platforms/youtube/comments-api): inputs, fields, sample, price

## Questions

### Do I need a YouTube account or login?

No. The call returns public YouTube data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Make?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does YouTube data cost?

Pay as you go, from $0.00045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=youtube (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# X / Twitter data in Make. Pay per record.

> Get X / Twitter data into Make: one HTTPS call per operation, a free quote first, pay per record from $0.000225 per record.

Canonical: https://apiforagents.dev/integrations/make/x_twitter · Updated 2026-10-21

Call the X / Twitter API from Make with one HTTPS request per operation: profiles, posts by a person, search and search posts. Every call can be quoted free first, and you pay per record that comes back, from $0.000225 per record, from a prepaid balance with $0.10 free to start.

- Works with: Make
- Operations: 4
- Price: From $0.000225 per record
- Free to start: $0.10

## Set it up in Make

1. Add an HTTP module (Make a request). Method POST, URL https://apiforagents.dev/v1/x_twitter.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Profiles

json · Make body for X / Twitter:

```json
{
  "op": "profiles",
  "subjects": [
    "@NASA"
  ]
}
```

## Posts by a person

json · Make body for X / Twitter:

```json
{
  "op": "posts",
  "subject": "@NASA",
  "limit": 20
}
```

## Search

json · Make body for X / Twitter:

```json
{
  "op": "search",
  "query": "climate scientist",
  "limit": 10
}
```

## Search posts

json · Make body for X / Twitter:

```json
{
  "op": "searchPosts",
  "query": "electric cars",
  "limit": 25
}
```

## X / Twitter operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Profiles | $0.000225 |
| Posts by a person | $0.000225 |
| Search | $0.000225 |
| Search posts | $0.000225 |

## Each operation in detail

- [X Profile API](https://apiforagents.dev/platforms/x_twitter/profile-api): inputs, fields, sample, price
- [X Posts API](https://apiforagents.dev/platforms/x_twitter/posts-api): inputs, fields, sample, price
- [X Account Search API](https://apiforagents.dev/platforms/x_twitter/account-search-api): inputs, fields, sample, price
- [X Post Search API](https://apiforagents.dev/platforms/x_twitter/post-search-api): inputs, fields, sample, price

## Questions

### Do I need a X / Twitter account or login?

No. The call returns public X / Twitter data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Make?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does X / Twitter data cost?

Pay as you go, from $0.000225 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=x_twitter (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Reddit data in Make. Pay per record.

> Get Reddit data into Make: one HTTPS call per operation, a free quote first, pay per record from $0.0045 per record.

Canonical: https://apiforagents.dev/integrations/make/reddit · Updated 2026-10-21

Call the Reddit API from Make with one HTTPS request per operation: posts by a person, subreddit, comments and search. Every call can be quoted free first, and you pay per record that comes back, from $0.0045 per record, from a prepaid balance with $0.10 free to start.

- Works with: Make
- Operations: 4
- Price: From $0.0045 per record
- Free to start: $0.10

## Set it up in Make

1. Add an HTTP module (Make a request). Method POST, URL https://apiforagents.dev/v1/reddit.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Posts by a person

json · Make body for Reddit:

```json
{
  "op": "posts",
  "subject": "u/spez",
  "limit": 25
}
```

## Subreddit

json · Make body for Reddit:

```json
{
  "op": "subreddit",
  "subject": "r/technology",
  "sort": "top",
  "postedWithin": "7d",
  "limit": 25
}
```

## Comments

json · Make body for Reddit:

```json
{
  "op": "comments",
  "subjects": [
    "https://www.reddit.com/r/technology/comments/<post-id>/"
  ],
  "limit": 50
}
```

## Search

json · Make body for Reddit:

```json
{
  "op": "search",
  "query": "electric cars",
  "sort": "top",
  "postedWithin": "30d",
  "limit": 25
}
```

## Reddit operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Posts by a person | $0.0045 |
| Subreddit | $0.0045 |
| Comments | $0.0045 |
| Search | $0.0045 |

## Each operation in detail

- [Reddit User Posts API](https://apiforagents.dev/platforms/reddit/user-posts-api): inputs, fields, sample, price
- [Reddit Subreddit API](https://apiforagents.dev/platforms/reddit/subreddit-api): inputs, fields, sample, price
- [Reddit Comments API](https://apiforagents.dev/platforms/reddit/comments-api): inputs, fields, sample, price
- [Reddit Search API](https://apiforagents.dev/platforms/reddit/search-api): inputs, fields, sample, price

## Questions

### Do I need a Reddit account or login?

No. The call returns public Reddit data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Make?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Reddit data cost?

Pay as you go, from $0.0045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=reddit (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# TikTok data in Make. Pay per record.

> Get TikTok data into Make: one HTTPS call per operation, a free quote first, pay per record from $0.00045 per record.

Canonical: https://apiforagents.dev/integrations/make/tiktok · Updated 2026-10-21

Call the TikTok API from Make with one HTTPS request per operation: profiles, posts by a person, videos and search posts. Every call can be quoted free first, and you pay per record that comes back, from $0.00045 per record, from a prepaid balance with $0.10 free to start.

- Works with: Make
- Operations: 8
- Price: From $0.00045 per record
- Free to start: $0.10

## Set it up in Make

1. Add an HTTP module (Make a request). Method POST, URL https://apiforagents.dev/v1/tiktok.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Profiles

json · Make body for TikTok:

```json
{
  "op": "profiles",
  "subjects": [
    "@nba",
    "@natgeo"
  ]
}
```

## Posts by a person

json · Make body for TikTok:

```json
{
  "op": "posts",
  "subject": "@nba",
  "limit": 20
}
```

## Videos

json · Make body for TikTok:

```json
{
  "op": "videos",
  "subjects": [
    "https://www.tiktok.com/@nba/video/<video-id>"
  ]
}
```

## Search posts

json · Make body for TikTok:

```json
{
  "op": "searchPosts",
  "hashtag": "booktok",
  "limit": 25
}
```

## TikTok operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Profiles | $0.0022 |
| Posts by a person | $0.0018 |
| Videos | $0.00045 |
| Search posts | $0.0018 |
| Search | $0.00045 |
| Comments | $0.00045 |
| Followers | $0.0009 |
| Shop | $0.013 |

## Each operation in detail

- [TikTok Profile API](https://apiforagents.dev/platforms/tiktok/profile-api): inputs, fields, sample, price
- [TikTok Posts API](https://apiforagents.dev/platforms/tiktok/posts-api): inputs, fields, sample, price
- [TikTok Video API](https://apiforagents.dev/platforms/tiktok/video-api): inputs, fields, sample, price
- [TikTok Video Search API](https://apiforagents.dev/platforms/tiktok/video-search-api): inputs, fields, sample, price
- [TikTok Account Search API](https://apiforagents.dev/platforms/tiktok/account-search-api): inputs, fields, sample, price
- [TikTok Comments API](https://apiforagents.dev/platforms/tiktok/comments-api): inputs, fields, sample, price
- [TikTok Followers API](https://apiforagents.dev/platforms/tiktok/followers-api): inputs, fields, sample, price
- [TikTok Shop API](https://apiforagents.dev/platforms/tiktok/shop-api): inputs, fields, sample, price

## Questions

### Do I need a TikTok account or login?

No. The call returns public TikTok data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Make?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does TikTok data cost?

Pay as you go, from $0.00045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tiktok (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Facebook data in Make. Pay per record.

> Get Facebook data into Make: one HTTPS call per operation, a free quote first, pay per record from $0.0022 per record.

Canonical: https://apiforagents.dev/integrations/make/facebook · Updated 2026-10-21

Call the Facebook API from Make with one HTTPS request per operation: pages, posts by a person, reels and comments. Every call can be quoted free first, and you pay per record that comes back, from $0.0022 per record, from a prepaid balance with $0.10 free to start.

- Works with: Make
- Operations: 9
- Price: From $0.0022 per record
- Free to start: $0.10

## Set it up in Make

1. Add an HTTP module (Make a request). Method POST, URL https://apiforagents.dev/v1/facebook.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Pages

json · Make body for Facebook:

```json
{
  "op": "pages",
  "subjects": [
    "nike",
    "natgeo"
  ]
}
```

## Posts by a person

json · Make body for Facebook:

```json
{
  "op": "posts",
  "subject": "nike",
  "since": "2026-10-01",
  "limit": 20
}
```

## Reels

json · Make body for Facebook:

```json
{
  "op": "reels",
  "subject": "natgeo",
  "limit": 10
}
```

## Comments

json · Make body for Facebook:

```json
{
  "op": "comments",
  "subjects": [
    "https://www.facebook.com/nike/posts/<post-id>"
  ],
  "sort": "top",
  "limit": 50
}
```

## Facebook operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Pages | $0.009 |
| Posts by a person | $0.0045 |
| Reels | $0.0045 |
| Comments | $0.0022 |
| Reviews | $0.0022 |
| Followers | $0.0067 |
| Ads | $0.0045 |
| Events | $0.009 |
| Marketplace | $0.009 |

## Each operation in detail

- [Facebook Page API](https://apiforagents.dev/platforms/facebook/page-api): inputs, fields, sample, price
- [Facebook Posts API](https://apiforagents.dev/platforms/facebook/posts-api): inputs, fields, sample, price
- [Facebook Reels API](https://apiforagents.dev/platforms/facebook/reels-api): inputs, fields, sample, price
- [Facebook Comments API](https://apiforagents.dev/platforms/facebook/comments-api): inputs, fields, sample, price
- [Facebook Reviews API](https://apiforagents.dev/platforms/facebook/reviews-api): inputs, fields, sample, price
- [Facebook Followers API](https://apiforagents.dev/platforms/facebook/followers-api): inputs, fields, sample, price
- [Facebook Ad Library API](https://apiforagents.dev/platforms/facebook/ad-library-api): inputs, fields, sample, price
- [Facebook Events API](https://apiforagents.dev/platforms/facebook/events-api): inputs, fields, sample, price
- [Facebook Marketplace API](https://apiforagents.dev/platforms/facebook/marketplace-api): inputs, fields, sample, price

## Questions

### Do I need a Facebook account or login?

No. The call returns public Facebook data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Make?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Facebook data cost?

Pay as you go, from $0.0022 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=facebook (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Amazon data in Make. Pay per record.

> Get Amazon products, search and reviews into Make: one HTTPS call per operation, a free quote first, pay per record from $0.00045 per record.

Canonical: https://apiforagents.dev/integrations/make/amazon · Updated 2026-10-21

Call the Amazon API from Make with one HTTPS request per operation: products, search and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.00045 per record, from a prepaid balance with $0.10 free to start.

- Works with: Make
- Operations: 3
- Price: From $0.00045 per record
- Free to start: $0.10

## Set it up in Make

1. Add an HTTP module (Make a request). Method POST, URL https://apiforagents.dev/v1/amazon.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Products

json · Make body for Amazon:

```json
{
  "op": "products",
  "subjects": [
    "B0DGHMNQ5Z"
  ],
  "marketplace": "com"
}
```

## Search

json · Make body for Amazon:

```json
{
  "op": "search",
  "query": "wireless earbuds",
  "marketplace": "com",
  "limit": 10
}
```

## Reviews

json · Make body for Amazon:

```json
{
  "op": "reviews",
  "subjects": [
    "B0DGHMNQ5Z"
  ],
  "marketplace": "com",
  "limit": 50
}
```

## Amazon operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0014 |
| Search | $0.00045 |
| Reviews | $0.00045 |

## Each operation in detail

- [Amazon Product API](https://apiforagents.dev/platforms/amazon/product-api): inputs, fields, sample, price
- [Amazon Search API](https://apiforagents.dev/platforms/amazon/search-api): inputs, fields, sample, price
- [Amazon Reviews API](https://apiforagents.dev/platforms/amazon/reviews-api): inputs, fields, sample, price

## Questions

### Do I need a Amazon account or login?

No. The call returns public Amazon data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Make?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Amazon data cost?

Pay as you go, from $0.00045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=amazon (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Shopify data in Make. Pay per record.

> Get Shopify products into Make: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/make/shopify · Updated 2026-10-21

Call the Shopify API from Make with one HTTPS request per operation: products. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Make
- Operations: 1
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Make

1. Add an HTTP module (Make a request). Method POST, URL https://apiforagents.dev/v1/shopify.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Products

json · Make body for Shopify:

```json
{
  "op": "products",
  "subjects": [
    "https://www.allbirds.com"
  ],
  "limit": 25
}
```

## Shopify operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |

## Each operation in detail

- [Shopify Products API](https://apiforagents.dev/platforms/shopify/products-api): inputs, fields, sample, price

## Questions

### Do I need a Shopify account or login?

No. The call returns public Shopify data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Make?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Shopify data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=shopify (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Farfetch data in Make. Pay per record.

> Get Farfetch products, search and listing into Make: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/make/farfetch · Updated 2026-10-21

Call the Farfetch API from Make with one HTTPS request per operation: products, search and listing. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Make
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Make

1. Add an HTTP module (Make a request). Method POST, URL https://apiforagents.dev/v1/farfetch.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Products

json · Make body for Farfetch:

```json
{
  "op": "products",
  "subjects": [
    "https://www.farfetch.com/shopping/women/<product>-item-<id>.aspx"
  ]
}
```

## Search

json · Make body for Farfetch:

```json
{
  "op": "search",
  "query": "Gucci loafers",
  "limit": 20
}
```

## Listing

json · Make body for Farfetch:

```json
{
  "op": "listing",
  "subject": "https://www.farfetch.com/shopping/women/gucci/items.aspx",
  "limit": 20
}
```

## Farfetch operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Listing | $0.0009 |

## Each operation in detail

- [Farfetch Product API](https://apiforagents.dev/platforms/farfetch/product-api): inputs, fields, sample, price
- [Farfetch Search API](https://apiforagents.dev/platforms/farfetch/search-api): inputs, fields, sample, price
- [Farfetch Listings API](https://apiforagents.dev/platforms/farfetch/listings-api): inputs, fields, sample, price

## Questions

### Do I need a Farfetch account or login?

No. The call returns public Farfetch data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Make?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Farfetch data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=farfetch (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# GOAT data in Make. Pay per record.

> Get GOAT products, search and listing into Make: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/make/goat · Updated 2026-10-21

Call the GOAT API from Make with one HTTPS request per operation: products, search and listing. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Make
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Make

1. Add an HTTP module (Make a request). Method POST, URL https://apiforagents.dev/v1/goat.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Products

json · Make body for GOAT:

```json
{
  "op": "products",
  "subjects": [
    "https://www.goat.com/sneakers/<product-slug>"
  ],
  "country": "US"
}
```

## Search

json · Make body for GOAT:

```json
{
  "op": "search",
  "query": "Nike Dunk Low",
  "country": "US",
  "limit": 20
}
```

## Listing

json · Make body for GOAT:

```json
{
  "op": "listing",
  "subject": "https://www.goat.com/brand/nike",
  "country": "US",
  "limit": 20
}
```

## GOAT operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Listing | $0.0009 |

## Each operation in detail

- [GOAT Product API](https://apiforagents.dev/platforms/goat/product-api): inputs, fields, sample, price
- [GOAT Search API](https://apiforagents.dev/platforms/goat/search-api): inputs, fields, sample, price
- [GOAT Listings API](https://apiforagents.dev/platforms/goat/listings-api): inputs, fields, sample, price

## Questions

### Do I need a GOAT account or login?

No. The call returns public GOAT data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Make?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does GOAT data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=goat (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# StockX data in Make. Pay per record.

> Get StockX products, search and listing into Make: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/make/stockx · Updated 2026-10-21

Call the StockX API from Make with one HTTPS request per operation: products, search and listing. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Make
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Make

1. Add an HTTP module (Make a request). Method POST, URL https://apiforagents.dev/v1/stockx.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Products

json · Make body for StockX:

```json
{
  "op": "products",
  "subjects": [
    "https://stockx.com/nike-dunk-low-retro-white-black-2021"
  ],
  "country": "US"
}
```

## Search

json · Make body for StockX:

```json
{
  "op": "search",
  "query": "Air Jordan 1",
  "country": "US",
  "limit": 20
}
```

## Listing

json · Make body for StockX:

```json
{
  "op": "listing",
  "subject": "https://stockx.com/brands/nike",
  "country": "US",
  "limit": 20
}
```

## StockX operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Listing | $0.0009 |

## Each operation in detail

- [StockX Product API](https://apiforagents.dev/platforms/stockx/product-api): inputs, fields, sample, price
- [StockX Search API](https://apiforagents.dev/platforms/stockx/search-api): inputs, fields, sample, price
- [StockX Listings API](https://apiforagents.dev/platforms/stockx/listings-api): inputs, fields, sample, price

## Questions

### Do I need a StockX account or login?

No. The call returns public StockX data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Make?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does StockX data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=stockx (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Blinkit data in Make. Pay per record.

> Get Blinkit products, search and category into Make: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/make/blinkit · Updated 2026-10-21

Call the Blinkit API from Make with one HTTPS request per operation: products, search and category. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Make
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Make

1. Add an HTTP module (Make a request). Method POST, URL https://apiforagents.dev/v1/blinkit.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Products

json · Make body for Blinkit:

```json
{
  "op": "products",
  "subjects": [
    "https://blinkit.com/prn/<product-name>/prid/<id>"
  ],
  "store": {
    "city": "Bengaluru",
    "pincode": "560001"
  }
}
```

## Search

json · Make body for Blinkit:

```json
{
  "op": "search",
  "query": "Amul butter",
  "store": {
    "city": "Bengaluru",
    "pincode": "560001"
  },
  "limit": 20
}
```

## Category

json · Make body for Blinkit:

```json
{
  "op": "category",
  "category": "Atta, Rice & Dal",
  "subCategory": "Atta",
  "store": {
    "city": "Delhi",
    "pincode": "110001"
  },
  "limit": 50
}
```

## Blinkit operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Category | $0.0009 |

## Each operation in detail

- [Blinkit Price and Stock API](https://apiforagents.dev/platforms/blinkit/price-and-stock-api): inputs, fields, sample, price
- [Blinkit Search API](https://apiforagents.dev/platforms/blinkit/search-api): inputs, fields, sample, price
- [Blinkit Category API](https://apiforagents.dev/platforms/blinkit/category-api): inputs, fields, sample, price

## Questions

### Do I need a Blinkit account or login?

No. The call returns public Blinkit data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Make?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Blinkit data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=blinkit (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Swiggy Instamart data in Make. Pay per record.

> Get Swiggy Instamart products, search and category into Make: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/make/instamart · Updated 2026-10-21

Call the Swiggy Instamart API from Make with one HTTPS request per operation: products, search and category. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Make
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Make

1. Add an HTTP module (Make a request). Method POST, URL https://apiforagents.dev/v1/instamart.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Products

json · Make body for Swiggy Instamart:

```json
{
  "op": "products",
  "subjects": [
    "https://www.swiggy.com/instamart/item/<item-id>"
  ],
  "store": {
    "city": "Delhi",
    "pincode": "110001"
  }
}
```

## Search

json · Make body for Swiggy Instamart:

```json
{
  "op": "search",
  "query": "Maggi noodles",
  "store": {
    "city": "Bengaluru",
    "pincode": "560001"
  },
  "limit": 20
}
```

## Category

json · Make body for Swiggy Instamart:

```json
{
  "op": "category",
  "category": "Atta, Rice and Dal",
  "subCategory": "Atta",
  "store": {
    "city": "Delhi",
    "pincode": "110001"
  },
  "limit": 50
}
```

## Swiggy Instamart operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Category | $0.0009 |

## Each operation in detail

- [Instamart Price and Stock API](https://apiforagents.dev/platforms/instamart/price-and-stock-api): inputs, fields, sample, price
- [Instamart Search API](https://apiforagents.dev/platforms/instamart/search-api): inputs, fields, sample, price
- [Instamart Category API](https://apiforagents.dev/platforms/instamart/category-api): inputs, fields, sample, price

## Questions

### Do I need a Swiggy Instamart account or login?

No. The call returns public Swiggy Instamart data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Make?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Swiggy Instamart data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=instamart (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Zepto data in Make. Pay per record.

> Get Zepto products, search and category into Make: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/make/zepto · Updated 2026-10-21

Call the Zepto API from Make with one HTTPS request per operation: products, search and category. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Make
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Make

1. Add an HTTP module (Make a request). Method POST, URL https://apiforagents.dev/v1/zepto.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Products

json · Make body for Zepto:

```json
{
  "op": "products",
  "subjects": [
    "https://www.zepto.com/pn/<product-name>/pvid/<id>"
  ],
  "store": {
    "city": "Bengaluru",
    "pincode": "560001"
  }
}
```

## Search

json · Make body for Zepto:

```json
{
  "op": "search",
  "query": "Tata Salt",
  "store": {
    "city": "Delhi",
    "pincode": "110001"
  },
  "limit": 20
}
```

## Category

json · Make body for Zepto:

```json
{
  "op": "category",
  "category": "Atta Rice Oil Dals",
  "subCategory": "Atta",
  "store": {
    "city": "Bengaluru",
    "pincode": "560001"
  },
  "limit": 50
}
```

## Zepto operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Category | $0.0009 |

## Each operation in detail

- [Zepto Price and Stock API](https://apiforagents.dev/platforms/zepto/price-and-stock-api): inputs, fields, sample, price
- [Zepto Search API](https://apiforagents.dev/platforms/zepto/search-api): inputs, fields, sample, price
- [Zepto Category API](https://apiforagents.dev/platforms/zepto/category-api): inputs, fields, sample, price

## Questions

### Do I need a Zepto account or login?

No. The call returns public Zepto data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Make?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Zepto data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=zepto (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Indeed data in Make. Pay per record.

> Get Indeed search and jobs into Make: one HTTPS call per operation, a free quote first, pay per record from $0.000045 per record.

Canonical: https://apiforagents.dev/integrations/make/indeed · Updated 2026-10-21

Call the Indeed API from Make with one HTTPS request per operation: search and jobs. Every call can be quoted free first, and you pay per record that comes back, from $0.000045 per record, from a prepaid balance with $0.10 free to start.

- Works with: Make
- Operations: 2
- Price: From $0.000045 per record
- Free to start: $0.10

## Set it up in Make

1. Add an HTTP module (Make a request). Method POST, URL https://apiforagents.dev/v1/indeed.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Search

json · Make body for Indeed:

```json
{
  "op": "search",
  "query": "software engineer",
  "location": "Austin, TX",
  "country": "US",
  "postedWithin": "7d",
  "limit": 10
}
```

## Jobs

json · Make body for Indeed:

```json
{
  "op": "jobs",
  "subjects": [
    "https://www.indeed.com/viewjob?jk=<job-key>"
  ],
  "country": "US"
}
```

## Indeed operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Search | $0.000045 |
| Jobs | $0.000045 |

## Each operation in detail

- [Indeed Jobs API](https://apiforagents.dev/platforms/indeed/jobs-api): inputs, fields, sample, price
- [Indeed Job Details API](https://apiforagents.dev/platforms/indeed/job-details-api): inputs, fields, sample, price

## Questions

### Do I need a Indeed account or login?

No. The call returns public Indeed data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Make?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Indeed data cost?

Pay as you go, from $0.000045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=indeed (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Naukri data in Make. Pay per record.

> Get Naukri search into Make: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/make/naukri · Updated 2026-10-21

Call the Naukri API from Make with one HTTPS request per operation: search. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: Make
- Operations: 1
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in Make

1. Add an HTTP module (Make a request). Method POST, URL https://apiforagents.dev/v1/naukri.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Search

json · Make body for Naukri:

```json
{
  "op": "search",
  "query": "data scientist",
  "postedWithin": "7d",
  "experience": "3",
  "locations": [
    "Bengaluru"
  ],
  "limit": 50
}
```

## Naukri operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Search | $0.0018 |

## Each operation in detail

- [Naukri Jobs API](https://apiforagents.dev/platforms/naukri/jobs-api): inputs, fields, sample, price

## Questions

### Do I need a Naukri account or login?

No. The call returns public Naukri data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Make?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Naukri data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=naukri (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Upwork data in Make. Pay per record.

> Get Upwork search into Make: one HTTPS call per operation, a free quote first, pay per record from $0.0027 per record.

Canonical: https://apiforagents.dev/integrations/make/upwork · Updated 2026-10-21

Call the Upwork API from Make with one HTTPS request per operation: search. Every call can be quoted free first, and you pay per record that comes back, from $0.0027 per record, from a prepaid balance with $0.10 free to start.

- Works with: Make
- Operations: 1
- Price: From $0.0027 per record
- Free to start: $0.10

## Set it up in Make

1. Add an HTTP module (Make a request). Method POST, URL https://apiforagents.dev/v1/upwork.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Search

json · Make body for Upwork:

```json
{
  "op": "search",
  "query": "shopify developer",
  "sort": "newest",
  "experienceLevel": [
    "expert"
  ],
  "clientLocation": [
    "United States"
  ],
  "limit": 10
}
```

## Upwork operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Search | $0.0027 |

## Each operation in detail

- [Upwork Jobs API](https://apiforagents.dev/platforms/upwork/jobs-api): inputs, fields, sample, price

## Questions

### Do I need a Upwork account or login?

No. The call returns public Upwork data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Make?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Upwork data cost?

Pay as you go, from $0.0027 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=upwork (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Contacts data in Make. Pay per record.

> Get Contacts reveal into Make: one HTTPS call per operation, a free quote first, pay per record priced per call.

Canonical: https://apiforagents.dev/integrations/make/contacts · Updated 2026-10-21

Call the Contacts API from Make with one HTTPS request per operation: reveal. Every call can be quoted free first, and you pay per record that comes back, priced per call, from a prepaid balance with $0.10 free to start.

- Works with: Make
- Operations: 1
- Price: priced per call
- Free to start: $0.10

## Set it up in Make

1. Add an HTTP module (Make a request). Method POST, URL https://apiforagents.dev/v1/contacts.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Reveal

json · Make body for Contacts:

```json
{
  "op": "reveal",
  "subjects": [
    "satyanadella"
  ],
  "reveal": [
    "email"
  ]
}
```

## Contacts operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Reveal | quoted per call |

## Each operation in detail

- [Work Email and Phone API](https://apiforagents.dev/platforms/contacts/work-email-and-phone-api): inputs, fields, sample, price

## Questions

### Do I need a Contacts account or login?

No. The call returns public Contacts data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Make?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Contacts data cost?

Pay as you go, priced per call at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=contacts (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Google Maps data in Make. Pay per record.

> Get Google Maps places, search and reviews into Make: one HTTPS call per operation, a free quote first, pay per record from $0.000225 per record.

Canonical: https://apiforagents.dev/integrations/make/google_maps · Updated 2026-10-21

Call the Google Maps API from Make with one HTTPS request per operation: places, search and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.000225 per record, from a prepaid balance with $0.10 free to start.

- Works with: Make
- Operations: 3
- Price: From $0.000225 per record
- Free to start: $0.10

## Set it up in Make

1. Add an HTTP module (Make a request). Method POST, URL https://apiforagents.dev/v1/google_maps.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Places

json · Make body for Google Maps:

```json
{
  "op": "places",
  "subjects": [
    "ChIJN1t_tDeuEmsRUsoyG83frY4"
  ]
}
```

## Search

json · Make body for Google Maps:

```json
{
  "op": "search",
  "query": "coffee shop",
  "location": "Seattle, WA",
  "minRating": "4.5",
  "limit": 20
}
```

## Reviews

json · Make body for Google Maps:

```json
{
  "op": "reviews",
  "subjects": [
    "ChIJN1t_tDeuEmsRUsoyG83frY4"
  ],
  "sort": "newest",
  "limit": 25
}
```

## Google Maps operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Places | $0.000225 |
| Search | $0.000225 |
| Reviews | $0.000225 |

## Each operation in detail

- [Google Maps Places API](https://apiforagents.dev/platforms/google_maps/places-api): inputs, fields, sample, price
- [Google Maps Search API](https://apiforagents.dev/platforms/google_maps/search-api): inputs, fields, sample, price
- [Google Maps Reviews API](https://apiforagents.dev/platforms/google_maps/reviews-api): inputs, fields, sample, price

## Questions

### Do I need a Google Maps account or login?

No. The call returns public Google Maps data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Make?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Google Maps data cost?

Pay as you go, from $0.000225 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=google_maps (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Yelp data in Make. Pay per record.

> Get Yelp businesses, search and reviews into Make: one HTTPS call per operation, a free quote first, pay per record from $0.000225 per record.

Canonical: https://apiforagents.dev/integrations/make/yelp · Updated 2026-10-21

Call the Yelp API from Make with one HTTPS request per operation: businesses, search and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.000225 per record, from a prepaid balance with $0.10 free to start.

- Works with: Make
- Operations: 3
- Price: From $0.000225 per record
- Free to start: $0.10

## Set it up in Make

1. Add an HTTP module (Make a request). Method POST, URL https://apiforagents.dev/v1/yelp.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Businesses

json · Make body for Yelp:

```json
{
  "op": "businesses",
  "subjects": [
    "katzs-delicatessen-new-york"
  ]
}
```

## Search

json · Make body for Yelp:

```json
{
  "op": "search",
  "query": "ramen",
  "location": "San Francisco, CA",
  "sort": "rating_high",
  "priceLevels": [
    "1",
    "2"
  ],
  "limit": 20
}
```

## Reviews

json · Make body for Yelp:

```json
{
  "op": "reviews",
  "subjects": [
    "katzs-delicatessen-new-york"
  ],
  "limit": 25
}
```

## Yelp operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Businesses | $0.000225 |
| Search | $0.000225 |
| Reviews | $0.000225 |

## Each operation in detail

- [Yelp Business API](https://apiforagents.dev/platforms/yelp/business-api): inputs, fields, sample, price
- [Yelp Search API](https://apiforagents.dev/platforms/yelp/search-api): inputs, fields, sample, price
- [Yelp Reviews API](https://apiforagents.dev/platforms/yelp/reviews-api): inputs, fields, sample, price

## Questions

### Do I need a Yelp account or login?

No. The call returns public Yelp data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Make?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Yelp data cost?

Pay as you go, from $0.000225 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=yelp (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Tripadvisor data in Make. Pay per record.

> Get Tripadvisor data into Make: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/make/tripadvisor · Updated 2026-10-21

Call the Tripadvisor API from Make with one HTTPS request per operation: hotels, restaurants, attractions and search hotels. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: Make
- Operations: 7
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in Make

1. Add an HTTP module (Make a request). Method POST, URL https://apiforagents.dev/v1/tripadvisor.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Hotels

json · Make body for Tripadvisor:

```json
{
  "op": "hotels",
  "subjects": [
    "https://www.tripadvisor.com/Hotel_Review-<place-id>-Reviews-The_Plaza-New_York_City_New_York.html"
  ],
  "currency": "USD",
  "stay": {
    "checkIn": "2027-03-12",
    "checkOut": "2027-03-15"
  }
}
```

## Restaurants

json · Make body for Tripadvisor:

```json
{
  "op": "restaurants",
  "subjects": [
    "https://www.tripadvisor.com/Restaurant_Review-<place-id>-Reviews-Katz_s_Delicatessen-New_York_City_New_York.html"
  ]
}
```

## Attractions

json · Make body for Tripadvisor:

```json
{
  "op": "attractions",
  "subjects": [
    "https://www.tripadvisor.com/Attraction_Review-<place-id>-Reviews-Statue_of_Liberty-New_York_City_New_York.html"
  ]
}
```

## Search hotels

json · Make body for Tripadvisor:

```json
{
  "op": "searchHotels",
  "query": "Lisbon",
  "currency": "EUR",
  "limit": 20,
  "stay": {
    "checkIn": "2027-03-12",
    "checkOut": "2027-03-15"
  }
}
```

## Tripadvisor operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Hotels | $0.0018 |
| Restaurants | $0.0018 |
| Attractions | $0.0018 |
| Search hotels | $0.0018 |
| Search restaurants | $0.0018 |
| Search attractions | $0.0018 |
| Reviews | $0.0018 |

## Each operation in detail

- [Tripadvisor Hotels API](https://apiforagents.dev/platforms/tripadvisor/hotels-api): inputs, fields, sample, price
- [Tripadvisor Restaurants API](https://apiforagents.dev/platforms/tripadvisor/restaurants-api): inputs, fields, sample, price
- [Tripadvisor Attractions API](https://apiforagents.dev/platforms/tripadvisor/attractions-api): inputs, fields, sample, price
- [Tripadvisor Hotel Search API](https://apiforagents.dev/platforms/tripadvisor/hotel-search-api): inputs, fields, sample, price
- [Tripadvisor Restaurant Search API](https://apiforagents.dev/platforms/tripadvisor/restaurant-search-api): inputs, fields, sample, price
- [Tripadvisor Attraction Search API](https://apiforagents.dev/platforms/tripadvisor/attraction-search-api): inputs, fields, sample, price
- [Tripadvisor Reviews API](https://apiforagents.dev/platforms/tripadvisor/reviews-api): inputs, fields, sample, price

## Questions

### Do I need a Tripadvisor account or login?

No. The call returns public Tripadvisor data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Make?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Tripadvisor data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tripadvisor (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Airbnb data in Make. Pay per record.

> Get Airbnb listings and reviews into Make: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/make/airbnb · Updated 2026-10-21

Call the Airbnb API from Make with one HTTPS request per operation: listings and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: Make
- Operations: 2
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in Make

1. Add an HTTP module (Make a request). Method POST, URL https://apiforagents.dev/v1/airbnb.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Listings

json · Make body for Airbnb:

```json
{
  "op": "listings",
  "subjects": [
    "https://www.airbnb.com/rooms/<room-id>"
  ],
  "stay": {
    "checkIn": "2027-03-12",
    "checkOut": "2027-03-15",
    "adults": 2,
    "currency": "USD"
  }
}
```

## Reviews

json · Make body for Airbnb:

```json
{
  "op": "reviews",
  "subjects": [
    "https://www.airbnb.com/rooms/<room-id>"
  ],
  "locale": "en-US",
  "limit": 25
}
```

## Airbnb operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Listings | $0.0018 |
| Reviews | $0.0018 |

## Each operation in detail

- [Airbnb Listings API](https://apiforagents.dev/platforms/airbnb/listings-api): inputs, fields, sample, price
- [Airbnb Reviews API](https://apiforagents.dev/platforms/airbnb/reviews-api): inputs, fields, sample, price

## Questions

### Do I need a Airbnb account or login?

No. The call returns public Airbnb data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Make?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Airbnb data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=airbnb (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Booking.com data in Make. Pay per record.

> Get Booking.com properties, search and reviews into Make: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/make/booking · Updated 2026-10-21

Call the Booking.com API from Make with one HTTPS request per operation: properties, search and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: Make
- Operations: 3
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in Make

1. Add an HTTP module (Make a request). Method POST, URL https://apiforagents.dev/v1/booking.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Properties

json · Make body for Booking.com:

```json
{
  "op": "properties",
  "subjects": [
    "https://www.booking.com/hotel/gb/<hotel-name>.html"
  ],
  "stay": {
    "checkIn": "2027-03-12",
    "checkOut": "2027-03-15",
    "currency": "GBP"
  }
}
```

## Search

json · Make body for Booking.com:

```json
{
  "op": "search",
  "location": "Barcelona",
  "stay": {
    "checkIn": "2027-03-12",
    "checkOut": "2027-03-15",
    "currency": "EUR"
  },
  "minRating": 8,
  "sort": "price_low",
  "limit": 20
}
```

## Reviews

json · Make body for Booking.com:

```json
{
  "op": "reviews",
  "subjects": [
    "https://www.booking.com/hotel/gb/<hotel-name>.html"
  ],
  "sort": "newest",
  "scoreBands": [
    "average",
    "poor"
  ],
  "limit": 25
}
```

## Booking.com operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Properties | $0.0018 |
| Search | $0.0018 |
| Reviews | $0.0018 |

## Each operation in detail

- [Booking.com Hotels API](https://apiforagents.dev/platforms/booking/hotels-api): inputs, fields, sample, price
- [Booking.com Search API](https://apiforagents.dev/platforms/booking/search-api): inputs, fields, sample, price
- [Booking.com Reviews API](https://apiforagents.dev/platforms/booking/reviews-api): inputs, fields, sample, price

## Questions

### Do I need a Booking.com account or login?

No. The call returns public Booking.com data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Make?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Booking.com data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=booking (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Google data in Make. Pay per record.

> Get Google search, news, images and shopping into Make: one HTTPS call per operation, a free quote first, pay per record from $0.00009 per record.

Canonical: https://apiforagents.dev/integrations/make/google · Updated 2026-10-21

Call the Google API from Make with one HTTPS request per operation: search, news, images and shopping. Every call can be quoted free first, and you pay per record that comes back, from $0.00009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Make
- Operations: 5
- Price: From $0.00009 per record
- Free to start: $0.10

## Set it up in Make

1. Add an HTTP module (Make a request). Method POST, URL https://apiforagents.dev/v1/google.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Search

json · Make body for Google:

```json
{
  "op": "search",
  "query": "best CRM for startups",
  "pages": 1,
  "country": "US",
  "language": "en"
}
```

## News

json · Make body for Google:

```json
{
  "op": "news",
  "query": "electric vehicles",
  "postedWithin": "7d",
  "country": "US",
  "language": "en",
  "limit": 20
}
```

## Images

json · Make body for Google:

```json
{
  "op": "images",
  "query": "Eiffel Tower at night",
  "limit": 20
}
```

## Shopping

json · Make body for Google:

```json
{
  "op": "shopping",
  "query": "Sony WH-1000XM5",
  "country": "US",
  "language": "en",
  "limit": 20
}
```

## Google operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Search | $0.0009 |
| News | $0.0018 |
| Images | $0.0009 |
| Shopping | $0.0027 |
| Play reviews | $0.00009 |

## Each operation in detail

- [Google Search API](https://apiforagents.dev/platforms/google/search-api): inputs, fields, sample, price
- [Google News API](https://apiforagents.dev/platforms/google/news-api): inputs, fields, sample, price
- [Google Images API](https://apiforagents.dev/platforms/google/images-api): inputs, fields, sample, price
- [Google Shopping API](https://apiforagents.dev/platforms/google/shopping-api): inputs, fields, sample, price
- [Google Play Reviews API](https://apiforagents.dev/platforms/google/play-store-reviews-api): inputs, fields, sample, price

## Questions

### Do I need a Google account or login?

No. The call returns public Google data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Make?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Google data cost?

Pay as you go, from $0.00009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=google (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Instagram data in Zapier. Pay per record.

> Get Instagram data into Zapier: one HTTPS call per operation, a free quote first, pay per record from $0.00045 per record.

Canonical: https://apiforagents.dev/integrations/zapier/instagram · Updated 2026-10-21

Call the Instagram API from Zapier with one HTTPS request per operation: profiles, posts by a person, similar and hashtag. Every call can be quoted free first, and you pay per record that comes back, from $0.00045 per record, from a prepaid balance with $0.10 free to start.

- Works with: Zapier
- Operations: 7
- Price: From $0.00045 per record
- Free to start: $0.10

## Set it up in Zapier

1. Add a Webhooks by Zapier action (POST, payload type JSON). Method POST, URL https://apiforagents.dev/v1/instagram.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Profiles

json · Zapier body for Instagram:

```json
{
  "op": "profiles",
  "subjects": [
    "natgeo",
    "nike"
  ]
}
```

## Posts by a person

json · Zapier body for Instagram:

```json
{
  "op": "posts",
  "subject": "natgeo",
  "limit": 12
}
```

## Similar

json · Zapier body for Instagram:

```json
{
  "op": "similar",
  "subject": "natgeo",
  "limit": 20
}
```

## Hashtag

json · Zapier body for Instagram:

```json
{
  "op": "hashtag",
  "hashtag": "streetphotography",
  "sort": "top",
  "limit": 20
}
```

## Instagram operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Profiles | $0.0018 |
| Posts by a person | $0.0018 |
| Similar | $0.00045 |
| Hashtag | $0.00045 |
| Search | $0.00045 |
| Comments | $0.00045 |
| Followers | $0.000675 |

## Each operation in detail

- [Instagram Profile API](https://apiforagents.dev/platforms/instagram/profile-api): inputs, fields, sample, price
- [Instagram Posts API](https://apiforagents.dev/platforms/instagram/posts-api): inputs, fields, sample, price
- [Instagram Similar Accounts API](https://apiforagents.dev/platforms/instagram/similar-accounts-api): inputs, fields, sample, price
- [Instagram Hashtag API](https://apiforagents.dev/platforms/instagram/hashtag-api): inputs, fields, sample, price
- [Instagram Account Search API](https://apiforagents.dev/platforms/instagram/account-search-api): inputs, fields, sample, price
- [Instagram Comments API](https://apiforagents.dev/platforms/instagram/comments-api): inputs, fields, sample, price
- [Instagram Followers API](https://apiforagents.dev/platforms/instagram/followers-api): inputs, fields, sample, price

## Questions

### Do I need a Instagram account or login?

No. The call returns public Instagram data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Zapier?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Instagram data cost?

Pay as you go, from $0.00045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=instagram (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# YouTube data in Zapier. Pay per record.

> Get YouTube channels, videos and comments into Zapier: one HTTPS call per operation, a free quote first, pay per record from $0.00045 per record.

Canonical: https://apiforagents.dev/integrations/zapier/youtube · Updated 2026-10-21

Call the YouTube API from Zapier with one HTTPS request per operation: channels, videos and comments. Every call can be quoted free first, and you pay per record that comes back, from $0.00045 per record, from a prepaid balance with $0.10 free to start.

- Works with: Zapier
- Operations: 3
- Price: From $0.00045 per record
- Free to start: $0.10

## Set it up in Zapier

1. Add a Webhooks by Zapier action (POST, payload type JSON). Method POST, URL https://apiforagents.dev/v1/youtube.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Channels

json · Zapier body for YouTube:

```json
{
  "op": "channels",
  "subjects": [
    "@mkbhd"
  ]
}
```

## Videos

json · Zapier body for YouTube:

```json
{
  "op": "videos",
  "subject": "@mkbhd",
  "limit": 10
}
```

## Comments

json · Zapier body for YouTube:

```json
{
  "op": "comments",
  "subjects": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  ],
  "limit": 50
}
```

## YouTube operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Channels | $0.00045 |
| Videos | $0.00045 |
| Comments | $0.00045 |

## Each operation in detail

- [YouTube Channel API](https://apiforagents.dev/platforms/youtube/channel-api): inputs, fields, sample, price
- [YouTube Videos API](https://apiforagents.dev/platforms/youtube/videos-api): inputs, fields, sample, price
- [YouTube Comments API](https://apiforagents.dev/platforms/youtube/comments-api): inputs, fields, sample, price

## Questions

### Do I need a YouTube account or login?

No. The call returns public YouTube data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Zapier?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does YouTube data cost?

Pay as you go, from $0.00045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=youtube (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# X / Twitter data in Zapier. Pay per record.

> Get X / Twitter data into Zapier: one HTTPS call per operation, a free quote first, pay per record from $0.000225 per record.

Canonical: https://apiforagents.dev/integrations/zapier/x_twitter · Updated 2026-10-21

Call the X / Twitter API from Zapier with one HTTPS request per operation: profiles, posts by a person, search and search posts. Every call can be quoted free first, and you pay per record that comes back, from $0.000225 per record, from a prepaid balance with $0.10 free to start.

- Works with: Zapier
- Operations: 4
- Price: From $0.000225 per record
- Free to start: $0.10

## Set it up in Zapier

1. Add a Webhooks by Zapier action (POST, payload type JSON). Method POST, URL https://apiforagents.dev/v1/x_twitter.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Profiles

json · Zapier body for X / Twitter:

```json
{
  "op": "profiles",
  "subjects": [
    "@NASA"
  ]
}
```

## Posts by a person

json · Zapier body for X / Twitter:

```json
{
  "op": "posts",
  "subject": "@NASA",
  "limit": 20
}
```

## Search

json · Zapier body for X / Twitter:

```json
{
  "op": "search",
  "query": "climate scientist",
  "limit": 10
}
```

## Search posts

json · Zapier body for X / Twitter:

```json
{
  "op": "searchPosts",
  "query": "electric cars",
  "limit": 25
}
```

## X / Twitter operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Profiles | $0.000225 |
| Posts by a person | $0.000225 |
| Search | $0.000225 |
| Search posts | $0.000225 |

## Each operation in detail

- [X Profile API](https://apiforagents.dev/platforms/x_twitter/profile-api): inputs, fields, sample, price
- [X Posts API](https://apiforagents.dev/platforms/x_twitter/posts-api): inputs, fields, sample, price
- [X Account Search API](https://apiforagents.dev/platforms/x_twitter/account-search-api): inputs, fields, sample, price
- [X Post Search API](https://apiforagents.dev/platforms/x_twitter/post-search-api): inputs, fields, sample, price

## Questions

### Do I need a X / Twitter account or login?

No. The call returns public X / Twitter data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Zapier?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does X / Twitter data cost?

Pay as you go, from $0.000225 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=x_twitter (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Reddit data in Zapier. Pay per record.

> Get Reddit data into Zapier: one HTTPS call per operation, a free quote first, pay per record from $0.0045 per record.

Canonical: https://apiforagents.dev/integrations/zapier/reddit · Updated 2026-10-21

Call the Reddit API from Zapier with one HTTPS request per operation: posts by a person, subreddit, comments and search. Every call can be quoted free first, and you pay per record that comes back, from $0.0045 per record, from a prepaid balance with $0.10 free to start.

- Works with: Zapier
- Operations: 4
- Price: From $0.0045 per record
- Free to start: $0.10

## Set it up in Zapier

1. Add a Webhooks by Zapier action (POST, payload type JSON). Method POST, URL https://apiforagents.dev/v1/reddit.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Posts by a person

json · Zapier body for Reddit:

```json
{
  "op": "posts",
  "subject": "u/spez",
  "limit": 25
}
```

## Subreddit

json · Zapier body for Reddit:

```json
{
  "op": "subreddit",
  "subject": "r/technology",
  "sort": "top",
  "postedWithin": "7d",
  "limit": 25
}
```

## Comments

json · Zapier body for Reddit:

```json
{
  "op": "comments",
  "subjects": [
    "https://www.reddit.com/r/technology/comments/<post-id>/"
  ],
  "limit": 50
}
```

## Search

json · Zapier body for Reddit:

```json
{
  "op": "search",
  "query": "electric cars",
  "sort": "top",
  "postedWithin": "30d",
  "limit": 25
}
```

## Reddit operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Posts by a person | $0.0045 |
| Subreddit | $0.0045 |
| Comments | $0.0045 |
| Search | $0.0045 |

## Each operation in detail

- [Reddit User Posts API](https://apiforagents.dev/platforms/reddit/user-posts-api): inputs, fields, sample, price
- [Reddit Subreddit API](https://apiforagents.dev/platforms/reddit/subreddit-api): inputs, fields, sample, price
- [Reddit Comments API](https://apiforagents.dev/platforms/reddit/comments-api): inputs, fields, sample, price
- [Reddit Search API](https://apiforagents.dev/platforms/reddit/search-api): inputs, fields, sample, price

## Questions

### Do I need a Reddit account or login?

No. The call returns public Reddit data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Zapier?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Reddit data cost?

Pay as you go, from $0.0045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=reddit (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# TikTok data in Zapier. Pay per record.

> Get TikTok data into Zapier: one HTTPS call per operation, a free quote first, pay per record from $0.00045 per record.

Canonical: https://apiforagents.dev/integrations/zapier/tiktok · Updated 2026-10-21

Call the TikTok API from Zapier with one HTTPS request per operation: profiles, posts by a person, videos and search posts. Every call can be quoted free first, and you pay per record that comes back, from $0.00045 per record, from a prepaid balance with $0.10 free to start.

- Works with: Zapier
- Operations: 8
- Price: From $0.00045 per record
- Free to start: $0.10

## Set it up in Zapier

1. Add a Webhooks by Zapier action (POST, payload type JSON). Method POST, URL https://apiforagents.dev/v1/tiktok.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Profiles

json · Zapier body for TikTok:

```json
{
  "op": "profiles",
  "subjects": [
    "@nba",
    "@natgeo"
  ]
}
```

## Posts by a person

json · Zapier body for TikTok:

```json
{
  "op": "posts",
  "subject": "@nba",
  "limit": 20
}
```

## Videos

json · Zapier body for TikTok:

```json
{
  "op": "videos",
  "subjects": [
    "https://www.tiktok.com/@nba/video/<video-id>"
  ]
}
```

## Search posts

json · Zapier body for TikTok:

```json
{
  "op": "searchPosts",
  "hashtag": "booktok",
  "limit": 25
}
```

## TikTok operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Profiles | $0.0022 |
| Posts by a person | $0.0018 |
| Videos | $0.00045 |
| Search posts | $0.0018 |
| Search | $0.00045 |
| Comments | $0.00045 |
| Followers | $0.0009 |
| Shop | $0.013 |

## Each operation in detail

- [TikTok Profile API](https://apiforagents.dev/platforms/tiktok/profile-api): inputs, fields, sample, price
- [TikTok Posts API](https://apiforagents.dev/platforms/tiktok/posts-api): inputs, fields, sample, price
- [TikTok Video API](https://apiforagents.dev/platforms/tiktok/video-api): inputs, fields, sample, price
- [TikTok Video Search API](https://apiforagents.dev/platforms/tiktok/video-search-api): inputs, fields, sample, price
- [TikTok Account Search API](https://apiforagents.dev/platforms/tiktok/account-search-api): inputs, fields, sample, price
- [TikTok Comments API](https://apiforagents.dev/platforms/tiktok/comments-api): inputs, fields, sample, price
- [TikTok Followers API](https://apiforagents.dev/platforms/tiktok/followers-api): inputs, fields, sample, price
- [TikTok Shop API](https://apiforagents.dev/platforms/tiktok/shop-api): inputs, fields, sample, price

## Questions

### Do I need a TikTok account or login?

No. The call returns public TikTok data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Zapier?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does TikTok data cost?

Pay as you go, from $0.00045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tiktok (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Facebook data in Zapier. Pay per record.

> Get Facebook data into Zapier: one HTTPS call per operation, a free quote first, pay per record from $0.0022 per record.

Canonical: https://apiforagents.dev/integrations/zapier/facebook · Updated 2026-10-21

Call the Facebook API from Zapier with one HTTPS request per operation: pages, posts by a person, reels and comments. Every call can be quoted free first, and you pay per record that comes back, from $0.0022 per record, from a prepaid balance with $0.10 free to start.

- Works with: Zapier
- Operations: 9
- Price: From $0.0022 per record
- Free to start: $0.10

## Set it up in Zapier

1. Add a Webhooks by Zapier action (POST, payload type JSON). Method POST, URL https://apiforagents.dev/v1/facebook.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Pages

json · Zapier body for Facebook:

```json
{
  "op": "pages",
  "subjects": [
    "nike",
    "natgeo"
  ]
}
```

## Posts by a person

json · Zapier body for Facebook:

```json
{
  "op": "posts",
  "subject": "nike",
  "since": "2026-10-01",
  "limit": 20
}
```

## Reels

json · Zapier body for Facebook:

```json
{
  "op": "reels",
  "subject": "natgeo",
  "limit": 10
}
```

## Comments

json · Zapier body for Facebook:

```json
{
  "op": "comments",
  "subjects": [
    "https://www.facebook.com/nike/posts/<post-id>"
  ],
  "sort": "top",
  "limit": 50
}
```

## Facebook operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Pages | $0.009 |
| Posts by a person | $0.0045 |
| Reels | $0.0045 |
| Comments | $0.0022 |
| Reviews | $0.0022 |
| Followers | $0.0067 |
| Ads | $0.0045 |
| Events | $0.009 |
| Marketplace | $0.009 |

## Each operation in detail

- [Facebook Page API](https://apiforagents.dev/platforms/facebook/page-api): inputs, fields, sample, price
- [Facebook Posts API](https://apiforagents.dev/platforms/facebook/posts-api): inputs, fields, sample, price
- [Facebook Reels API](https://apiforagents.dev/platforms/facebook/reels-api): inputs, fields, sample, price
- [Facebook Comments API](https://apiforagents.dev/platforms/facebook/comments-api): inputs, fields, sample, price
- [Facebook Reviews API](https://apiforagents.dev/platforms/facebook/reviews-api): inputs, fields, sample, price
- [Facebook Followers API](https://apiforagents.dev/platforms/facebook/followers-api): inputs, fields, sample, price
- [Facebook Ad Library API](https://apiforagents.dev/platforms/facebook/ad-library-api): inputs, fields, sample, price
- [Facebook Events API](https://apiforagents.dev/platforms/facebook/events-api): inputs, fields, sample, price
- [Facebook Marketplace API](https://apiforagents.dev/platforms/facebook/marketplace-api): inputs, fields, sample, price

## Questions

### Do I need a Facebook account or login?

No. The call returns public Facebook data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Zapier?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Facebook data cost?

Pay as you go, from $0.0022 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=facebook (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Amazon data in Zapier. Pay per record.

> Get Amazon products, search and reviews into Zapier: one HTTPS call per operation, a free quote first, pay per record from $0.00045 per record.

Canonical: https://apiforagents.dev/integrations/zapier/amazon · Updated 2026-10-21

Call the Amazon API from Zapier with one HTTPS request per operation: products, search and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.00045 per record, from a prepaid balance with $0.10 free to start.

- Works with: Zapier
- Operations: 3
- Price: From $0.00045 per record
- Free to start: $0.10

## Set it up in Zapier

1. Add a Webhooks by Zapier action (POST, payload type JSON). Method POST, URL https://apiforagents.dev/v1/amazon.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Products

json · Zapier body for Amazon:

```json
{
  "op": "products",
  "subjects": [
    "B0DGHMNQ5Z"
  ],
  "marketplace": "com"
}
```

## Search

json · Zapier body for Amazon:

```json
{
  "op": "search",
  "query": "wireless earbuds",
  "marketplace": "com",
  "limit": 10
}
```

## Reviews

json · Zapier body for Amazon:

```json
{
  "op": "reviews",
  "subjects": [
    "B0DGHMNQ5Z"
  ],
  "marketplace": "com",
  "limit": 50
}
```

## Amazon operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0014 |
| Search | $0.00045 |
| Reviews | $0.00045 |

## Each operation in detail

- [Amazon Product API](https://apiforagents.dev/platforms/amazon/product-api): inputs, fields, sample, price
- [Amazon Search API](https://apiforagents.dev/platforms/amazon/search-api): inputs, fields, sample, price
- [Amazon Reviews API](https://apiforagents.dev/platforms/amazon/reviews-api): inputs, fields, sample, price

## Questions

### Do I need a Amazon account or login?

No. The call returns public Amazon data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Zapier?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Amazon data cost?

Pay as you go, from $0.00045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=amazon (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Shopify data in Zapier. Pay per record.

> Get Shopify products into Zapier: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/zapier/shopify · Updated 2026-10-21

Call the Shopify API from Zapier with one HTTPS request per operation: products. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Zapier
- Operations: 1
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Zapier

1. Add a Webhooks by Zapier action (POST, payload type JSON). Method POST, URL https://apiforagents.dev/v1/shopify.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Products

json · Zapier body for Shopify:

```json
{
  "op": "products",
  "subjects": [
    "https://www.allbirds.com"
  ],
  "limit": 25
}
```

## Shopify operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |

## Each operation in detail

- [Shopify Products API](https://apiforagents.dev/platforms/shopify/products-api): inputs, fields, sample, price

## Questions

### Do I need a Shopify account or login?

No. The call returns public Shopify data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Zapier?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Shopify data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=shopify (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Farfetch data in Zapier. Pay per record.

> Get Farfetch products, search and listing into Zapier: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/zapier/farfetch · Updated 2026-10-21

Call the Farfetch API from Zapier with one HTTPS request per operation: products, search and listing. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Zapier
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Zapier

1. Add a Webhooks by Zapier action (POST, payload type JSON). Method POST, URL https://apiforagents.dev/v1/farfetch.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Products

json · Zapier body for Farfetch:

```json
{
  "op": "products",
  "subjects": [
    "https://www.farfetch.com/shopping/women/<product>-item-<id>.aspx"
  ]
}
```

## Search

json · Zapier body for Farfetch:

```json
{
  "op": "search",
  "query": "Gucci loafers",
  "limit": 20
}
```

## Listing

json · Zapier body for Farfetch:

```json
{
  "op": "listing",
  "subject": "https://www.farfetch.com/shopping/women/gucci/items.aspx",
  "limit": 20
}
```

## Farfetch operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Listing | $0.0009 |

## Each operation in detail

- [Farfetch Product API](https://apiforagents.dev/platforms/farfetch/product-api): inputs, fields, sample, price
- [Farfetch Search API](https://apiforagents.dev/platforms/farfetch/search-api): inputs, fields, sample, price
- [Farfetch Listings API](https://apiforagents.dev/platforms/farfetch/listings-api): inputs, fields, sample, price

## Questions

### Do I need a Farfetch account or login?

No. The call returns public Farfetch data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Zapier?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Farfetch data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=farfetch (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# GOAT data in Zapier. Pay per record.

> Get GOAT products, search and listing into Zapier: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/zapier/goat · Updated 2026-10-21

Call the GOAT API from Zapier with one HTTPS request per operation: products, search and listing. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Zapier
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Zapier

1. Add a Webhooks by Zapier action (POST, payload type JSON). Method POST, URL https://apiforagents.dev/v1/goat.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Products

json · Zapier body for GOAT:

```json
{
  "op": "products",
  "subjects": [
    "https://www.goat.com/sneakers/<product-slug>"
  ],
  "country": "US"
}
```

## Search

json · Zapier body for GOAT:

```json
{
  "op": "search",
  "query": "Nike Dunk Low",
  "country": "US",
  "limit": 20
}
```

## Listing

json · Zapier body for GOAT:

```json
{
  "op": "listing",
  "subject": "https://www.goat.com/brand/nike",
  "country": "US",
  "limit": 20
}
```

## GOAT operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Listing | $0.0009 |

## Each operation in detail

- [GOAT Product API](https://apiforagents.dev/platforms/goat/product-api): inputs, fields, sample, price
- [GOAT Search API](https://apiforagents.dev/platforms/goat/search-api): inputs, fields, sample, price
- [GOAT Listings API](https://apiforagents.dev/platforms/goat/listings-api): inputs, fields, sample, price

## Questions

### Do I need a GOAT account or login?

No. The call returns public GOAT data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Zapier?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does GOAT data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=goat (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# StockX data in Zapier. Pay per record.

> Get StockX products, search and listing into Zapier: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/zapier/stockx · Updated 2026-10-21

Call the StockX API from Zapier with one HTTPS request per operation: products, search and listing. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Zapier
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Zapier

1. Add a Webhooks by Zapier action (POST, payload type JSON). Method POST, URL https://apiforagents.dev/v1/stockx.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Products

json · Zapier body for StockX:

```json
{
  "op": "products",
  "subjects": [
    "https://stockx.com/nike-dunk-low-retro-white-black-2021"
  ],
  "country": "US"
}
```

## Search

json · Zapier body for StockX:

```json
{
  "op": "search",
  "query": "Air Jordan 1",
  "country": "US",
  "limit": 20
}
```

## Listing

json · Zapier body for StockX:

```json
{
  "op": "listing",
  "subject": "https://stockx.com/brands/nike",
  "country": "US",
  "limit": 20
}
```

## StockX operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Listing | $0.0009 |

## Each operation in detail

- [StockX Product API](https://apiforagents.dev/platforms/stockx/product-api): inputs, fields, sample, price
- [StockX Search API](https://apiforagents.dev/platforms/stockx/search-api): inputs, fields, sample, price
- [StockX Listings API](https://apiforagents.dev/platforms/stockx/listings-api): inputs, fields, sample, price

## Questions

### Do I need a StockX account or login?

No. The call returns public StockX data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Zapier?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does StockX data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=stockx (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Blinkit data in Zapier. Pay per record.

> Get Blinkit products, search and category into Zapier: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/zapier/blinkit · Updated 2026-10-21

Call the Blinkit API from Zapier with one HTTPS request per operation: products, search and category. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Zapier
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Zapier

1. Add a Webhooks by Zapier action (POST, payload type JSON). Method POST, URL https://apiforagents.dev/v1/blinkit.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Products

json · Zapier body for Blinkit:

```json
{
  "op": "products",
  "subjects": [
    "https://blinkit.com/prn/<product-name>/prid/<id>"
  ],
  "store": {
    "city": "Bengaluru",
    "pincode": "560001"
  }
}
```

## Search

json · Zapier body for Blinkit:

```json
{
  "op": "search",
  "query": "Amul butter",
  "store": {
    "city": "Bengaluru",
    "pincode": "560001"
  },
  "limit": 20
}
```

## Category

json · Zapier body for Blinkit:

```json
{
  "op": "category",
  "category": "Atta, Rice & Dal",
  "subCategory": "Atta",
  "store": {
    "city": "Delhi",
    "pincode": "110001"
  },
  "limit": 50
}
```

## Blinkit operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Category | $0.0009 |

## Each operation in detail

- [Blinkit Price and Stock API](https://apiforagents.dev/platforms/blinkit/price-and-stock-api): inputs, fields, sample, price
- [Blinkit Search API](https://apiforagents.dev/platforms/blinkit/search-api): inputs, fields, sample, price
- [Blinkit Category API](https://apiforagents.dev/platforms/blinkit/category-api): inputs, fields, sample, price

## Questions

### Do I need a Blinkit account or login?

No. The call returns public Blinkit data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Zapier?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Blinkit data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=blinkit (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Swiggy Instamart data in Zapier. Pay per record.

> Get Swiggy Instamart products, search and category into Zapier: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/zapier/instamart · Updated 2026-10-21

Call the Swiggy Instamart API from Zapier with one HTTPS request per operation: products, search and category. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Zapier
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Zapier

1. Add a Webhooks by Zapier action (POST, payload type JSON). Method POST, URL https://apiforagents.dev/v1/instamart.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Products

json · Zapier body for Swiggy Instamart:

```json
{
  "op": "products",
  "subjects": [
    "https://www.swiggy.com/instamart/item/<item-id>"
  ],
  "store": {
    "city": "Delhi",
    "pincode": "110001"
  }
}
```

## Search

json · Zapier body for Swiggy Instamart:

```json
{
  "op": "search",
  "query": "Maggi noodles",
  "store": {
    "city": "Bengaluru",
    "pincode": "560001"
  },
  "limit": 20
}
```

## Category

json · Zapier body for Swiggy Instamart:

```json
{
  "op": "category",
  "category": "Atta, Rice and Dal",
  "subCategory": "Atta",
  "store": {
    "city": "Delhi",
    "pincode": "110001"
  },
  "limit": 50
}
```

## Swiggy Instamart operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Category | $0.0009 |

## Each operation in detail

- [Instamart Price and Stock API](https://apiforagents.dev/platforms/instamart/price-and-stock-api): inputs, fields, sample, price
- [Instamart Search API](https://apiforagents.dev/platforms/instamart/search-api): inputs, fields, sample, price
- [Instamart Category API](https://apiforagents.dev/platforms/instamart/category-api): inputs, fields, sample, price

## Questions

### Do I need a Swiggy Instamart account or login?

No. The call returns public Swiggy Instamart data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Zapier?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Swiggy Instamart data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=instamart (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Zepto data in Zapier. Pay per record.

> Get Zepto products, search and category into Zapier: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/zapier/zepto · Updated 2026-10-21

Call the Zepto API from Zapier with one HTTPS request per operation: products, search and category. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Zapier
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Zapier

1. Add a Webhooks by Zapier action (POST, payload type JSON). Method POST, URL https://apiforagents.dev/v1/zepto.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Products

json · Zapier body for Zepto:

```json
{
  "op": "products",
  "subjects": [
    "https://www.zepto.com/pn/<product-name>/pvid/<id>"
  ],
  "store": {
    "city": "Bengaluru",
    "pincode": "560001"
  }
}
```

## Search

json · Zapier body for Zepto:

```json
{
  "op": "search",
  "query": "Tata Salt",
  "store": {
    "city": "Delhi",
    "pincode": "110001"
  },
  "limit": 20
}
```

## Category

json · Zapier body for Zepto:

```json
{
  "op": "category",
  "category": "Atta Rice Oil Dals",
  "subCategory": "Atta",
  "store": {
    "city": "Bengaluru",
    "pincode": "560001"
  },
  "limit": 50
}
```

## Zepto operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Category | $0.0009 |

## Each operation in detail

- [Zepto Price and Stock API](https://apiforagents.dev/platforms/zepto/price-and-stock-api): inputs, fields, sample, price
- [Zepto Search API](https://apiforagents.dev/platforms/zepto/search-api): inputs, fields, sample, price
- [Zepto Category API](https://apiforagents.dev/platforms/zepto/category-api): inputs, fields, sample, price

## Questions

### Do I need a Zepto account or login?

No. The call returns public Zepto data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Zapier?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Zepto data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=zepto (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Indeed data in Zapier. Pay per record.

> Get Indeed search and jobs into Zapier: one HTTPS call per operation, a free quote first, pay per record from $0.000045 per record.

Canonical: https://apiforagents.dev/integrations/zapier/indeed · Updated 2026-10-21

Call the Indeed API from Zapier with one HTTPS request per operation: search and jobs. Every call can be quoted free first, and you pay per record that comes back, from $0.000045 per record, from a prepaid balance with $0.10 free to start.

- Works with: Zapier
- Operations: 2
- Price: From $0.000045 per record
- Free to start: $0.10

## Set it up in Zapier

1. Add a Webhooks by Zapier action (POST, payload type JSON). Method POST, URL https://apiforagents.dev/v1/indeed.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Search

json · Zapier body for Indeed:

```json
{
  "op": "search",
  "query": "software engineer",
  "location": "Austin, TX",
  "country": "US",
  "postedWithin": "7d",
  "limit": 10
}
```

## Jobs

json · Zapier body for Indeed:

```json
{
  "op": "jobs",
  "subjects": [
    "https://www.indeed.com/viewjob?jk=<job-key>"
  ],
  "country": "US"
}
```

## Indeed operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Search | $0.000045 |
| Jobs | $0.000045 |

## Each operation in detail

- [Indeed Jobs API](https://apiforagents.dev/platforms/indeed/jobs-api): inputs, fields, sample, price
- [Indeed Job Details API](https://apiforagents.dev/platforms/indeed/job-details-api): inputs, fields, sample, price

## Questions

### Do I need a Indeed account or login?

No. The call returns public Indeed data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Zapier?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Indeed data cost?

Pay as you go, from $0.000045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=indeed (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Naukri data in Zapier. Pay per record.

> Get Naukri search into Zapier: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/zapier/naukri · Updated 2026-10-21

Call the Naukri API from Zapier with one HTTPS request per operation: search. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: Zapier
- Operations: 1
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in Zapier

1. Add a Webhooks by Zapier action (POST, payload type JSON). Method POST, URL https://apiforagents.dev/v1/naukri.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Search

json · Zapier body for Naukri:

```json
{
  "op": "search",
  "query": "data scientist",
  "postedWithin": "7d",
  "experience": "3",
  "locations": [
    "Bengaluru"
  ],
  "limit": 50
}
```

## Naukri operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Search | $0.0018 |

## Each operation in detail

- [Naukri Jobs API](https://apiforagents.dev/platforms/naukri/jobs-api): inputs, fields, sample, price

## Questions

### Do I need a Naukri account or login?

No. The call returns public Naukri data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Zapier?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Naukri data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=naukri (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Upwork data in Zapier. Pay per record.

> Get Upwork search into Zapier: one HTTPS call per operation, a free quote first, pay per record from $0.0027 per record.

Canonical: https://apiforagents.dev/integrations/zapier/upwork · Updated 2026-10-21

Call the Upwork API from Zapier with one HTTPS request per operation: search. Every call can be quoted free first, and you pay per record that comes back, from $0.0027 per record, from a prepaid balance with $0.10 free to start.

- Works with: Zapier
- Operations: 1
- Price: From $0.0027 per record
- Free to start: $0.10

## Set it up in Zapier

1. Add a Webhooks by Zapier action (POST, payload type JSON). Method POST, URL https://apiforagents.dev/v1/upwork.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Search

json · Zapier body for Upwork:

```json
{
  "op": "search",
  "query": "shopify developer",
  "sort": "newest",
  "experienceLevel": [
    "expert"
  ],
  "clientLocation": [
    "United States"
  ],
  "limit": 10
}
```

## Upwork operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Search | $0.0027 |

## Each operation in detail

- [Upwork Jobs API](https://apiforagents.dev/platforms/upwork/jobs-api): inputs, fields, sample, price

## Questions

### Do I need a Upwork account or login?

No. The call returns public Upwork data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Zapier?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Upwork data cost?

Pay as you go, from $0.0027 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=upwork (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Contacts data in Zapier. Pay per record.

> Get Contacts reveal into Zapier: one HTTPS call per operation, a free quote first, pay per record priced per call.

Canonical: https://apiforagents.dev/integrations/zapier/contacts · Updated 2026-10-21

Call the Contacts API from Zapier with one HTTPS request per operation: reveal. Every call can be quoted free first, and you pay per record that comes back, priced per call, from a prepaid balance with $0.10 free to start.

- Works with: Zapier
- Operations: 1
- Price: priced per call
- Free to start: $0.10

## Set it up in Zapier

1. Add a Webhooks by Zapier action (POST, payload type JSON). Method POST, URL https://apiforagents.dev/v1/contacts.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Reveal

json · Zapier body for Contacts:

```json
{
  "op": "reveal",
  "subjects": [
    "satyanadella"
  ],
  "reveal": [
    "email"
  ]
}
```

## Contacts operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Reveal | quoted per call |

## Each operation in detail

- [Work Email and Phone API](https://apiforagents.dev/platforms/contacts/work-email-and-phone-api): inputs, fields, sample, price

## Questions

### Do I need a Contacts account or login?

No. The call returns public Contacts data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Zapier?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Contacts data cost?

Pay as you go, priced per call at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=contacts (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Google Maps data in Zapier. Pay per record.

> Get Google Maps places, search and reviews into Zapier: one HTTPS call per operation, a free quote first, pay per record from $0.000225 per record.

Canonical: https://apiforagents.dev/integrations/zapier/google_maps · Updated 2026-10-21

Call the Google Maps API from Zapier with one HTTPS request per operation: places, search and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.000225 per record, from a prepaid balance with $0.10 free to start.

- Works with: Zapier
- Operations: 3
- Price: From $0.000225 per record
- Free to start: $0.10

## Set it up in Zapier

1. Add a Webhooks by Zapier action (POST, payload type JSON). Method POST, URL https://apiforagents.dev/v1/google_maps.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Places

json · Zapier body for Google Maps:

```json
{
  "op": "places",
  "subjects": [
    "ChIJN1t_tDeuEmsRUsoyG83frY4"
  ]
}
```

## Search

json · Zapier body for Google Maps:

```json
{
  "op": "search",
  "query": "coffee shop",
  "location": "Seattle, WA",
  "minRating": "4.5",
  "limit": 20
}
```

## Reviews

json · Zapier body for Google Maps:

```json
{
  "op": "reviews",
  "subjects": [
    "ChIJN1t_tDeuEmsRUsoyG83frY4"
  ],
  "sort": "newest",
  "limit": 25
}
```

## Google Maps operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Places | $0.000225 |
| Search | $0.000225 |
| Reviews | $0.000225 |

## Each operation in detail

- [Google Maps Places API](https://apiforagents.dev/platforms/google_maps/places-api): inputs, fields, sample, price
- [Google Maps Search API](https://apiforagents.dev/platforms/google_maps/search-api): inputs, fields, sample, price
- [Google Maps Reviews API](https://apiforagents.dev/platforms/google_maps/reviews-api): inputs, fields, sample, price

## Questions

### Do I need a Google Maps account or login?

No. The call returns public Google Maps data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Zapier?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Google Maps data cost?

Pay as you go, from $0.000225 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=google_maps (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Yelp data in Zapier. Pay per record.

> Get Yelp businesses, search and reviews into Zapier: one HTTPS call per operation, a free quote first, pay per record from $0.000225 per record.

Canonical: https://apiforagents.dev/integrations/zapier/yelp · Updated 2026-10-21

Call the Yelp API from Zapier with one HTTPS request per operation: businesses, search and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.000225 per record, from a prepaid balance with $0.10 free to start.

- Works with: Zapier
- Operations: 3
- Price: From $0.000225 per record
- Free to start: $0.10

## Set it up in Zapier

1. Add a Webhooks by Zapier action (POST, payload type JSON). Method POST, URL https://apiforagents.dev/v1/yelp.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Businesses

json · Zapier body for Yelp:

```json
{
  "op": "businesses",
  "subjects": [
    "katzs-delicatessen-new-york"
  ]
}
```

## Search

json · Zapier body for Yelp:

```json
{
  "op": "search",
  "query": "ramen",
  "location": "San Francisco, CA",
  "sort": "rating_high",
  "priceLevels": [
    "1",
    "2"
  ],
  "limit": 20
}
```

## Reviews

json · Zapier body for Yelp:

```json
{
  "op": "reviews",
  "subjects": [
    "katzs-delicatessen-new-york"
  ],
  "limit": 25
}
```

## Yelp operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Businesses | $0.000225 |
| Search | $0.000225 |
| Reviews | $0.000225 |

## Each operation in detail

- [Yelp Business API](https://apiforagents.dev/platforms/yelp/business-api): inputs, fields, sample, price
- [Yelp Search API](https://apiforagents.dev/platforms/yelp/search-api): inputs, fields, sample, price
- [Yelp Reviews API](https://apiforagents.dev/platforms/yelp/reviews-api): inputs, fields, sample, price

## Questions

### Do I need a Yelp account or login?

No. The call returns public Yelp data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Zapier?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Yelp data cost?

Pay as you go, from $0.000225 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=yelp (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Tripadvisor data in Zapier. Pay per record.

> Get Tripadvisor data into Zapier: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/zapier/tripadvisor · Updated 2026-10-21

Call the Tripadvisor API from Zapier with one HTTPS request per operation: hotels, restaurants, attractions and search hotels. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: Zapier
- Operations: 7
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in Zapier

1. Add a Webhooks by Zapier action (POST, payload type JSON). Method POST, URL https://apiforagents.dev/v1/tripadvisor.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Hotels

json · Zapier body for Tripadvisor:

```json
{
  "op": "hotels",
  "subjects": [
    "https://www.tripadvisor.com/Hotel_Review-<place-id>-Reviews-The_Plaza-New_York_City_New_York.html"
  ],
  "currency": "USD",
  "stay": {
    "checkIn": "2027-03-12",
    "checkOut": "2027-03-15"
  }
}
```

## Restaurants

json · Zapier body for Tripadvisor:

```json
{
  "op": "restaurants",
  "subjects": [
    "https://www.tripadvisor.com/Restaurant_Review-<place-id>-Reviews-Katz_s_Delicatessen-New_York_City_New_York.html"
  ]
}
```

## Attractions

json · Zapier body for Tripadvisor:

```json
{
  "op": "attractions",
  "subjects": [
    "https://www.tripadvisor.com/Attraction_Review-<place-id>-Reviews-Statue_of_Liberty-New_York_City_New_York.html"
  ]
}
```

## Search hotels

json · Zapier body for Tripadvisor:

```json
{
  "op": "searchHotels",
  "query": "Lisbon",
  "currency": "EUR",
  "limit": 20,
  "stay": {
    "checkIn": "2027-03-12",
    "checkOut": "2027-03-15"
  }
}
```

## Tripadvisor operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Hotels | $0.0018 |
| Restaurants | $0.0018 |
| Attractions | $0.0018 |
| Search hotels | $0.0018 |
| Search restaurants | $0.0018 |
| Search attractions | $0.0018 |
| Reviews | $0.0018 |

## Each operation in detail

- [Tripadvisor Hotels API](https://apiforagents.dev/platforms/tripadvisor/hotels-api): inputs, fields, sample, price
- [Tripadvisor Restaurants API](https://apiforagents.dev/platforms/tripadvisor/restaurants-api): inputs, fields, sample, price
- [Tripadvisor Attractions API](https://apiforagents.dev/platforms/tripadvisor/attractions-api): inputs, fields, sample, price
- [Tripadvisor Hotel Search API](https://apiforagents.dev/platforms/tripadvisor/hotel-search-api): inputs, fields, sample, price
- [Tripadvisor Restaurant Search API](https://apiforagents.dev/platforms/tripadvisor/restaurant-search-api): inputs, fields, sample, price
- [Tripadvisor Attraction Search API](https://apiforagents.dev/platforms/tripadvisor/attraction-search-api): inputs, fields, sample, price
- [Tripadvisor Reviews API](https://apiforagents.dev/platforms/tripadvisor/reviews-api): inputs, fields, sample, price

## Questions

### Do I need a Tripadvisor account or login?

No. The call returns public Tripadvisor data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Zapier?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Tripadvisor data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tripadvisor (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Airbnb data in Zapier. Pay per record.

> Get Airbnb listings and reviews into Zapier: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/zapier/airbnb · Updated 2026-10-21

Call the Airbnb API from Zapier with one HTTPS request per operation: listings and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: Zapier
- Operations: 2
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in Zapier

1. Add a Webhooks by Zapier action (POST, payload type JSON). Method POST, URL https://apiforagents.dev/v1/airbnb.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Listings

json · Zapier body for Airbnb:

```json
{
  "op": "listings",
  "subjects": [
    "https://www.airbnb.com/rooms/<room-id>"
  ],
  "stay": {
    "checkIn": "2027-03-12",
    "checkOut": "2027-03-15",
    "adults": 2,
    "currency": "USD"
  }
}
```

## Reviews

json · Zapier body for Airbnb:

```json
{
  "op": "reviews",
  "subjects": [
    "https://www.airbnb.com/rooms/<room-id>"
  ],
  "locale": "en-US",
  "limit": 25
}
```

## Airbnb operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Listings | $0.0018 |
| Reviews | $0.0018 |

## Each operation in detail

- [Airbnb Listings API](https://apiforagents.dev/platforms/airbnb/listings-api): inputs, fields, sample, price
- [Airbnb Reviews API](https://apiforagents.dev/platforms/airbnb/reviews-api): inputs, fields, sample, price

## Questions

### Do I need a Airbnb account or login?

No. The call returns public Airbnb data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Zapier?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Airbnb data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=airbnb (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Booking.com data in Zapier. Pay per record.

> Get Booking.com properties, search and reviews into Zapier: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/zapier/booking · Updated 2026-10-21

Call the Booking.com API from Zapier with one HTTPS request per operation: properties, search and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: Zapier
- Operations: 3
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in Zapier

1. Add a Webhooks by Zapier action (POST, payload type JSON). Method POST, URL https://apiforagents.dev/v1/booking.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Properties

json · Zapier body for Booking.com:

```json
{
  "op": "properties",
  "subjects": [
    "https://www.booking.com/hotel/gb/<hotel-name>.html"
  ],
  "stay": {
    "checkIn": "2027-03-12",
    "checkOut": "2027-03-15",
    "currency": "GBP"
  }
}
```

## Search

json · Zapier body for Booking.com:

```json
{
  "op": "search",
  "location": "Barcelona",
  "stay": {
    "checkIn": "2027-03-12",
    "checkOut": "2027-03-15",
    "currency": "EUR"
  },
  "minRating": 8,
  "sort": "price_low",
  "limit": 20
}
```

## Reviews

json · Zapier body for Booking.com:

```json
{
  "op": "reviews",
  "subjects": [
    "https://www.booking.com/hotel/gb/<hotel-name>.html"
  ],
  "sort": "newest",
  "scoreBands": [
    "average",
    "poor"
  ],
  "limit": 25
}
```

## Booking.com operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Properties | $0.0018 |
| Search | $0.0018 |
| Reviews | $0.0018 |

## Each operation in detail

- [Booking.com Hotels API](https://apiforagents.dev/platforms/booking/hotels-api): inputs, fields, sample, price
- [Booking.com Search API](https://apiforagents.dev/platforms/booking/search-api): inputs, fields, sample, price
- [Booking.com Reviews API](https://apiforagents.dev/platforms/booking/reviews-api): inputs, fields, sample, price

## Questions

### Do I need a Booking.com account or login?

No. The call returns public Booking.com data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Zapier?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Booking.com data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=booking (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Google data in Zapier. Pay per record.

> Get Google search, news, images and shopping into Zapier: one HTTPS call per operation, a free quote first, pay per record from $0.00009 per record.

Canonical: https://apiforagents.dev/integrations/zapier/google · Updated 2026-10-21

Call the Google API from Zapier with one HTTPS request per operation: search, news, images and shopping. Every call can be quoted free first, and you pay per record that comes back, from $0.00009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Zapier
- Operations: 5
- Price: From $0.00009 per record
- Free to start: $0.10

## Set it up in Zapier

1. Add a Webhooks by Zapier action (POST, payload type JSON). Method POST, URL https://apiforagents.dev/v1/google.
2. Add a header Authorization with the value Bearer and your API key (make one under Console, API keys).
3. Set the body to JSON and paste one of the bodies below. Map the subjects or the query from an earlier step.
4. Run it once with "estimateOnly": true to see the price, then remove that line. Add "maxUsd" so a loop can never overspend.

## Search

json · Zapier body for Google:

```json
{
  "op": "search",
  "query": "best CRM for startups",
  "pages": 1,
  "country": "US",
  "language": "en"
}
```

## News

json · Zapier body for Google:

```json
{
  "op": "news",
  "query": "electric vehicles",
  "postedWithin": "7d",
  "country": "US",
  "language": "en",
  "limit": 20
}
```

## Images

json · Zapier body for Google:

```json
{
  "op": "images",
  "query": "Eiffel Tower at night",
  "limit": 20
}
```

## Shopping

json · Zapier body for Google:

```json
{
  "op": "shopping",
  "query": "Sony WH-1000XM5",
  "country": "US",
  "language": "en",
  "limit": 20
}
```

## Google operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Search | $0.0009 |
| News | $0.0018 |
| Images | $0.0009 |
| Shopping | $0.0027 |
| Play reviews | $0.00009 |

## Each operation in detail

- [Google Search API](https://apiforagents.dev/platforms/google/search-api): inputs, fields, sample, price
- [Google News API](https://apiforagents.dev/platforms/google/news-api): inputs, fields, sample, price
- [Google Images API](https://apiforagents.dev/platforms/google/images-api): inputs, fields, sample, price
- [Google Shopping API](https://apiforagents.dev/platforms/google/shopping-api): inputs, fields, sample, price
- [Google Play Reviews API](https://apiforagents.dev/platforms/google/play-store-reviews-api): inputs, fields, sample, price

## Questions

### Do I need a Google account or login?

No. The call returns public Google data; no login, cookie or session of yours is involved.

### How do I loop over many rows in Zapier?

Batch up to the operation's subject limit in one call where the operation takes subjects, and set maxUsd on every call. The answer's coverage block says which subjects came back and why any did not.

### What does Google data cost?

Pay as you go, from $0.00009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=google (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Instagram data in Python. Pay per record.

> Get Instagram data into Python: one HTTPS call per operation, a free quote first, pay per record from $0.00045 per record.

Canonical: https://apiforagents.dev/integrations/python/instagram · Updated 2026-10-21

Call the Instagram API from Python with one HTTPS request per operation: profiles, posts by a person, similar and hashtag. Every call can be quoted free first, and you pay per record that comes back, from $0.00045 per record, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 7
- Price: From $0.00045 per record
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Profiles

python · Instagram profiles:

```python
import os, requests

def instagram(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/instagram",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = instagram("profiles", {
    "subjects": ["natgeo","nike"],
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Posts by a person

python · Instagram posts:

```python
import os, requests

def instagram(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/instagram",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = instagram("posts", {
    "subject": "natgeo",
    "limit": 12,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Similar

python · Instagram similar:

```python
import os, requests

def instagram(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/instagram",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = instagram("similar", {
    "subject": "natgeo",
    "limit": 20,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Hashtag

python · Instagram hashtag:

```python
import os, requests

def instagram(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/instagram",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = instagram("hashtag", {
    "hashtag": "streetphotography",
    "sort": "top",
    "limit": 20,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Instagram operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Profiles | $0.0018 |
| Posts by a person | $0.0018 |
| Similar | $0.00045 |
| Hashtag | $0.00045 |
| Search | $0.00045 |
| Comments | $0.00045 |
| Followers | $0.000675 |

## Each operation in detail

- [Instagram Profile API](https://apiforagents.dev/platforms/instagram/profile-api): inputs, fields, sample, price
- [Instagram Posts API](https://apiforagents.dev/platforms/instagram/posts-api): inputs, fields, sample, price
- [Instagram Similar Accounts API](https://apiforagents.dev/platforms/instagram/similar-accounts-api): inputs, fields, sample, price
- [Instagram Hashtag API](https://apiforagents.dev/platforms/instagram/hashtag-api): inputs, fields, sample, price
- [Instagram Account Search API](https://apiforagents.dev/platforms/instagram/account-search-api): inputs, fields, sample, price
- [Instagram Comments API](https://apiforagents.dev/platforms/instagram/comments-api): inputs, fields, sample, price
- [Instagram Followers API](https://apiforagents.dev/platforms/instagram/followers-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/instagram, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does Instagram data cost?

Pay as you go, from $0.00045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=instagram (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# YouTube data in Python. Pay per record.

> Get YouTube channels, videos and comments into Python: one HTTPS call per operation, a free quote first, pay per record from $0.00045 per record.

Canonical: https://apiforagents.dev/integrations/python/youtube · Updated 2026-10-21

Call the YouTube API from Python with one HTTPS request per operation: channels, videos and comments. Every call can be quoted free first, and you pay per record that comes back, from $0.00045 per record, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 3
- Price: From $0.00045 per record
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Channels

python · YouTube channels:

```python
import os, requests

def youtube(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/youtube",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = youtube("channels", {
    "subjects": ["@mkbhd"],
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Videos

python · YouTube videos:

```python
import os, requests

def youtube(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/youtube",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = youtube("videos", {
    "subject": "@mkbhd",
    "limit": 10,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Comments

python · YouTube comments:

```python
import os, requests

def youtube(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/youtube",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = youtube("comments", {
    "subjects": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],
    "limit": 50,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## YouTube operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Channels | $0.00045 |
| Videos | $0.00045 |
| Comments | $0.00045 |

## Each operation in detail

- [YouTube Channel API](https://apiforagents.dev/platforms/youtube/channel-api): inputs, fields, sample, price
- [YouTube Videos API](https://apiforagents.dev/platforms/youtube/videos-api): inputs, fields, sample, price
- [YouTube Comments API](https://apiforagents.dev/platforms/youtube/comments-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/youtube, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does YouTube data cost?

Pay as you go, from $0.00045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=youtube (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# X / Twitter data in Python. Pay per record.

> Get X / Twitter data into Python: one HTTPS call per operation, a free quote first, pay per record from $0.000225 per record.

Canonical: https://apiforagents.dev/integrations/python/x_twitter · Updated 2026-10-21

Call the X / Twitter API from Python with one HTTPS request per operation: profiles, posts by a person, search and search posts. Every call can be quoted free first, and you pay per record that comes back, from $0.000225 per record, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 4
- Price: From $0.000225 per record
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Profiles

python · X / Twitter profiles:

```python
import os, requests

def x_twitter(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/x_twitter",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = x_twitter("profiles", {
    "subjects": ["@NASA"],
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Posts by a person

python · X / Twitter posts:

```python
import os, requests

def x_twitter(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/x_twitter",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = x_twitter("posts", {
    "subject": "@NASA",
    "limit": 20,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Search

python · X / Twitter search:

```python
import os, requests

def x_twitter(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/x_twitter",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = x_twitter("search", {
    "query": "climate scientist",
    "limit": 10,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Search posts

python · X / Twitter searchPosts:

```python
import os, requests

def x_twitter(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/x_twitter",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = x_twitter("searchPosts", {
    "query": "electric cars",
    "limit": 25,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## X / Twitter operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Profiles | $0.000225 |
| Posts by a person | $0.000225 |
| Search | $0.000225 |
| Search posts | $0.000225 |

## Each operation in detail

- [X Profile API](https://apiforagents.dev/platforms/x_twitter/profile-api): inputs, fields, sample, price
- [X Posts API](https://apiforagents.dev/platforms/x_twitter/posts-api): inputs, fields, sample, price
- [X Account Search API](https://apiforagents.dev/platforms/x_twitter/account-search-api): inputs, fields, sample, price
- [X Post Search API](https://apiforagents.dev/platforms/x_twitter/post-search-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/x_twitter, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does X / Twitter data cost?

Pay as you go, from $0.000225 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=x_twitter (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Reddit data in Python. Pay per record.

> Get Reddit data into Python: one HTTPS call per operation, a free quote first, pay per record from $0.0045 per record.

Canonical: https://apiforagents.dev/integrations/python/reddit · Updated 2026-10-21

Call the Reddit API from Python with one HTTPS request per operation: posts by a person, subreddit, comments and search. Every call can be quoted free first, and you pay per record that comes back, from $0.0045 per record, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 4
- Price: From $0.0045 per record
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Posts by a person

python · Reddit posts:

```python
import os, requests

def reddit(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/reddit",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = reddit("posts", {
    "subject": "u/spez",
    "limit": 25,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Subreddit

python · Reddit subreddit:

```python
import os, requests

def reddit(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/reddit",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = reddit("subreddit", {
    "subject": "r/technology",
    "sort": "top",
    "postedWithin": "7d",
    "limit": 25,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Comments

python · Reddit comments:

```python
import os, requests

def reddit(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/reddit",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = reddit("comments", {
    "subjects": ["https://www.reddit.com/r/technology/comments/<post-id>/"],
    "limit": 50,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Search

python · Reddit search:

```python
import os, requests

def reddit(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/reddit",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = reddit("search", {
    "query": "electric cars",
    "sort": "top",
    "postedWithin": "30d",
    "limit": 25,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Reddit operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Posts by a person | $0.0045 |
| Subreddit | $0.0045 |
| Comments | $0.0045 |
| Search | $0.0045 |

## Each operation in detail

- [Reddit User Posts API](https://apiforagents.dev/platforms/reddit/user-posts-api): inputs, fields, sample, price
- [Reddit Subreddit API](https://apiforagents.dev/platforms/reddit/subreddit-api): inputs, fields, sample, price
- [Reddit Comments API](https://apiforagents.dev/platforms/reddit/comments-api): inputs, fields, sample, price
- [Reddit Search API](https://apiforagents.dev/platforms/reddit/search-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/reddit, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does Reddit data cost?

Pay as you go, from $0.0045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=reddit (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# TikTok data in Python. Pay per record.

> Get TikTok data into Python: one HTTPS call per operation, a free quote first, pay per record from $0.00045 per record.

Canonical: https://apiforagents.dev/integrations/python/tiktok · Updated 2026-10-21

Call the TikTok API from Python with one HTTPS request per operation: profiles, posts by a person, videos and search posts. Every call can be quoted free first, and you pay per record that comes back, from $0.00045 per record, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 8
- Price: From $0.00045 per record
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Profiles

python · TikTok profiles:

```python
import os, requests

def tiktok(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/tiktok",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = tiktok("profiles", {
    "subjects": ["@nba","@natgeo"],
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Posts by a person

python · TikTok posts:

```python
import os, requests

def tiktok(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/tiktok",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = tiktok("posts", {
    "subject": "@nba",
    "limit": 20,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Videos

python · TikTok videos:

```python
import os, requests

def tiktok(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/tiktok",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = tiktok("videos", {
    "subjects": ["https://www.tiktok.com/@nba/video/<video-id>"],
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Search posts

python · TikTok searchPosts:

```python
import os, requests

def tiktok(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/tiktok",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = tiktok("searchPosts", {
    "hashtag": "booktok",
    "limit": 25,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## TikTok operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Profiles | $0.0022 |
| Posts by a person | $0.0018 |
| Videos | $0.00045 |
| Search posts | $0.0018 |
| Search | $0.00045 |
| Comments | $0.00045 |
| Followers | $0.0009 |
| Shop | $0.013 |

## Each operation in detail

- [TikTok Profile API](https://apiforagents.dev/platforms/tiktok/profile-api): inputs, fields, sample, price
- [TikTok Posts API](https://apiforagents.dev/platforms/tiktok/posts-api): inputs, fields, sample, price
- [TikTok Video API](https://apiforagents.dev/platforms/tiktok/video-api): inputs, fields, sample, price
- [TikTok Video Search API](https://apiforagents.dev/platforms/tiktok/video-search-api): inputs, fields, sample, price
- [TikTok Account Search API](https://apiforagents.dev/platforms/tiktok/account-search-api): inputs, fields, sample, price
- [TikTok Comments API](https://apiforagents.dev/platforms/tiktok/comments-api): inputs, fields, sample, price
- [TikTok Followers API](https://apiforagents.dev/platforms/tiktok/followers-api): inputs, fields, sample, price
- [TikTok Shop API](https://apiforagents.dev/platforms/tiktok/shop-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/tiktok, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does TikTok data cost?

Pay as you go, from $0.00045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tiktok (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Facebook data in Python. Pay per record.

> Get Facebook data into Python: one HTTPS call per operation, a free quote first, pay per record from $0.0022 per record.

Canonical: https://apiforagents.dev/integrations/python/facebook · Updated 2026-10-21

Call the Facebook API from Python with one HTTPS request per operation: pages, posts by a person, reels and comments. Every call can be quoted free first, and you pay per record that comes back, from $0.0022 per record, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 9
- Price: From $0.0022 per record
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Pages

python · Facebook pages:

```python
import os, requests

def facebook(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/facebook",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = facebook("pages", {
    "subjects": ["nike","natgeo"],
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Posts by a person

python · Facebook posts:

```python
import os, requests

def facebook(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/facebook",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = facebook("posts", {
    "subject": "nike",
    "since": "2026-10-01",
    "limit": 20,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Reels

python · Facebook reels:

```python
import os, requests

def facebook(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/facebook",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = facebook("reels", {
    "subject": "natgeo",
    "limit": 10,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Comments

python · Facebook comments:

```python
import os, requests

def facebook(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/facebook",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = facebook("comments", {
    "subjects": ["https://www.facebook.com/nike/posts/<post-id>"],
    "sort": "top",
    "limit": 50,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Facebook operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Pages | $0.009 |
| Posts by a person | $0.0045 |
| Reels | $0.0045 |
| Comments | $0.0022 |
| Reviews | $0.0022 |
| Followers | $0.0067 |
| Ads | $0.0045 |
| Events | $0.009 |
| Marketplace | $0.009 |

## Each operation in detail

- [Facebook Page API](https://apiforagents.dev/platforms/facebook/page-api): inputs, fields, sample, price
- [Facebook Posts API](https://apiforagents.dev/platforms/facebook/posts-api): inputs, fields, sample, price
- [Facebook Reels API](https://apiforagents.dev/platforms/facebook/reels-api): inputs, fields, sample, price
- [Facebook Comments API](https://apiforagents.dev/platforms/facebook/comments-api): inputs, fields, sample, price
- [Facebook Reviews API](https://apiforagents.dev/platforms/facebook/reviews-api): inputs, fields, sample, price
- [Facebook Followers API](https://apiforagents.dev/platforms/facebook/followers-api): inputs, fields, sample, price
- [Facebook Ad Library API](https://apiforagents.dev/platforms/facebook/ad-library-api): inputs, fields, sample, price
- [Facebook Events API](https://apiforagents.dev/platforms/facebook/events-api): inputs, fields, sample, price
- [Facebook Marketplace API](https://apiforagents.dev/platforms/facebook/marketplace-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/facebook, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does Facebook data cost?

Pay as you go, from $0.0022 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=facebook (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Amazon data in Python. Pay per record.

> Get Amazon products, search and reviews into Python: one HTTPS call per operation, a free quote first, pay per record from $0.00045 per record.

Canonical: https://apiforagents.dev/integrations/python/amazon · Updated 2026-10-21

Call the Amazon API from Python with one HTTPS request per operation: products, search and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.00045 per record, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 3
- Price: From $0.00045 per record
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Products

python · Amazon products:

```python
import os, requests

def amazon(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/amazon",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = amazon("products", {
    "subjects": ["B0DGHMNQ5Z"],
    "marketplace": "com",
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Search

python · Amazon search:

```python
import os, requests

def amazon(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/amazon",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = amazon("search", {
    "query": "wireless earbuds",
    "marketplace": "com",
    "limit": 10,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Reviews

python · Amazon reviews:

```python
import os, requests

def amazon(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/amazon",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = amazon("reviews", {
    "subjects": ["B0DGHMNQ5Z"],
    "marketplace": "com",
    "limit": 50,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Amazon operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0014 |
| Search | $0.00045 |
| Reviews | $0.00045 |

## Each operation in detail

- [Amazon Product API](https://apiforagents.dev/platforms/amazon/product-api): inputs, fields, sample, price
- [Amazon Search API](https://apiforagents.dev/platforms/amazon/search-api): inputs, fields, sample, price
- [Amazon Reviews API](https://apiforagents.dev/platforms/amazon/reviews-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/amazon, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does Amazon data cost?

Pay as you go, from $0.00045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=amazon (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Shopify data in Python. Pay per record.

> Get Shopify products into Python: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/python/shopify · Updated 2026-10-21

Call the Shopify API from Python with one HTTPS request per operation: products. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 1
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Products

python · Shopify products:

```python
import os, requests

def shopify(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/shopify",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = shopify("products", {
    "subjects": ["https://www.allbirds.com"],
    "limit": 25,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Shopify operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |

## Each operation in detail

- [Shopify Products API](https://apiforagents.dev/platforms/shopify/products-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/shopify, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does Shopify data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=shopify (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Farfetch data in Python. Pay per record.

> Get Farfetch products, search and listing into Python: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/python/farfetch · Updated 2026-10-21

Call the Farfetch API from Python with one HTTPS request per operation: products, search and listing. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Products

python · Farfetch products:

```python
import os, requests

def farfetch(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/farfetch",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = farfetch("products", {
    "subjects": ["https://www.farfetch.com/shopping/women/<product>-item-<id>.aspx"],
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Search

python · Farfetch search:

```python
import os, requests

def farfetch(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/farfetch",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = farfetch("search", {
    "query": "Gucci loafers",
    "limit": 20,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Listing

python · Farfetch listing:

```python
import os, requests

def farfetch(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/farfetch",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = farfetch("listing", {
    "subject": "https://www.farfetch.com/shopping/women/gucci/items.aspx",
    "limit": 20,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Farfetch operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Listing | $0.0009 |

## Each operation in detail

- [Farfetch Product API](https://apiforagents.dev/platforms/farfetch/product-api): inputs, fields, sample, price
- [Farfetch Search API](https://apiforagents.dev/platforms/farfetch/search-api): inputs, fields, sample, price
- [Farfetch Listings API](https://apiforagents.dev/platforms/farfetch/listings-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/farfetch, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does Farfetch data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=farfetch (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# GOAT data in Python. Pay per record.

> Get GOAT products, search and listing into Python: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/python/goat · Updated 2026-10-21

Call the GOAT API from Python with one HTTPS request per operation: products, search and listing. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Products

python · GOAT products:

```python
import os, requests

def goat(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/goat",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = goat("products", {
    "subjects": ["https://www.goat.com/sneakers/<product-slug>"],
    "country": "US",
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Search

python · GOAT search:

```python
import os, requests

def goat(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/goat",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = goat("search", {
    "query": "Nike Dunk Low",
    "country": "US",
    "limit": 20,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Listing

python · GOAT listing:

```python
import os, requests

def goat(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/goat",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = goat("listing", {
    "subject": "https://www.goat.com/brand/nike",
    "country": "US",
    "limit": 20,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## GOAT operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Listing | $0.0009 |

## Each operation in detail

- [GOAT Product API](https://apiforagents.dev/platforms/goat/product-api): inputs, fields, sample, price
- [GOAT Search API](https://apiforagents.dev/platforms/goat/search-api): inputs, fields, sample, price
- [GOAT Listings API](https://apiforagents.dev/platforms/goat/listings-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/goat, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does GOAT data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=goat (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# StockX data in Python. Pay per record.

> Get StockX products, search and listing into Python: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/python/stockx · Updated 2026-10-21

Call the StockX API from Python with one HTTPS request per operation: products, search and listing. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Products

python · StockX products:

```python
import os, requests

def stockx(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/stockx",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = stockx("products", {
    "subjects": ["https://stockx.com/nike-dunk-low-retro-white-black-2021"],
    "country": "US",
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Search

python · StockX search:

```python
import os, requests

def stockx(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/stockx",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = stockx("search", {
    "query": "Air Jordan 1",
    "country": "US",
    "limit": 20,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Listing

python · StockX listing:

```python
import os, requests

def stockx(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/stockx",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = stockx("listing", {
    "subject": "https://stockx.com/brands/nike",
    "country": "US",
    "limit": 20,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## StockX operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Listing | $0.0009 |

## Each operation in detail

- [StockX Product API](https://apiforagents.dev/platforms/stockx/product-api): inputs, fields, sample, price
- [StockX Search API](https://apiforagents.dev/platforms/stockx/search-api): inputs, fields, sample, price
- [StockX Listings API](https://apiforagents.dev/platforms/stockx/listings-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/stockx, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does StockX data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=stockx (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Blinkit data in Python. Pay per record.

> Get Blinkit products, search and category into Python: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/python/blinkit · Updated 2026-10-21

Call the Blinkit API from Python with one HTTPS request per operation: products, search and category. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Products

python · Blinkit products:

```python
import os, requests

def blinkit(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/blinkit",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = blinkit("products", {
    "subjects": ["https://blinkit.com/prn/<product-name>/prid/<id>"],
    "store": {"city":"Bengaluru","pincode":"560001"},
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Search

python · Blinkit search:

```python
import os, requests

def blinkit(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/blinkit",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = blinkit("search", {
    "query": "Amul butter",
    "store": {"city":"Bengaluru","pincode":"560001"},
    "limit": 20,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Category

python · Blinkit category:

```python
import os, requests

def blinkit(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/blinkit",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = blinkit("category", {
    "category": "Atta, Rice & Dal",
    "subCategory": "Atta",
    "store": {"city":"Delhi","pincode":"110001"},
    "limit": 50,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Blinkit operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Category | $0.0009 |

## Each operation in detail

- [Blinkit Price and Stock API](https://apiforagents.dev/platforms/blinkit/price-and-stock-api): inputs, fields, sample, price
- [Blinkit Search API](https://apiforagents.dev/platforms/blinkit/search-api): inputs, fields, sample, price
- [Blinkit Category API](https://apiforagents.dev/platforms/blinkit/category-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/blinkit, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does Blinkit data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=blinkit (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Swiggy Instamart data in Python. Pay per record.

> Get Swiggy Instamart products, search and category into Python: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/python/instamart · Updated 2026-10-21

Call the Swiggy Instamart API from Python with one HTTPS request per operation: products, search and category. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Products

python · Swiggy Instamart products:

```python
import os, requests

def instamart(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/instamart",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = instamart("products", {
    "subjects": ["https://www.swiggy.com/instamart/item/<item-id>"],
    "store": {"city":"Delhi","pincode":"110001"},
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Search

python · Swiggy Instamart search:

```python
import os, requests

def instamart(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/instamart",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = instamart("search", {
    "query": "Maggi noodles",
    "store": {"city":"Bengaluru","pincode":"560001"},
    "limit": 20,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Category

python · Swiggy Instamart category:

```python
import os, requests

def instamart(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/instamart",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = instamart("category", {
    "category": "Atta, Rice and Dal",
    "subCategory": "Atta",
    "store": {"city":"Delhi","pincode":"110001"},
    "limit": 50,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Swiggy Instamart operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Category | $0.0009 |

## Each operation in detail

- [Instamart Price and Stock API](https://apiforagents.dev/platforms/instamart/price-and-stock-api): inputs, fields, sample, price
- [Instamart Search API](https://apiforagents.dev/platforms/instamart/search-api): inputs, fields, sample, price
- [Instamart Category API](https://apiforagents.dev/platforms/instamart/category-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/instamart, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does Swiggy Instamart data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=instamart (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Zepto data in Python. Pay per record.

> Get Zepto products, search and category into Python: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/python/zepto · Updated 2026-10-21

Call the Zepto API from Python with one HTTPS request per operation: products, search and category. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Products

python · Zepto products:

```python
import os, requests

def zepto(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/zepto",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = zepto("products", {
    "subjects": ["https://www.zepto.com/pn/<product-name>/pvid/<id>"],
    "store": {"city":"Bengaluru","pincode":"560001"},
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Search

python · Zepto search:

```python
import os, requests

def zepto(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/zepto",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = zepto("search", {
    "query": "Tata Salt",
    "store": {"city":"Delhi","pincode":"110001"},
    "limit": 20,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Category

python · Zepto category:

```python
import os, requests

def zepto(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/zepto",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = zepto("category", {
    "category": "Atta Rice Oil Dals",
    "subCategory": "Atta",
    "store": {"city":"Bengaluru","pincode":"560001"},
    "limit": 50,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Zepto operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Category | $0.0009 |

## Each operation in detail

- [Zepto Price and Stock API](https://apiforagents.dev/platforms/zepto/price-and-stock-api): inputs, fields, sample, price
- [Zepto Search API](https://apiforagents.dev/platforms/zepto/search-api): inputs, fields, sample, price
- [Zepto Category API](https://apiforagents.dev/platforms/zepto/category-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/zepto, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does Zepto data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=zepto (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Indeed data in Python. Pay per record.

> Get Indeed search and jobs into Python: one HTTPS call per operation, a free quote first, pay per record from $0.000045 per record.

Canonical: https://apiforagents.dev/integrations/python/indeed · Updated 2026-10-21

Call the Indeed API from Python with one HTTPS request per operation: search and jobs. Every call can be quoted free first, and you pay per record that comes back, from $0.000045 per record, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 2
- Price: From $0.000045 per record
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Search

python · Indeed search:

```python
import os, requests

def indeed(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/indeed",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = indeed("search", {
    "query": "software engineer",
    "location": "Austin, TX",
    "country": "US",
    "postedWithin": "7d",
    "limit": 10,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Jobs

python · Indeed jobs:

```python
import os, requests

def indeed(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/indeed",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = indeed("jobs", {
    "subjects": ["https://www.indeed.com/viewjob?jk=<job-key>"],
    "country": "US",
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Indeed operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Search | $0.000045 |
| Jobs | $0.000045 |

## Each operation in detail

- [Indeed Jobs API](https://apiforagents.dev/platforms/indeed/jobs-api): inputs, fields, sample, price
- [Indeed Job Details API](https://apiforagents.dev/platforms/indeed/job-details-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/indeed, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does Indeed data cost?

Pay as you go, from $0.000045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=indeed (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Naukri data in Python. Pay per record.

> Get Naukri search into Python: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/python/naukri · Updated 2026-10-21

Call the Naukri API from Python with one HTTPS request per operation: search. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 1
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Search

python · Naukri search:

```python
import os, requests

def naukri(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/naukri",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = naukri("search", {
    "query": "data scientist",
    "postedWithin": "7d",
    "experience": "3",
    "locations": ["Bengaluru"],
    "limit": 50,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Naukri operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Search | $0.0018 |

## Each operation in detail

- [Naukri Jobs API](https://apiforagents.dev/platforms/naukri/jobs-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/naukri, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does Naukri data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=naukri (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Upwork data in Python. Pay per record.

> Get Upwork search into Python: one HTTPS call per operation, a free quote first, pay per record from $0.0027 per record.

Canonical: https://apiforagents.dev/integrations/python/upwork · Updated 2026-10-21

Call the Upwork API from Python with one HTTPS request per operation: search. Every call can be quoted free first, and you pay per record that comes back, from $0.0027 per record, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 1
- Price: From $0.0027 per record
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Search

python · Upwork search:

```python
import os, requests

def upwork(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/upwork",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = upwork("search", {
    "query": "shopify developer",
    "sort": "newest",
    "experienceLevel": ["expert"],
    "clientLocation": ["United States"],
    "limit": 10,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Upwork operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Search | $0.0027 |

## Each operation in detail

- [Upwork Jobs API](https://apiforagents.dev/platforms/upwork/jobs-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/upwork, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does Upwork data cost?

Pay as you go, from $0.0027 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=upwork (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Contacts data in Python. Pay per record.

> Get Contacts reveal into Python: one HTTPS call per operation, a free quote first, pay per record priced per call.

Canonical: https://apiforagents.dev/integrations/python/contacts · Updated 2026-10-21

Call the Contacts API from Python with one HTTPS request per operation: reveal. Every call can be quoted free first, and you pay per record that comes back, priced per call, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 1
- Price: priced per call
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Reveal

python · Contacts reveal:

```python
import os, requests

def contacts(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/contacts",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = contacts("reveal", {
    "subjects": ["satyanadella"],
    "reveal": ["email"],
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Contacts operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Reveal | quoted per call |

## Each operation in detail

- [Work Email and Phone API](https://apiforagents.dev/platforms/contacts/work-email-and-phone-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/contacts, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does Contacts data cost?

Pay as you go, priced per call at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=contacts (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Google Maps data in Python. Pay per record.

> Get Google Maps places, search and reviews into Python: one HTTPS call per operation, a free quote first, pay per record from $0.000225 per record.

Canonical: https://apiforagents.dev/integrations/python/google_maps · Updated 2026-10-21

Call the Google Maps API from Python with one HTTPS request per operation: places, search and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.000225 per record, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 3
- Price: From $0.000225 per record
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Places

python · Google Maps places:

```python
import os, requests

def google_maps(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/google_maps",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = google_maps("places", {
    "subjects": ["ChIJN1t_tDeuEmsRUsoyG83frY4"],
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Search

python · Google Maps search:

```python
import os, requests

def google_maps(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/google_maps",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = google_maps("search", {
    "query": "coffee shop",
    "location": "Seattle, WA",
    "minRating": "4.5",
    "limit": 20,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Reviews

python · Google Maps reviews:

```python
import os, requests

def google_maps(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/google_maps",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = google_maps("reviews", {
    "subjects": ["ChIJN1t_tDeuEmsRUsoyG83frY4"],
    "sort": "newest",
    "limit": 25,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Google Maps operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Places | $0.000225 |
| Search | $0.000225 |
| Reviews | $0.000225 |

## Each operation in detail

- [Google Maps Places API](https://apiforagents.dev/platforms/google_maps/places-api): inputs, fields, sample, price
- [Google Maps Search API](https://apiforagents.dev/platforms/google_maps/search-api): inputs, fields, sample, price
- [Google Maps Reviews API](https://apiforagents.dev/platforms/google_maps/reviews-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/google_maps, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does Google Maps data cost?

Pay as you go, from $0.000225 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=google_maps (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Yelp data in Python. Pay per record.

> Get Yelp businesses, search and reviews into Python: one HTTPS call per operation, a free quote first, pay per record from $0.000225 per record.

Canonical: https://apiforagents.dev/integrations/python/yelp · Updated 2026-10-21

Call the Yelp API from Python with one HTTPS request per operation: businesses, search and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.000225 per record, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 3
- Price: From $0.000225 per record
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Businesses

python · Yelp businesses:

```python
import os, requests

def yelp(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/yelp",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = yelp("businesses", {
    "subjects": ["katzs-delicatessen-new-york"],
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Search

python · Yelp search:

```python
import os, requests

def yelp(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/yelp",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = yelp("search", {
    "query": "ramen",
    "location": "San Francisco, CA",
    "sort": "rating_high",
    "priceLevels": ["1","2"],
    "limit": 20,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Reviews

python · Yelp reviews:

```python
import os, requests

def yelp(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/yelp",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = yelp("reviews", {
    "subjects": ["katzs-delicatessen-new-york"],
    "limit": 25,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Yelp operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Businesses | $0.000225 |
| Search | $0.000225 |
| Reviews | $0.000225 |

## Each operation in detail

- [Yelp Business API](https://apiforagents.dev/platforms/yelp/business-api): inputs, fields, sample, price
- [Yelp Search API](https://apiforagents.dev/platforms/yelp/search-api): inputs, fields, sample, price
- [Yelp Reviews API](https://apiforagents.dev/platforms/yelp/reviews-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/yelp, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does Yelp data cost?

Pay as you go, from $0.000225 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=yelp (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Tripadvisor data in Python. Pay per record.

> Get Tripadvisor data into Python: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/python/tripadvisor · Updated 2026-10-21

Call the Tripadvisor API from Python with one HTTPS request per operation: hotels, restaurants, attractions and search hotels. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 7
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Hotels

python · Tripadvisor hotels:

```python
import os, requests

def tripadvisor(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/tripadvisor",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = tripadvisor("hotels", {
    "subjects": ["https://www.tripadvisor.com/Hotel_Review-<place-id>-Reviews-The_Plaza-New_York_City_New_York.html"],
    "currency": "USD",
    "stay": {"checkIn":"2027-03-12","checkOut":"2027-03-15"},
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Restaurants

python · Tripadvisor restaurants:

```python
import os, requests

def tripadvisor(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/tripadvisor",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = tripadvisor("restaurants", {
    "subjects": ["https://www.tripadvisor.com/Restaurant_Review-<place-id>-Reviews-Katz_s_Delicatessen-New_York_City_New_York.html"],
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Attractions

python · Tripadvisor attractions:

```python
import os, requests

def tripadvisor(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/tripadvisor",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = tripadvisor("attractions", {
    "subjects": ["https://www.tripadvisor.com/Attraction_Review-<place-id>-Reviews-Statue_of_Liberty-New_York_City_New_York.html"],
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Search hotels

python · Tripadvisor searchHotels:

```python
import os, requests

def tripadvisor(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/tripadvisor",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = tripadvisor("searchHotels", {
    "query": "Lisbon",
    "currency": "EUR",
    "limit": 20,
    "stay": {"checkIn":"2027-03-12","checkOut":"2027-03-15"},
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Tripadvisor operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Hotels | $0.0018 |
| Restaurants | $0.0018 |
| Attractions | $0.0018 |
| Search hotels | $0.0018 |
| Search restaurants | $0.0018 |
| Search attractions | $0.0018 |
| Reviews | $0.0018 |

## Each operation in detail

- [Tripadvisor Hotels API](https://apiforagents.dev/platforms/tripadvisor/hotels-api): inputs, fields, sample, price
- [Tripadvisor Restaurants API](https://apiforagents.dev/platforms/tripadvisor/restaurants-api): inputs, fields, sample, price
- [Tripadvisor Attractions API](https://apiforagents.dev/platforms/tripadvisor/attractions-api): inputs, fields, sample, price
- [Tripadvisor Hotel Search API](https://apiforagents.dev/platforms/tripadvisor/hotel-search-api): inputs, fields, sample, price
- [Tripadvisor Restaurant Search API](https://apiforagents.dev/platforms/tripadvisor/restaurant-search-api): inputs, fields, sample, price
- [Tripadvisor Attraction Search API](https://apiforagents.dev/platforms/tripadvisor/attraction-search-api): inputs, fields, sample, price
- [Tripadvisor Reviews API](https://apiforagents.dev/platforms/tripadvisor/reviews-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/tripadvisor, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does Tripadvisor data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tripadvisor (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Airbnb data in Python. Pay per record.

> Get Airbnb listings and reviews into Python: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/python/airbnb · Updated 2026-10-21

Call the Airbnb API from Python with one HTTPS request per operation: listings and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 2
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Listings

python · Airbnb listings:

```python
import os, requests

def airbnb(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/airbnb",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = airbnb("listings", {
    "subjects": ["https://www.airbnb.com/rooms/<room-id>"],
    "stay": {"checkIn":"2027-03-12","checkOut":"2027-03-15","adults":2,"currency":"USD"},
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Reviews

python · Airbnb reviews:

```python
import os, requests

def airbnb(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/airbnb",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = airbnb("reviews", {
    "subjects": ["https://www.airbnb.com/rooms/<room-id>"],
    "locale": "en-US",
    "limit": 25,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Airbnb operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Listings | $0.0018 |
| Reviews | $0.0018 |

## Each operation in detail

- [Airbnb Listings API](https://apiforagents.dev/platforms/airbnb/listings-api): inputs, fields, sample, price
- [Airbnb Reviews API](https://apiforagents.dev/platforms/airbnb/reviews-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/airbnb, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does Airbnb data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=airbnb (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Booking.com data in Python. Pay per record.

> Get Booking.com properties, search and reviews into Python: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/python/booking · Updated 2026-10-21

Call the Booking.com API from Python with one HTTPS request per operation: properties, search and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 3
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Properties

python · Booking.com properties:

```python
import os, requests

def booking(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/booking",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = booking("properties", {
    "subjects": ["https://www.booking.com/hotel/gb/<hotel-name>.html"],
    "stay": {"checkIn":"2027-03-12","checkOut":"2027-03-15","currency":"GBP"},
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Search

python · Booking.com search:

```python
import os, requests

def booking(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/booking",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = booking("search", {
    "location": "Barcelona",
    "stay": {"checkIn":"2027-03-12","checkOut":"2027-03-15","currency":"EUR"},
    "minRating": 8,
    "sort": "price_low",
    "limit": 20,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Reviews

python · Booking.com reviews:

```python
import os, requests

def booking(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/booking",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = booking("reviews", {
    "subjects": ["https://www.booking.com/hotel/gb/<hotel-name>.html"],
    "sort": "newest",
    "scoreBands": ["average","poor"],
    "limit": 25,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Booking.com operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Properties | $0.0018 |
| Search | $0.0018 |
| Reviews | $0.0018 |

## Each operation in detail

- [Booking.com Hotels API](https://apiforagents.dev/platforms/booking/hotels-api): inputs, fields, sample, price
- [Booking.com Search API](https://apiforagents.dev/platforms/booking/search-api): inputs, fields, sample, price
- [Booking.com Reviews API](https://apiforagents.dev/platforms/booking/reviews-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/booking, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does Booking.com data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=booking (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Google data in Python. Pay per record.

> Get Google search, news, images and shopping into Python: one HTTPS call per operation, a free quote first, pay per record from $0.00009 per record.

Canonical: https://apiforagents.dev/integrations/python/google · Updated 2026-10-21

Call the Google API from Python with one HTTPS request per operation: search, news, images and shopping. Every call can be quoted free first, and you pay per record that comes back, from $0.00009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 5
- Price: From $0.00009 per record
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Search

python · Google search:

```python
import os, requests

def google(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/google",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = google("search", {
    "query": "best CRM for startups",
    "pages": 1,
    "country": "US",
    "language": "en",
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## News

python · Google news:

```python
import os, requests

def google(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/google",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = google("news", {
    "query": "electric vehicles",
    "postedWithin": "7d",
    "country": "US",
    "language": "en",
    "limit": 20,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Images

python · Google images:

```python
import os, requests

def google(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/google",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = google("images", {
    "query": "Eiffel Tower at night",
    "limit": 20,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Shopping

python · Google shopping:

```python
import os, requests

def google(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/google",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = google("shopping", {
    "query": "Sony WH-1000XM5",
    "country": "US",
    "language": "en",
    "limit": 20,
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Google operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Search | $0.0009 |
| News | $0.0018 |
| Images | $0.0009 |
| Shopping | $0.0027 |
| Play reviews | $0.00009 |

## Each operation in detail

- [Google Search API](https://apiforagents.dev/platforms/google/search-api): inputs, fields, sample, price
- [Google News API](https://apiforagents.dev/platforms/google/news-api): inputs, fields, sample, price
- [Google Images API](https://apiforagents.dev/platforms/google/images-api): inputs, fields, sample, price
- [Google Shopping API](https://apiforagents.dev/platforms/google/shopping-api): inputs, fields, sample, price
- [Google Play Reviews API](https://apiforagents.dev/platforms/google/play-store-reviews-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/google, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does Google data cost?

Pay as you go, from $0.00009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=google (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Instagram data in LangChain. Pay per record.

> Get Instagram data into LangChain: one HTTPS call per operation, a free quote first, pay per record from $0.00045 per record.

Canonical: https://apiforagents.dev/integrations/langchain/instagram · Updated 2026-10-21

Call the Instagram API from LangChain with one HTTPS request per operation: profiles, posts by a person, similar and hashtag. Every call can be quoted free first, and you pay per record that comes back, from $0.00045 per record, from a prepaid balance with $0.10 free to start.

- Works with: LangChain
- Operations: 7
- Price: From $0.00045 per record
- Free to start: $0.10

## Set it up in LangChain

1. pip install langchain-core requests, and put your API key in AFA_KEY.
2. Give the tool to any agent; it quotes before it spends because the docstring tells it to.

## Profiles

python · langchain tool for Instagram:

```python
import os, requests
from langchain_core.tools import tool

@tool
def instagram_profiles(params: dict, estimate_only: bool = True) -> dict:
    """Profiles from Instagram. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["natgeo","nike"]}"""
    r = requests.post(
        "https://apiforagents.dev/v1/instagram",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "profiles", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Posts by a person

python · langchain tool for Instagram:

```python
import os, requests
from langchain_core.tools import tool

@tool
def instagram_posts(params: dict, estimate_only: bool = True) -> dict:
    """Posts by a person from Instagram. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subject":"natgeo","limit":12}"""
    r = requests.post(
        "https://apiforagents.dev/v1/instagram",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "posts", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Similar

python · langchain tool for Instagram:

```python
import os, requests
from langchain_core.tools import tool

@tool
def instagram_similar(params: dict, estimate_only: bool = True) -> dict:
    """Similar from Instagram. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subject":"natgeo","limit":20}"""
    r = requests.post(
        "https://apiforagents.dev/v1/instagram",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "similar", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Hashtag

python · langchain tool for Instagram:

```python
import os, requests
from langchain_core.tools import tool

@tool
def instagram_hashtag(params: dict, estimate_only: bool = True) -> dict:
    """Hashtag from Instagram. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"hashtag":"streetphotography","sort":"top","limit":20}"""
    r = requests.post(
        "https://apiforagents.dev/v1/instagram",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "hashtag", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Instagram operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Profiles | $0.0018 |
| Posts by a person | $0.0018 |
| Similar | $0.00045 |
| Hashtag | $0.00045 |
| Search | $0.00045 |
| Comments | $0.00045 |
| Followers | $0.000675 |

## Each operation in detail

- [Instagram Profile API](https://apiforagents.dev/platforms/instagram/profile-api): inputs, fields, sample, price
- [Instagram Posts API](https://apiforagents.dev/platforms/instagram/posts-api): inputs, fields, sample, price
- [Instagram Similar Accounts API](https://apiforagents.dev/platforms/instagram/similar-accounts-api): inputs, fields, sample, price
- [Instagram Hashtag API](https://apiforagents.dev/platforms/instagram/hashtag-api): inputs, fields, sample, price
- [Instagram Account Search API](https://apiforagents.dev/platforms/instagram/account-search-api): inputs, fields, sample, price
- [Instagram Comments API](https://apiforagents.dev/platforms/instagram/comments-api): inputs, fields, sample, price
- [Instagram Followers API](https://apiforagents.dev/platforms/instagram/followers-api): inputs, fields, sample, price

## Questions

### Will the agent overspend?

Pass maxUsd in params and the API refuses any call that would cost more, before anything is spent. The balance is prepaid, so it cannot run past what was topped up.

### Does it work with LangGraph?

Yes. A LangChain tool works in create_react_agent and any LangGraph node.

### What does Instagram data cost?

Pay as you go, from $0.00045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=instagram (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# YouTube data in LangChain. Pay per record.

> Get YouTube channels, videos and comments into LangChain: one HTTPS call per operation, a free quote first, pay per record from $0.00045 per record.

Canonical: https://apiforagents.dev/integrations/langchain/youtube · Updated 2026-10-21

Call the YouTube API from LangChain with one HTTPS request per operation: channels, videos and comments. Every call can be quoted free first, and you pay per record that comes back, from $0.00045 per record, from a prepaid balance with $0.10 free to start.

- Works with: LangChain
- Operations: 3
- Price: From $0.00045 per record
- Free to start: $0.10

## Set it up in LangChain

1. pip install langchain-core requests, and put your API key in AFA_KEY.
2. Give the tool to any agent; it quotes before it spends because the docstring tells it to.

## Channels

python · langchain tool for YouTube:

```python
import os, requests
from langchain_core.tools import tool

@tool
def youtube_channels(params: dict, estimate_only: bool = True) -> dict:
    """Channels from YouTube. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["@mkbhd"]}"""
    r = requests.post(
        "https://apiforagents.dev/v1/youtube",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "channels", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Videos

python · langchain tool for YouTube:

```python
import os, requests
from langchain_core.tools import tool

@tool
def youtube_videos(params: dict, estimate_only: bool = True) -> dict:
    """Videos from YouTube. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subject":"@mkbhd","limit":10}"""
    r = requests.post(
        "https://apiforagents.dev/v1/youtube",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "videos", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Comments

python · langchain tool for YouTube:

```python
import os, requests
from langchain_core.tools import tool

@tool
def youtube_comments(params: dict, estimate_only: bool = True) -> dict:
    """Comments from YouTube. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"limit":50}"""
    r = requests.post(
        "https://apiforagents.dev/v1/youtube",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "comments", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## YouTube operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Channels | $0.00045 |
| Videos | $0.00045 |
| Comments | $0.00045 |

## Each operation in detail

- [YouTube Channel API](https://apiforagents.dev/platforms/youtube/channel-api): inputs, fields, sample, price
- [YouTube Videos API](https://apiforagents.dev/platforms/youtube/videos-api): inputs, fields, sample, price
- [YouTube Comments API](https://apiforagents.dev/platforms/youtube/comments-api): inputs, fields, sample, price

## Questions

### Will the agent overspend?

Pass maxUsd in params and the API refuses any call that would cost more, before anything is spent. The balance is prepaid, so it cannot run past what was topped up.

### Does it work with LangGraph?

Yes. A LangChain tool works in create_react_agent and any LangGraph node.

### What does YouTube data cost?

Pay as you go, from $0.00045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=youtube (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# X / Twitter data in LangChain. Pay per record.

> Get X / Twitter data into LangChain: one HTTPS call per operation, a free quote first, pay per record from $0.000225 per record.

Canonical: https://apiforagents.dev/integrations/langchain/x_twitter · Updated 2026-10-21

Call the X / Twitter API from LangChain with one HTTPS request per operation: profiles, posts by a person, search and search posts. Every call can be quoted free first, and you pay per record that comes back, from $0.000225 per record, from a prepaid balance with $0.10 free to start.

- Works with: LangChain
- Operations: 4
- Price: From $0.000225 per record
- Free to start: $0.10

## Set it up in LangChain

1. pip install langchain-core requests, and put your API key in AFA_KEY.
2. Give the tool to any agent; it quotes before it spends because the docstring tells it to.

## Profiles

python · langchain tool for X / Twitter:

```python
import os, requests
from langchain_core.tools import tool

@tool
def x_twitter_profiles(params: dict, estimate_only: bool = True) -> dict:
    """Profiles from X / Twitter. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["@NASA"]}"""
    r = requests.post(
        "https://apiforagents.dev/v1/x_twitter",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "profiles", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Posts by a person

python · langchain tool for X / Twitter:

```python
import os, requests
from langchain_core.tools import tool

@tool
def x_twitter_posts(params: dict, estimate_only: bool = True) -> dict:
    """Posts by a person from X / Twitter. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subject":"@NASA","limit":20}"""
    r = requests.post(
        "https://apiforagents.dev/v1/x_twitter",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "posts", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Search

python · langchain tool for X / Twitter:

```python
import os, requests
from langchain_core.tools import tool

@tool
def x_twitter_search(params: dict, estimate_only: bool = True) -> dict:
    """Search from X / Twitter. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"query":"climate scientist","limit":10}"""
    r = requests.post(
        "https://apiforagents.dev/v1/x_twitter",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "search", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Search posts

python · langchain tool for X / Twitter:

```python
import os, requests
from langchain_core.tools import tool

@tool
def x_twitter_search_posts(params: dict, estimate_only: bool = True) -> dict:
    """Search posts from X / Twitter. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"query":"electric cars","limit":25}"""
    r = requests.post(
        "https://apiforagents.dev/v1/x_twitter",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "searchPosts", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## X / Twitter operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Profiles | $0.000225 |
| Posts by a person | $0.000225 |
| Search | $0.000225 |
| Search posts | $0.000225 |

## Each operation in detail

- [X Profile API](https://apiforagents.dev/platforms/x_twitter/profile-api): inputs, fields, sample, price
- [X Posts API](https://apiforagents.dev/platforms/x_twitter/posts-api): inputs, fields, sample, price
- [X Account Search API](https://apiforagents.dev/platforms/x_twitter/account-search-api): inputs, fields, sample, price
- [X Post Search API](https://apiforagents.dev/platforms/x_twitter/post-search-api): inputs, fields, sample, price

## Questions

### Will the agent overspend?

Pass maxUsd in params and the API refuses any call that would cost more, before anything is spent. The balance is prepaid, so it cannot run past what was topped up.

### Does it work with LangGraph?

Yes. A LangChain tool works in create_react_agent and any LangGraph node.

### What does X / Twitter data cost?

Pay as you go, from $0.000225 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=x_twitter (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Reddit data in LangChain. Pay per record.

> Get Reddit data into LangChain: one HTTPS call per operation, a free quote first, pay per record from $0.0045 per record.

Canonical: https://apiforagents.dev/integrations/langchain/reddit · Updated 2026-10-21

Call the Reddit API from LangChain with one HTTPS request per operation: posts by a person, subreddit, comments and search. Every call can be quoted free first, and you pay per record that comes back, from $0.0045 per record, from a prepaid balance with $0.10 free to start.

- Works with: LangChain
- Operations: 4
- Price: From $0.0045 per record
- Free to start: $0.10

## Set it up in LangChain

1. pip install langchain-core requests, and put your API key in AFA_KEY.
2. Give the tool to any agent; it quotes before it spends because the docstring tells it to.

## Posts by a person

python · langchain tool for Reddit:

```python
import os, requests
from langchain_core.tools import tool

@tool
def reddit_posts(params: dict, estimate_only: bool = True) -> dict:
    """Posts by a person from Reddit. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subject":"u/spez","limit":25}"""
    r = requests.post(
        "https://apiforagents.dev/v1/reddit",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "posts", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Subreddit

python · langchain tool for Reddit:

```python
import os, requests
from langchain_core.tools import tool

@tool
def reddit_subreddit(params: dict, estimate_only: bool = True) -> dict:
    """Subreddit from Reddit. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subject":"r/technology","sort":"top","postedWithin":"7d","limit":25}"""
    r = requests.post(
        "https://apiforagents.dev/v1/reddit",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "subreddit", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Comments

python · langchain tool for Reddit:

```python
import os, requests
from langchain_core.tools import tool

@tool
def reddit_comments(params: dict, estimate_only: bool = True) -> dict:
    """Comments from Reddit. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["https://www.reddit.com/r/technology/comments/<post-id>/"],"limit":50}"""
    r = requests.post(
        "https://apiforagents.dev/v1/reddit",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "comments", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Search

python · langchain tool for Reddit:

```python
import os, requests
from langchain_core.tools import tool

@tool
def reddit_search(params: dict, estimate_only: bool = True) -> dict:
    """Search from Reddit. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"query":"electric cars","sort":"top","postedWithin":"30d","limit":25}"""
    r = requests.post(
        "https://apiforagents.dev/v1/reddit",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "search", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Reddit operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Posts by a person | $0.0045 |
| Subreddit | $0.0045 |
| Comments | $0.0045 |
| Search | $0.0045 |

## Each operation in detail

- [Reddit User Posts API](https://apiforagents.dev/platforms/reddit/user-posts-api): inputs, fields, sample, price
- [Reddit Subreddit API](https://apiforagents.dev/platforms/reddit/subreddit-api): inputs, fields, sample, price
- [Reddit Comments API](https://apiforagents.dev/platforms/reddit/comments-api): inputs, fields, sample, price
- [Reddit Search API](https://apiforagents.dev/platforms/reddit/search-api): inputs, fields, sample, price

## Questions

### Will the agent overspend?

Pass maxUsd in params and the API refuses any call that would cost more, before anything is spent. The balance is prepaid, so it cannot run past what was topped up.

### Does it work with LangGraph?

Yes. A LangChain tool works in create_react_agent and any LangGraph node.

### What does Reddit data cost?

Pay as you go, from $0.0045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=reddit (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# TikTok data in LangChain. Pay per record.

> Get TikTok data into LangChain: one HTTPS call per operation, a free quote first, pay per record from $0.00045 per record.

Canonical: https://apiforagents.dev/integrations/langchain/tiktok · Updated 2026-10-21

Call the TikTok API from LangChain with one HTTPS request per operation: profiles, posts by a person, videos and search posts. Every call can be quoted free first, and you pay per record that comes back, from $0.00045 per record, from a prepaid balance with $0.10 free to start.

- Works with: LangChain
- Operations: 8
- Price: From $0.00045 per record
- Free to start: $0.10

## Set it up in LangChain

1. pip install langchain-core requests, and put your API key in AFA_KEY.
2. Give the tool to any agent; it quotes before it spends because the docstring tells it to.

## Profiles

python · langchain tool for TikTok:

```python
import os, requests
from langchain_core.tools import tool

@tool
def tiktok_profiles(params: dict, estimate_only: bool = True) -> dict:
    """Profiles from TikTok. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["@nba","@natgeo"]}"""
    r = requests.post(
        "https://apiforagents.dev/v1/tiktok",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "profiles", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Posts by a person

python · langchain tool for TikTok:

```python
import os, requests
from langchain_core.tools import tool

@tool
def tiktok_posts(params: dict, estimate_only: bool = True) -> dict:
    """Posts by a person from TikTok. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subject":"@nba","limit":20}"""
    r = requests.post(
        "https://apiforagents.dev/v1/tiktok",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "posts", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Videos

python · langchain tool for TikTok:

```python
import os, requests
from langchain_core.tools import tool

@tool
def tiktok_videos(params: dict, estimate_only: bool = True) -> dict:
    """Videos from TikTok. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["https://www.tiktok.com/@nba/video/<video-id>"]}"""
    r = requests.post(
        "https://apiforagents.dev/v1/tiktok",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "videos", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Search posts

python · langchain tool for TikTok:

```python
import os, requests
from langchain_core.tools import tool

@tool
def tiktok_search_posts(params: dict, estimate_only: bool = True) -> dict:
    """Search posts from TikTok. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"hashtag":"booktok","limit":25}"""
    r = requests.post(
        "https://apiforagents.dev/v1/tiktok",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "searchPosts", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## TikTok operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Profiles | $0.0022 |
| Posts by a person | $0.0018 |
| Videos | $0.00045 |
| Search posts | $0.0018 |
| Search | $0.00045 |
| Comments | $0.00045 |
| Followers | $0.0009 |
| Shop | $0.013 |

## Each operation in detail

- [TikTok Profile API](https://apiforagents.dev/platforms/tiktok/profile-api): inputs, fields, sample, price
- [TikTok Posts API](https://apiforagents.dev/platforms/tiktok/posts-api): inputs, fields, sample, price
- [TikTok Video API](https://apiforagents.dev/platforms/tiktok/video-api): inputs, fields, sample, price
- [TikTok Video Search API](https://apiforagents.dev/platforms/tiktok/video-search-api): inputs, fields, sample, price
- [TikTok Account Search API](https://apiforagents.dev/platforms/tiktok/account-search-api): inputs, fields, sample, price
- [TikTok Comments API](https://apiforagents.dev/platforms/tiktok/comments-api): inputs, fields, sample, price
- [TikTok Followers API](https://apiforagents.dev/platforms/tiktok/followers-api): inputs, fields, sample, price
- [TikTok Shop API](https://apiforagents.dev/platforms/tiktok/shop-api): inputs, fields, sample, price

## Questions

### Will the agent overspend?

Pass maxUsd in params and the API refuses any call that would cost more, before anything is spent. The balance is prepaid, so it cannot run past what was topped up.

### Does it work with LangGraph?

Yes. A LangChain tool works in create_react_agent and any LangGraph node.

### What does TikTok data cost?

Pay as you go, from $0.00045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tiktok (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Facebook data in LangChain. Pay per record.

> Get Facebook data into LangChain: one HTTPS call per operation, a free quote first, pay per record from $0.0022 per record.

Canonical: https://apiforagents.dev/integrations/langchain/facebook · Updated 2026-10-21

Call the Facebook API from LangChain with one HTTPS request per operation: pages, posts by a person, reels and comments. Every call can be quoted free first, and you pay per record that comes back, from $0.0022 per record, from a prepaid balance with $0.10 free to start.

- Works with: LangChain
- Operations: 9
- Price: From $0.0022 per record
- Free to start: $0.10

## Set it up in LangChain

1. pip install langchain-core requests, and put your API key in AFA_KEY.
2. Give the tool to any agent; it quotes before it spends because the docstring tells it to.

## Pages

python · langchain tool for Facebook:

```python
import os, requests
from langchain_core.tools import tool

@tool
def facebook_pages(params: dict, estimate_only: bool = True) -> dict:
    """Pages from Facebook. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["nike","natgeo"]}"""
    r = requests.post(
        "https://apiforagents.dev/v1/facebook",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "pages", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Posts by a person

python · langchain tool for Facebook:

```python
import os, requests
from langchain_core.tools import tool

@tool
def facebook_posts(params: dict, estimate_only: bool = True) -> dict:
    """Posts by a person from Facebook. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subject":"nike","since":"2026-10-01","limit":20}"""
    r = requests.post(
        "https://apiforagents.dev/v1/facebook",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "posts", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Reels

python · langchain tool for Facebook:

```python
import os, requests
from langchain_core.tools import tool

@tool
def facebook_reels(params: dict, estimate_only: bool = True) -> dict:
    """Reels from Facebook. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subject":"natgeo","limit":10}"""
    r = requests.post(
        "https://apiforagents.dev/v1/facebook",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "reels", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Comments

python · langchain tool for Facebook:

```python
import os, requests
from langchain_core.tools import tool

@tool
def facebook_comments(params: dict, estimate_only: bool = True) -> dict:
    """Comments from Facebook. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["https://www.facebook.com/nike/posts/<post-id>"],"sort":"top","limit":50}"""
    r = requests.post(
        "https://apiforagents.dev/v1/facebook",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "comments", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Facebook operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Pages | $0.009 |
| Posts by a person | $0.0045 |
| Reels | $0.0045 |
| Comments | $0.0022 |
| Reviews | $0.0022 |
| Followers | $0.0067 |
| Ads | $0.0045 |
| Events | $0.009 |
| Marketplace | $0.009 |

## Each operation in detail

- [Facebook Page API](https://apiforagents.dev/platforms/facebook/page-api): inputs, fields, sample, price
- [Facebook Posts API](https://apiforagents.dev/platforms/facebook/posts-api): inputs, fields, sample, price
- [Facebook Reels API](https://apiforagents.dev/platforms/facebook/reels-api): inputs, fields, sample, price
- [Facebook Comments API](https://apiforagents.dev/platforms/facebook/comments-api): inputs, fields, sample, price
- [Facebook Reviews API](https://apiforagents.dev/platforms/facebook/reviews-api): inputs, fields, sample, price
- [Facebook Followers API](https://apiforagents.dev/platforms/facebook/followers-api): inputs, fields, sample, price
- [Facebook Ad Library API](https://apiforagents.dev/platforms/facebook/ad-library-api): inputs, fields, sample, price
- [Facebook Events API](https://apiforagents.dev/platforms/facebook/events-api): inputs, fields, sample, price
- [Facebook Marketplace API](https://apiforagents.dev/platforms/facebook/marketplace-api): inputs, fields, sample, price

## Questions

### Will the agent overspend?

Pass maxUsd in params and the API refuses any call that would cost more, before anything is spent. The balance is prepaid, so it cannot run past what was topped up.

### Does it work with LangGraph?

Yes. A LangChain tool works in create_react_agent and any LangGraph node.

### What does Facebook data cost?

Pay as you go, from $0.0022 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=facebook (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Amazon data in LangChain. Pay per record.

> Get Amazon products, search and reviews into LangChain: one HTTPS call per operation, a free quote first, pay per record from $0.00045 per record.

Canonical: https://apiforagents.dev/integrations/langchain/amazon · Updated 2026-10-21

Call the Amazon API from LangChain with one HTTPS request per operation: products, search and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.00045 per record, from a prepaid balance with $0.10 free to start.

- Works with: LangChain
- Operations: 3
- Price: From $0.00045 per record
- Free to start: $0.10

## Set it up in LangChain

1. pip install langchain-core requests, and put your API key in AFA_KEY.
2. Give the tool to any agent; it quotes before it spends because the docstring tells it to.

## Products

python · langchain tool for Amazon:

```python
import os, requests
from langchain_core.tools import tool

@tool
def amazon_products(params: dict, estimate_only: bool = True) -> dict:
    """Products from Amazon. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["B0DGHMNQ5Z"],"marketplace":"com"}"""
    r = requests.post(
        "https://apiforagents.dev/v1/amazon",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "products", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Search

python · langchain tool for Amazon:

```python
import os, requests
from langchain_core.tools import tool

@tool
def amazon_search(params: dict, estimate_only: bool = True) -> dict:
    """Search from Amazon. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"query":"wireless earbuds","marketplace":"com","limit":10}"""
    r = requests.post(
        "https://apiforagents.dev/v1/amazon",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "search", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Reviews

python · langchain tool for Amazon:

```python
import os, requests
from langchain_core.tools import tool

@tool
def amazon_reviews(params: dict, estimate_only: bool = True) -> dict:
    """Reviews from Amazon. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["B0DGHMNQ5Z"],"marketplace":"com","limit":50}"""
    r = requests.post(
        "https://apiforagents.dev/v1/amazon",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "reviews", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Amazon operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0014 |
| Search | $0.00045 |
| Reviews | $0.00045 |

## Each operation in detail

- [Amazon Product API](https://apiforagents.dev/platforms/amazon/product-api): inputs, fields, sample, price
- [Amazon Search API](https://apiforagents.dev/platforms/amazon/search-api): inputs, fields, sample, price
- [Amazon Reviews API](https://apiforagents.dev/platforms/amazon/reviews-api): inputs, fields, sample, price

## Questions

### Will the agent overspend?

Pass maxUsd in params and the API refuses any call that would cost more, before anything is spent. The balance is prepaid, so it cannot run past what was topped up.

### Does it work with LangGraph?

Yes. A LangChain tool works in create_react_agent and any LangGraph node.

### What does Amazon data cost?

Pay as you go, from $0.00045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=amazon (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Shopify data in LangChain. Pay per record.

> Get Shopify products into LangChain: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/langchain/shopify · Updated 2026-10-21

Call the Shopify API from LangChain with one HTTPS request per operation: products. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: LangChain
- Operations: 1
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in LangChain

1. pip install langchain-core requests, and put your API key in AFA_KEY.
2. Give the tool to any agent; it quotes before it spends because the docstring tells it to.

## Products

python · langchain tool for Shopify:

```python
import os, requests
from langchain_core.tools import tool

@tool
def shopify_products(params: dict, estimate_only: bool = True) -> dict:
    """Products from Shopify. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["https://www.allbirds.com"],"limit":25}"""
    r = requests.post(
        "https://apiforagents.dev/v1/shopify",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "products", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Shopify operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |

## Each operation in detail

- [Shopify Products API](https://apiforagents.dev/platforms/shopify/products-api): inputs, fields, sample, price

## Questions

### Will the agent overspend?

Pass maxUsd in params and the API refuses any call that would cost more, before anything is spent. The balance is prepaid, so it cannot run past what was topped up.

### Does it work with LangGraph?

Yes. A LangChain tool works in create_react_agent and any LangGraph node.

### What does Shopify data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=shopify (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Farfetch data in LangChain. Pay per record.

> Get Farfetch products, search and listing into LangChain: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/langchain/farfetch · Updated 2026-10-21

Call the Farfetch API from LangChain with one HTTPS request per operation: products, search and listing. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: LangChain
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in LangChain

1. pip install langchain-core requests, and put your API key in AFA_KEY.
2. Give the tool to any agent; it quotes before it spends because the docstring tells it to.

## Products

python · langchain tool for Farfetch:

```python
import os, requests
from langchain_core.tools import tool

@tool
def farfetch_products(params: dict, estimate_only: bool = True) -> dict:
    """Products from Farfetch. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["https://www.farfetch.com/shopping/women/<product>-item-<id>.aspx"]}"""
    r = requests.post(
        "https://apiforagents.dev/v1/farfetch",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "products", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Search

python · langchain tool for Farfetch:

```python
import os, requests
from langchain_core.tools import tool

@tool
def farfetch_search(params: dict, estimate_only: bool = True) -> dict:
    """Search from Farfetch. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"query":"Gucci loafers","limit":20}"""
    r = requests.post(
        "https://apiforagents.dev/v1/farfetch",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "search", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Listing

python · langchain tool for Farfetch:

```python
import os, requests
from langchain_core.tools import tool

@tool
def farfetch_listing(params: dict, estimate_only: bool = True) -> dict:
    """Listing from Farfetch. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subject":"https://www.farfetch.com/shopping/women/gucci/items.aspx","limit":20}"""
    r = requests.post(
        "https://apiforagents.dev/v1/farfetch",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "listing", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Farfetch operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Listing | $0.0009 |

## Each operation in detail

- [Farfetch Product API](https://apiforagents.dev/platforms/farfetch/product-api): inputs, fields, sample, price
- [Farfetch Search API](https://apiforagents.dev/platforms/farfetch/search-api): inputs, fields, sample, price
- [Farfetch Listings API](https://apiforagents.dev/platforms/farfetch/listings-api): inputs, fields, sample, price

## Questions

### Will the agent overspend?

Pass maxUsd in params and the API refuses any call that would cost more, before anything is spent. The balance is prepaid, so it cannot run past what was topped up.

### Does it work with LangGraph?

Yes. A LangChain tool works in create_react_agent and any LangGraph node.

### What does Farfetch data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=farfetch (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# GOAT data in LangChain. Pay per record.

> Get GOAT products, search and listing into LangChain: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/langchain/goat · Updated 2026-10-21

Call the GOAT API from LangChain with one HTTPS request per operation: products, search and listing. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: LangChain
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in LangChain

1. pip install langchain-core requests, and put your API key in AFA_KEY.
2. Give the tool to any agent; it quotes before it spends because the docstring tells it to.

## Products

python · langchain tool for GOAT:

```python
import os, requests
from langchain_core.tools import tool

@tool
def goat_products(params: dict, estimate_only: bool = True) -> dict:
    """Products from GOAT. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["https://www.goat.com/sneakers/<product-slug>"],"country":"US"}"""
    r = requests.post(
        "https://apiforagents.dev/v1/goat",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "products", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Search

python · langchain tool for GOAT:

```python
import os, requests
from langchain_core.tools import tool

@tool
def goat_search(params: dict, estimate_only: bool = True) -> dict:
    """Search from GOAT. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"query":"Nike Dunk Low","country":"US","limit":20}"""
    r = requests.post(
        "https://apiforagents.dev/v1/goat",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "search", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Listing

python · langchain tool for GOAT:

```python
import os, requests
from langchain_core.tools import tool

@tool
def goat_listing(params: dict, estimate_only: bool = True) -> dict:
    """Listing from GOAT. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subject":"https://www.goat.com/brand/nike","country":"US","limit":20}"""
    r = requests.post(
        "https://apiforagents.dev/v1/goat",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "listing", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## GOAT operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Listing | $0.0009 |

## Each operation in detail

- [GOAT Product API](https://apiforagents.dev/platforms/goat/product-api): inputs, fields, sample, price
- [GOAT Search API](https://apiforagents.dev/platforms/goat/search-api): inputs, fields, sample, price
- [GOAT Listings API](https://apiforagents.dev/platforms/goat/listings-api): inputs, fields, sample, price

## Questions

### Will the agent overspend?

Pass maxUsd in params and the API refuses any call that would cost more, before anything is spent. The balance is prepaid, so it cannot run past what was topped up.

### Does it work with LangGraph?

Yes. A LangChain tool works in create_react_agent and any LangGraph node.

### What does GOAT data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=goat (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# StockX data in LangChain. Pay per record.

> Get StockX products, search and listing into LangChain: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/langchain/stockx · Updated 2026-10-21

Call the StockX API from LangChain with one HTTPS request per operation: products, search and listing. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: LangChain
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in LangChain

1. pip install langchain-core requests, and put your API key in AFA_KEY.
2. Give the tool to any agent; it quotes before it spends because the docstring tells it to.

## Products

python · langchain tool for StockX:

```python
import os, requests
from langchain_core.tools import tool

@tool
def stockx_products(params: dict, estimate_only: bool = True) -> dict:
    """Products from StockX. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["https://stockx.com/nike-dunk-low-retro-white-black-2021"],"country":"US"}"""
    r = requests.post(
        "https://apiforagents.dev/v1/stockx",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "products", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Search

python · langchain tool for StockX:

```python
import os, requests
from langchain_core.tools import tool

@tool
def stockx_search(params: dict, estimate_only: bool = True) -> dict:
    """Search from StockX. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"query":"Air Jordan 1","country":"US","limit":20}"""
    r = requests.post(
        "https://apiforagents.dev/v1/stockx",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "search", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Listing

python · langchain tool for StockX:

```python
import os, requests
from langchain_core.tools import tool

@tool
def stockx_listing(params: dict, estimate_only: bool = True) -> dict:
    """Listing from StockX. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subject":"https://stockx.com/brands/nike","country":"US","limit":20}"""
    r = requests.post(
        "https://apiforagents.dev/v1/stockx",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "listing", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## StockX operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Listing | $0.0009 |

## Each operation in detail

- [StockX Product API](https://apiforagents.dev/platforms/stockx/product-api): inputs, fields, sample, price
- [StockX Search API](https://apiforagents.dev/platforms/stockx/search-api): inputs, fields, sample, price
- [StockX Listings API](https://apiforagents.dev/platforms/stockx/listings-api): inputs, fields, sample, price

## Questions

### Will the agent overspend?

Pass maxUsd in params and the API refuses any call that would cost more, before anything is spent. The balance is prepaid, so it cannot run past what was topped up.

### Does it work with LangGraph?

Yes. A LangChain tool works in create_react_agent and any LangGraph node.

### What does StockX data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=stockx (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Blinkit data in LangChain. Pay per record.

> Get Blinkit products, search and category into LangChain: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/langchain/blinkit · Updated 2026-10-21

Call the Blinkit API from LangChain with one HTTPS request per operation: products, search and category. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: LangChain
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in LangChain

1. pip install langchain-core requests, and put your API key in AFA_KEY.
2. Give the tool to any agent; it quotes before it spends because the docstring tells it to.

## Products

python · langchain tool for Blinkit:

```python
import os, requests
from langchain_core.tools import tool

@tool
def blinkit_products(params: dict, estimate_only: bool = True) -> dict:
    """Products from Blinkit. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["https://blinkit.com/prn/<product-name>/prid/<id>"],"store":{"city":"Bengaluru","pincode":"560001"}}"""
    r = requests.post(
        "https://apiforagents.dev/v1/blinkit",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "products", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Search

python · langchain tool for Blinkit:

```python
import os, requests
from langchain_core.tools import tool

@tool
def blinkit_search(params: dict, estimate_only: bool = True) -> dict:
    """Search from Blinkit. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"query":"Amul butter","store":{"city":"Bengaluru","pincode":"560001"},"limit":20}"""
    r = requests.post(
        "https://apiforagents.dev/v1/blinkit",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "search", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Category

python · langchain tool for Blinkit:

```python
import os, requests
from langchain_core.tools import tool

@tool
def blinkit_category(params: dict, estimate_only: bool = True) -> dict:
    """Category from Blinkit. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"category":"Atta, Rice & Dal","subCategory":"Atta","store":{"city":"Delhi","pincode":"110001"},"limit":50}"""
    r = requests.post(
        "https://apiforagents.dev/v1/blinkit",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "category", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Blinkit operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Category | $0.0009 |

## Each operation in detail

- [Blinkit Price and Stock API](https://apiforagents.dev/platforms/blinkit/price-and-stock-api): inputs, fields, sample, price
- [Blinkit Search API](https://apiforagents.dev/platforms/blinkit/search-api): inputs, fields, sample, price
- [Blinkit Category API](https://apiforagents.dev/platforms/blinkit/category-api): inputs, fields, sample, price

## Questions

### Will the agent overspend?

Pass maxUsd in params and the API refuses any call that would cost more, before anything is spent. The balance is prepaid, so it cannot run past what was topped up.

### Does it work with LangGraph?

Yes. A LangChain tool works in create_react_agent and any LangGraph node.

### What does Blinkit data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=blinkit (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Swiggy Instamart data in LangChain. Pay per record.

> Get Swiggy Instamart data into LangChain: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/langchain/instamart · Updated 2026-10-21

Call the Swiggy Instamart API from LangChain with one HTTPS request per operation: products, search and category. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: LangChain
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in LangChain

1. pip install langchain-core requests, and put your API key in AFA_KEY.
2. Give the tool to any agent; it quotes before it spends because the docstring tells it to.

## Products

python · langchain tool for Swiggy Instamart:

```python
import os, requests
from langchain_core.tools import tool

@tool
def instamart_products(params: dict, estimate_only: bool = True) -> dict:
    """Products from Swiggy Instamart. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["https://www.swiggy.com/instamart/item/<item-id>"],"store":{"city":"Delhi","pincode":"110001"}}"""
    r = requests.post(
        "https://apiforagents.dev/v1/instamart",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "products", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Search

python · langchain tool for Swiggy Instamart:

```python
import os, requests
from langchain_core.tools import tool

@tool
def instamart_search(params: dict, estimate_only: bool = True) -> dict:
    """Search from Swiggy Instamart. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"query":"Maggi noodles","store":{"city":"Bengaluru","pincode":"560001"},"limit":20}"""
    r = requests.post(
        "https://apiforagents.dev/v1/instamart",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "search", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Category

python · langchain tool for Swiggy Instamart:

```python
import os, requests
from langchain_core.tools import tool

@tool
def instamart_category(params: dict, estimate_only: bool = True) -> dict:
    """Category from Swiggy Instamart. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"category":"Atta, Rice and Dal","subCategory":"Atta","store":{"city":"Delhi","pincode":"110001"},"limit":50}"""
    r = requests.post(
        "https://apiforagents.dev/v1/instamart",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "category", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Swiggy Instamart operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Category | $0.0009 |

## Each operation in detail

- [Instamart Price and Stock API](https://apiforagents.dev/platforms/instamart/price-and-stock-api): inputs, fields, sample, price
- [Instamart Search API](https://apiforagents.dev/platforms/instamart/search-api): inputs, fields, sample, price
- [Instamart Category API](https://apiforagents.dev/platforms/instamart/category-api): inputs, fields, sample, price

## Questions

### Will the agent overspend?

Pass maxUsd in params and the API refuses any call that would cost more, before anything is spent. The balance is prepaid, so it cannot run past what was topped up.

### Does it work with LangGraph?

Yes. A LangChain tool works in create_react_agent and any LangGraph node.

### What does Swiggy Instamart data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=instamart (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Zepto data in LangChain. Pay per record.

> Get Zepto products, search and category into LangChain: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/langchain/zepto · Updated 2026-10-21

Call the Zepto API from LangChain with one HTTPS request per operation: products, search and category. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: LangChain
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in LangChain

1. pip install langchain-core requests, and put your API key in AFA_KEY.
2. Give the tool to any agent; it quotes before it spends because the docstring tells it to.

## Products

python · langchain tool for Zepto:

```python
import os, requests
from langchain_core.tools import tool

@tool
def zepto_products(params: dict, estimate_only: bool = True) -> dict:
    """Products from Zepto. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["https://www.zepto.com/pn/<product-name>/pvid/<id>"],"store":{"city":"Bengaluru","pincode":"560001"}}"""
    r = requests.post(
        "https://apiforagents.dev/v1/zepto",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "products", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Search

python · langchain tool for Zepto:

```python
import os, requests
from langchain_core.tools import tool

@tool
def zepto_search(params: dict, estimate_only: bool = True) -> dict:
    """Search from Zepto. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"query":"Tata Salt","store":{"city":"Delhi","pincode":"110001"},"limit":20}"""
    r = requests.post(
        "https://apiforagents.dev/v1/zepto",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "search", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Category

python · langchain tool for Zepto:

```python
import os, requests
from langchain_core.tools import tool

@tool
def zepto_category(params: dict, estimate_only: bool = True) -> dict:
    """Category from Zepto. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"category":"Atta Rice Oil Dals","subCategory":"Atta","store":{"city":"Bengaluru","pincode":"560001"},"limit":50}"""
    r = requests.post(
        "https://apiforagents.dev/v1/zepto",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "category", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Zepto operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Category | $0.0009 |

## Each operation in detail

- [Zepto Price and Stock API](https://apiforagents.dev/platforms/zepto/price-and-stock-api): inputs, fields, sample, price
- [Zepto Search API](https://apiforagents.dev/platforms/zepto/search-api): inputs, fields, sample, price
- [Zepto Category API](https://apiforagents.dev/platforms/zepto/category-api): inputs, fields, sample, price

## Questions

### Will the agent overspend?

Pass maxUsd in params and the API refuses any call that would cost more, before anything is spent. The balance is prepaid, so it cannot run past what was topped up.

### Does it work with LangGraph?

Yes. A LangChain tool works in create_react_agent and any LangGraph node.

### What does Zepto data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=zepto (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Indeed data in LangChain. Pay per record.

> Get Indeed search and jobs into LangChain: one HTTPS call per operation, a free quote first, pay per record from $0.000045 per record.

Canonical: https://apiforagents.dev/integrations/langchain/indeed · Updated 2026-10-21

Call the Indeed API from LangChain with one HTTPS request per operation: search and jobs. Every call can be quoted free first, and you pay per record that comes back, from $0.000045 per record, from a prepaid balance with $0.10 free to start.

- Works with: LangChain
- Operations: 2
- Price: From $0.000045 per record
- Free to start: $0.10

## Set it up in LangChain

1. pip install langchain-core requests, and put your API key in AFA_KEY.
2. Give the tool to any agent; it quotes before it spends because the docstring tells it to.

## Search

python · langchain tool for Indeed:

```python
import os, requests
from langchain_core.tools import tool

@tool
def indeed_search(params: dict, estimate_only: bool = True) -> dict:
    """Search from Indeed. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"query":"software engineer","location":"Austin, TX","country":"US","postedWithin":"7d","limit":10}"""
    r = requests.post(
        "https://apiforagents.dev/v1/indeed",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "search", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Jobs

python · langchain tool for Indeed:

```python
import os, requests
from langchain_core.tools import tool

@tool
def indeed_jobs(params: dict, estimate_only: bool = True) -> dict:
    """Jobs from Indeed. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["https://www.indeed.com/viewjob?jk=<job-key>"],"country":"US"}"""
    r = requests.post(
        "https://apiforagents.dev/v1/indeed",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "jobs", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Indeed operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Search | $0.000045 |
| Jobs | $0.000045 |

## Each operation in detail

- [Indeed Jobs API](https://apiforagents.dev/platforms/indeed/jobs-api): inputs, fields, sample, price
- [Indeed Job Details API](https://apiforagents.dev/platforms/indeed/job-details-api): inputs, fields, sample, price

## Questions

### Will the agent overspend?

Pass maxUsd in params and the API refuses any call that would cost more, before anything is spent. The balance is prepaid, so it cannot run past what was topped up.

### Does it work with LangGraph?

Yes. A LangChain tool works in create_react_agent and any LangGraph node.

### What does Indeed data cost?

Pay as you go, from $0.000045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=indeed (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Naukri data in LangChain. Pay per record.

> Get Naukri search into LangChain: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/langchain/naukri · Updated 2026-10-21

Call the Naukri API from LangChain with one HTTPS request per operation: search. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: LangChain
- Operations: 1
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in LangChain

1. pip install langchain-core requests, and put your API key in AFA_KEY.
2. Give the tool to any agent; it quotes before it spends because the docstring tells it to.

## Search

python · langchain tool for Naukri:

```python
import os, requests
from langchain_core.tools import tool

@tool
def naukri_search(params: dict, estimate_only: bool = True) -> dict:
    """Search from Naukri. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"query":"data scientist","postedWithin":"7d","experience":"3","locations":["Bengaluru"],"limit":50}"""
    r = requests.post(
        "https://apiforagents.dev/v1/naukri",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "search", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Naukri operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Search | $0.0018 |

## Each operation in detail

- [Naukri Jobs API](https://apiforagents.dev/platforms/naukri/jobs-api): inputs, fields, sample, price

## Questions

### Will the agent overspend?

Pass maxUsd in params and the API refuses any call that would cost more, before anything is spent. The balance is prepaid, so it cannot run past what was topped up.

### Does it work with LangGraph?

Yes. A LangChain tool works in create_react_agent and any LangGraph node.

### What does Naukri data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=naukri (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Upwork data in LangChain. Pay per record.

> Get Upwork search into LangChain: one HTTPS call per operation, a free quote first, pay per record from $0.0027 per record.

Canonical: https://apiforagents.dev/integrations/langchain/upwork · Updated 2026-10-21

Call the Upwork API from LangChain with one HTTPS request per operation: search. Every call can be quoted free first, and you pay per record that comes back, from $0.0027 per record, from a prepaid balance with $0.10 free to start.

- Works with: LangChain
- Operations: 1
- Price: From $0.0027 per record
- Free to start: $0.10

## Set it up in LangChain

1. pip install langchain-core requests, and put your API key in AFA_KEY.
2. Give the tool to any agent; it quotes before it spends because the docstring tells it to.

## Search

python · langchain tool for Upwork:

```python
import os, requests
from langchain_core.tools import tool

@tool
def upwork_search(params: dict, estimate_only: bool = True) -> dict:
    """Search from Upwork. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"query":"shopify developer","sort":"newest","experienceLevel":["expert"],"clientLocation":["United States"],"limit":10}"""
    r = requests.post(
        "https://apiforagents.dev/v1/upwork",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "search", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Upwork operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Search | $0.0027 |

## Each operation in detail

- [Upwork Jobs API](https://apiforagents.dev/platforms/upwork/jobs-api): inputs, fields, sample, price

## Questions

### Will the agent overspend?

Pass maxUsd in params and the API refuses any call that would cost more, before anything is spent. The balance is prepaid, so it cannot run past what was topped up.

### Does it work with LangGraph?

Yes. A LangChain tool works in create_react_agent and any LangGraph node.

### What does Upwork data cost?

Pay as you go, from $0.0027 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=upwork (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Contacts data in LangChain. Pay per record.

> Get Contacts reveal into LangChain: one HTTPS call per operation, a free quote first, pay per record priced per call.

Canonical: https://apiforagents.dev/integrations/langchain/contacts · Updated 2026-10-21

Call the Contacts API from LangChain with one HTTPS request per operation: reveal. Every call can be quoted free first, and you pay per record that comes back, priced per call, from a prepaid balance with $0.10 free to start.

- Works with: LangChain
- Operations: 1
- Price: priced per call
- Free to start: $0.10

## Set it up in LangChain

1. pip install langchain-core requests, and put your API key in AFA_KEY.
2. Give the tool to any agent; it quotes before it spends because the docstring tells it to.

## Reveal

python · langchain tool for Contacts:

```python
import os, requests
from langchain_core.tools import tool

@tool
def contacts_reveal(params: dict, estimate_only: bool = True) -> dict:
    """Reveal from Contacts. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["satyanadella"],"reveal":["email"]}"""
    r = requests.post(
        "https://apiforagents.dev/v1/contacts",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "reveal", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Contacts operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Reveal | quoted per call |

## Each operation in detail

- [Work Email and Phone API](https://apiforagents.dev/platforms/contacts/work-email-and-phone-api): inputs, fields, sample, price

## Questions

### Will the agent overspend?

Pass maxUsd in params and the API refuses any call that would cost more, before anything is spent. The balance is prepaid, so it cannot run past what was topped up.

### Does it work with LangGraph?

Yes. A LangChain tool works in create_react_agent and any LangGraph node.

### What does Contacts data cost?

Pay as you go, priced per call at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=contacts (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Google Maps data in LangChain. Pay per record.

> Get Google Maps places, search and reviews into LangChain: one HTTPS call per operation, a free quote first, pay per record from $0.000225 per record.

Canonical: https://apiforagents.dev/integrations/langchain/google_maps · Updated 2026-10-21

Call the Google Maps API from LangChain with one HTTPS request per operation: places, search and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.000225 per record, from a prepaid balance with $0.10 free to start.

- Works with: LangChain
- Operations: 3
- Price: From $0.000225 per record
- Free to start: $0.10

## Set it up in LangChain

1. pip install langchain-core requests, and put your API key in AFA_KEY.
2. Give the tool to any agent; it quotes before it spends because the docstring tells it to.

## Places

python · langchain tool for Google Maps:

```python
import os, requests
from langchain_core.tools import tool

@tool
def google_maps_places(params: dict, estimate_only: bool = True) -> dict:
    """Places from Google Maps. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["ChIJN1t_tDeuEmsRUsoyG83frY4"]}"""
    r = requests.post(
        "https://apiforagents.dev/v1/google_maps",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "places", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Search

python · langchain tool for Google Maps:

```python
import os, requests
from langchain_core.tools import tool

@tool
def google_maps_search(params: dict, estimate_only: bool = True) -> dict:
    """Search from Google Maps. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"query":"coffee shop","location":"Seattle, WA","minRating":"4.5","limit":20}"""
    r = requests.post(
        "https://apiforagents.dev/v1/google_maps",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "search", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Reviews

python · langchain tool for Google Maps:

```python
import os, requests
from langchain_core.tools import tool

@tool
def google_maps_reviews(params: dict, estimate_only: bool = True) -> dict:
    """Reviews from Google Maps. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["ChIJN1t_tDeuEmsRUsoyG83frY4"],"sort":"newest","limit":25}"""
    r = requests.post(
        "https://apiforagents.dev/v1/google_maps",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "reviews", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Google Maps operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Places | $0.000225 |
| Search | $0.000225 |
| Reviews | $0.000225 |

## Each operation in detail

- [Google Maps Places API](https://apiforagents.dev/platforms/google_maps/places-api): inputs, fields, sample, price
- [Google Maps Search API](https://apiforagents.dev/platforms/google_maps/search-api): inputs, fields, sample, price
- [Google Maps Reviews API](https://apiforagents.dev/platforms/google_maps/reviews-api): inputs, fields, sample, price

## Questions

### Will the agent overspend?

Pass maxUsd in params and the API refuses any call that would cost more, before anything is spent. The balance is prepaid, so it cannot run past what was topped up.

### Does it work with LangGraph?

Yes. A LangChain tool works in create_react_agent and any LangGraph node.

### What does Google Maps data cost?

Pay as you go, from $0.000225 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=google_maps (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Yelp data in LangChain. Pay per record.

> Get Yelp businesses, search and reviews into LangChain: one HTTPS call per operation, a free quote first, pay per record from $0.000225 per record.

Canonical: https://apiforagents.dev/integrations/langchain/yelp · Updated 2026-10-21

Call the Yelp API from LangChain with one HTTPS request per operation: businesses, search and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.000225 per record, from a prepaid balance with $0.10 free to start.

- Works with: LangChain
- Operations: 3
- Price: From $0.000225 per record
- Free to start: $0.10

## Set it up in LangChain

1. pip install langchain-core requests, and put your API key in AFA_KEY.
2. Give the tool to any agent; it quotes before it spends because the docstring tells it to.

## Businesses

python · langchain tool for Yelp:

```python
import os, requests
from langchain_core.tools import tool

@tool
def yelp_businesses(params: dict, estimate_only: bool = True) -> dict:
    """Businesses from Yelp. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["katzs-delicatessen-new-york"]}"""
    r = requests.post(
        "https://apiforagents.dev/v1/yelp",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "businesses", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Search

python · langchain tool for Yelp:

```python
import os, requests
from langchain_core.tools import tool

@tool
def yelp_search(params: dict, estimate_only: bool = True) -> dict:
    """Search from Yelp. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"query":"ramen","location":"San Francisco, CA","sort":"rating_high","priceLevels":["1","2"],"limit":20}"""
    r = requests.post(
        "https://apiforagents.dev/v1/yelp",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "search", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Reviews

python · langchain tool for Yelp:

```python
import os, requests
from langchain_core.tools import tool

@tool
def yelp_reviews(params: dict, estimate_only: bool = True) -> dict:
    """Reviews from Yelp. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["katzs-delicatessen-new-york"],"limit":25}"""
    r = requests.post(
        "https://apiforagents.dev/v1/yelp",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "reviews", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Yelp operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Businesses | $0.000225 |
| Search | $0.000225 |
| Reviews | $0.000225 |

## Each operation in detail

- [Yelp Business API](https://apiforagents.dev/platforms/yelp/business-api): inputs, fields, sample, price
- [Yelp Search API](https://apiforagents.dev/platforms/yelp/search-api): inputs, fields, sample, price
- [Yelp Reviews API](https://apiforagents.dev/platforms/yelp/reviews-api): inputs, fields, sample, price

## Questions

### Will the agent overspend?

Pass maxUsd in params and the API refuses any call that would cost more, before anything is spent. The balance is prepaid, so it cannot run past what was topped up.

### Does it work with LangGraph?

Yes. A LangChain tool works in create_react_agent and any LangGraph node.

### What does Yelp data cost?

Pay as you go, from $0.000225 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=yelp (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Tripadvisor data in LangChain. Pay per record.

> Get Tripadvisor data into LangChain: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/langchain/tripadvisor · Updated 2026-10-21

Call the Tripadvisor API from LangChain with one HTTPS request per operation: hotels, restaurants, attractions and search hotels. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: LangChain
- Operations: 7
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in LangChain

1. pip install langchain-core requests, and put your API key in AFA_KEY.
2. Give the tool to any agent; it quotes before it spends because the docstring tells it to.

## Hotels

python · langchain tool for Tripadvisor:

```python
import os, requests
from langchain_core.tools import tool

@tool
def tripadvisor_hotels(params: dict, estimate_only: bool = True) -> dict:
    """Hotels from Tripadvisor. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["https://www.tripadvisor.com/Hotel_Review-<place-id>-Reviews-The_Plaza-New_York_City_New_York.html"],"currency":"USD","stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15"}}"""
    r = requests.post(
        "https://apiforagents.dev/v1/tripadvisor",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "hotels", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Restaurants

python · langchain tool for Tripadvisor:

```python
import os, requests
from langchain_core.tools import tool

@tool
def tripadvisor_restaurants(params: dict, estimate_only: bool = True) -> dict:
    """Restaurants from Tripadvisor. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["https://www.tripadvisor.com/Restaurant_Review-<place-id>-Reviews-Katz_s_Delicatessen-New_York_City_New_York.html"]}"""
    r = requests.post(
        "https://apiforagents.dev/v1/tripadvisor",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "restaurants", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Attractions

python · langchain tool for Tripadvisor:

```python
import os, requests
from langchain_core.tools import tool

@tool
def tripadvisor_attractions(params: dict, estimate_only: bool = True) -> dict:
    """Attractions from Tripadvisor. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["https://www.tripadvisor.com/Attraction_Review-<place-id>-Reviews-Statue_of_Liberty-New_York_City_New_York.html"]}"""
    r = requests.post(
        "https://apiforagents.dev/v1/tripadvisor",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "attractions", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Search hotels

python · langchain tool for Tripadvisor:

```python
import os, requests
from langchain_core.tools import tool

@tool
def tripadvisor_search_hotels(params: dict, estimate_only: bool = True) -> dict:
    """Search hotels from Tripadvisor. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"query":"Lisbon","currency":"EUR","limit":20,"stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15"}}"""
    r = requests.post(
        "https://apiforagents.dev/v1/tripadvisor",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "searchHotels", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Tripadvisor operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Hotels | $0.0018 |
| Restaurants | $0.0018 |
| Attractions | $0.0018 |
| Search hotels | $0.0018 |
| Search restaurants | $0.0018 |
| Search attractions | $0.0018 |
| Reviews | $0.0018 |

## Each operation in detail

- [Tripadvisor Hotels API](https://apiforagents.dev/platforms/tripadvisor/hotels-api): inputs, fields, sample, price
- [Tripadvisor Restaurants API](https://apiforagents.dev/platforms/tripadvisor/restaurants-api): inputs, fields, sample, price
- [Tripadvisor Attractions API](https://apiforagents.dev/platforms/tripadvisor/attractions-api): inputs, fields, sample, price
- [Tripadvisor Hotel Search API](https://apiforagents.dev/platforms/tripadvisor/hotel-search-api): inputs, fields, sample, price
- [Tripadvisor Restaurant Search API](https://apiforagents.dev/platforms/tripadvisor/restaurant-search-api): inputs, fields, sample, price
- [Tripadvisor Attraction Search API](https://apiforagents.dev/platforms/tripadvisor/attraction-search-api): inputs, fields, sample, price
- [Tripadvisor Reviews API](https://apiforagents.dev/platforms/tripadvisor/reviews-api): inputs, fields, sample, price

## Questions

### Will the agent overspend?

Pass maxUsd in params and the API refuses any call that would cost more, before anything is spent. The balance is prepaid, so it cannot run past what was topped up.

### Does it work with LangGraph?

Yes. A LangChain tool works in create_react_agent and any LangGraph node.

### What does Tripadvisor data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tripadvisor (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Airbnb data in LangChain. Pay per record.

> Get Airbnb listings and reviews into LangChain: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/langchain/airbnb · Updated 2026-10-21

Call the Airbnb API from LangChain with one HTTPS request per operation: listings and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: LangChain
- Operations: 2
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in LangChain

1. pip install langchain-core requests, and put your API key in AFA_KEY.
2. Give the tool to any agent; it quotes before it spends because the docstring tells it to.

## Listings

python · langchain tool for Airbnb:

```python
import os, requests
from langchain_core.tools import tool

@tool
def airbnb_listings(params: dict, estimate_only: bool = True) -> dict:
    """Listings from Airbnb. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["https://www.airbnb.com/rooms/<room-id>"],"stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15","adults":2,"currency":"USD"}}"""
    r = requests.post(
        "https://apiforagents.dev/v1/airbnb",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "listings", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Reviews

python · langchain tool for Airbnb:

```python
import os, requests
from langchain_core.tools import tool

@tool
def airbnb_reviews(params: dict, estimate_only: bool = True) -> dict:
    """Reviews from Airbnb. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["https://www.airbnb.com/rooms/<room-id>"],"locale":"en-US","limit":25}"""
    r = requests.post(
        "https://apiforagents.dev/v1/airbnb",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "reviews", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Airbnb operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Listings | $0.0018 |
| Reviews | $0.0018 |

## Each operation in detail

- [Airbnb Listings API](https://apiforagents.dev/platforms/airbnb/listings-api): inputs, fields, sample, price
- [Airbnb Reviews API](https://apiforagents.dev/platforms/airbnb/reviews-api): inputs, fields, sample, price

## Questions

### Will the agent overspend?

Pass maxUsd in params and the API refuses any call that would cost more, before anything is spent. The balance is prepaid, so it cannot run past what was topped up.

### Does it work with LangGraph?

Yes. A LangChain tool works in create_react_agent and any LangGraph node.

### What does Airbnb data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=airbnb (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Booking.com data in LangChain. Pay per record.

> Get Booking.com properties, search and reviews into LangChain: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/langchain/booking · Updated 2026-10-21

Call the Booking.com API from LangChain with one HTTPS request per operation: properties, search and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: LangChain
- Operations: 3
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in LangChain

1. pip install langchain-core requests, and put your API key in AFA_KEY.
2. Give the tool to any agent; it quotes before it spends because the docstring tells it to.

## Properties

python · langchain tool for Booking.com:

```python
import os, requests
from langchain_core.tools import tool

@tool
def booking_properties(params: dict, estimate_only: bool = True) -> dict:
    """Properties from Booking.com. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["https://www.booking.com/hotel/gb/<hotel-name>.html"],"stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15","currency":"GBP"}}"""
    r = requests.post(
        "https://apiforagents.dev/v1/booking",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "properties", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Search

python · langchain tool for Booking.com:

```python
import os, requests
from langchain_core.tools import tool

@tool
def booking_search(params: dict, estimate_only: bool = True) -> dict:
    """Search from Booking.com. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"location":"Barcelona","stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15","currency":"EUR"},"minRating":8,"sort":"price_low","limit":20}"""
    r = requests.post(
        "https://apiforagents.dev/v1/booking",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "search", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Reviews

python · langchain tool for Booking.com:

```python
import os, requests
from langchain_core.tools import tool

@tool
def booking_reviews(params: dict, estimate_only: bool = True) -> dict:
    """Reviews from Booking.com. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"subjects":["https://www.booking.com/hotel/gb/<hotel-name>.html"],"sort":"newest","scoreBands":["average","poor"],"limit":25}"""
    r = requests.post(
        "https://apiforagents.dev/v1/booking",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "reviews", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Booking.com operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Properties | $0.0018 |
| Search | $0.0018 |
| Reviews | $0.0018 |

## Each operation in detail

- [Booking.com Hotels API](https://apiforagents.dev/platforms/booking/hotels-api): inputs, fields, sample, price
- [Booking.com Search API](https://apiforagents.dev/platforms/booking/search-api): inputs, fields, sample, price
- [Booking.com Reviews API](https://apiforagents.dev/platforms/booking/reviews-api): inputs, fields, sample, price

## Questions

### Will the agent overspend?

Pass maxUsd in params and the API refuses any call that would cost more, before anything is spent. The balance is prepaid, so it cannot run past what was topped up.

### Does it work with LangGraph?

Yes. A LangChain tool works in create_react_agent and any LangGraph node.

### What does Booking.com data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=booking (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Google data in LangChain. Pay per record.

> Get Google search, news, images and shopping into LangChain: one HTTPS call per operation, a free quote first, pay per record from $0.00009 per record.

Canonical: https://apiforagents.dev/integrations/langchain/google · Updated 2026-10-21

Call the Google API from LangChain with one HTTPS request per operation: search, news, images and shopping. Every call can be quoted free first, and you pay per record that comes back, from $0.00009 per record, from a prepaid balance with $0.10 free to start.

- Works with: LangChain
- Operations: 5
- Price: From $0.00009 per record
- Free to start: $0.10

## Set it up in LangChain

1. pip install langchain-core requests, and put your API key in AFA_KEY.
2. Give the tool to any agent; it quotes before it spends because the docstring tells it to.

## Search

python · langchain tool for Google:

```python
import os, requests
from langchain_core.tools import tool

@tool
def google_search(params: dict, estimate_only: bool = True) -> dict:
    """Search from Google. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"query":"best CRM for startups","pages":1,"country":"US","language":"en"}"""
    r = requests.post(
        "https://apiforagents.dev/v1/google",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "search", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## News

python · langchain tool for Google:

```python
import os, requests
from langchain_core.tools import tool

@tool
def google_news(params: dict, estimate_only: bool = True) -> dict:
    """News from Google. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"query":"electric vehicles","postedWithin":"7d","country":"US","language":"en","limit":20}"""
    r = requests.post(
        "https://apiforagents.dev/v1/google",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "news", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Images

python · langchain tool for Google:

```python
import os, requests
from langchain_core.tools import tool

@tool
def google_images(params: dict, estimate_only: bool = True) -> dict:
    """Images from Google. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"query":"Eiffel Tower at night","limit":20}"""
    r = requests.post(
        "https://apiforagents.dev/v1/google",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "images", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Shopping

python · langchain tool for Google:

```python
import os, requests
from langchain_core.tools import tool

@tool
def google_shopping(params: dict, estimate_only: bool = True) -> dict:
    """Shopping from Google. Call with estimate_only=True first and
    tell the user the price; then call again with estimate_only=False.
    Example params: {"query":"Sony WH-1000XM5","country":"US","language":"en","limit":20}"""
    r = requests.post(
        "https://apiforagents.dev/v1/google",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": "shopping", **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    return r.json()
```

## Google operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Search | $0.0009 |
| News | $0.0018 |
| Images | $0.0009 |
| Shopping | $0.0027 |
| Play reviews | $0.00009 |

## Each operation in detail

- [Google Search API](https://apiforagents.dev/platforms/google/search-api): inputs, fields, sample, price
- [Google News API](https://apiforagents.dev/platforms/google/news-api): inputs, fields, sample, price
- [Google Images API](https://apiforagents.dev/platforms/google/images-api): inputs, fields, sample, price
- [Google Shopping API](https://apiforagents.dev/platforms/google/shopping-api): inputs, fields, sample, price
- [Google Play Reviews API](https://apiforagents.dev/platforms/google/play-store-reviews-api): inputs, fields, sample, price

## Questions

### Will the agent overspend?

Pass maxUsd in params and the API refuses any call that would cost more, before anything is spent. The balance is prepaid, so it cannot run past what was topped up.

### Does it work with LangGraph?

Yes. A LangChain tool works in create_react_agent and any LangGraph node.

### What does Google data cost?

Pay as you go, from $0.00009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=google (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Instagram data in Claude Code. Pay per record.

> Get Instagram data into Claude Code: one HTTPS call per operation, a free quote first, pay per record from $0.00045 per record.

Canonical: https://apiforagents.dev/integrations/claude-code/instagram · Updated 2026-10-21

Call the Instagram API from Claude Code with one HTTPS request per operation: profiles, posts by a person, similar and hashtag. Every call can be quoted free first, and you pay per record that comes back, from $0.00045 per record, from a prepaid balance with $0.10 free to start.

- Works with: Claude Code
- Operations: 7
- Price: From $0.00045 per record
- Free to start: $0.10

## Set it up in Claude Code

1. Paste the prompt below into Claude Code in your project.
2. It signs itself up with one call, reads the operation list, quotes first and writes the code that calls the API.

## Profiles

prompt:

```text
Use https://apiforagents.dev for Instagram data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/instagram.md for the operations. Call POST https://apiforagents.dev/v1/instagram with {"op":"profiles","subjects":["natgeo","nike"]}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Posts by a person

prompt:

```text
Use https://apiforagents.dev for Instagram data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/instagram.md for the operations. Call POST https://apiforagents.dev/v1/instagram with {"op":"posts","subject":"natgeo","limit":12}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Similar

prompt:

```text
Use https://apiforagents.dev for Instagram data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/instagram.md for the operations. Call POST https://apiforagents.dev/v1/instagram with {"op":"similar","subject":"natgeo","limit":20}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Hashtag

prompt:

```text
Use https://apiforagents.dev for Instagram data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/instagram.md for the operations. Call POST https://apiforagents.dev/v1/instagram with {"op":"hashtag","hashtag":"streetphotography","sort":"top","limit":20}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Instagram operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Profiles | $0.0018 |
| Posts by a person | $0.0018 |
| Similar | $0.00045 |
| Hashtag | $0.00045 |
| Search | $0.00045 |
| Comments | $0.00045 |
| Followers | $0.000675 |

## Each operation in detail

- [Instagram Profile API](https://apiforagents.dev/platforms/instagram/profile-api): inputs, fields, sample, price
- [Instagram Posts API](https://apiforagents.dev/platforms/instagram/posts-api): inputs, fields, sample, price
- [Instagram Similar Accounts API](https://apiforagents.dev/platforms/instagram/similar-accounts-api): inputs, fields, sample, price
- [Instagram Hashtag API](https://apiforagents.dev/platforms/instagram/hashtag-api): inputs, fields, sample, price
- [Instagram Account Search API](https://apiforagents.dev/platforms/instagram/account-search-api): inputs, fields, sample, price
- [Instagram Comments API](https://apiforagents.dev/platforms/instagram/comments-api): inputs, fields, sample, price
- [Instagram Followers API](https://apiforagents.dev/platforms/instagram/followers-api): inputs, fields, sample, price

## Questions

### Does Claude Code need an MCP server for this?

No. It makes plain HTTPS requests and writes the code that does, from the prompt alone.

### Where does the key live?

Claude Code signs the agent up itself and keeps its identity in a file you choose; add that file to .gitignore. Or make an API key in the console and put it in your environment.

### What does Instagram data cost?

Pay as you go, from $0.00045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=instagram (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# YouTube data in Claude Code. Pay per record.

> Get YouTube channels, videos and comments into Claude Code: one HTTPS call per operation, a free quote first, pay per record from $0.00045 per record.

Canonical: https://apiforagents.dev/integrations/claude-code/youtube · Updated 2026-10-21

Call the YouTube API from Claude Code with one HTTPS request per operation: channels, videos and comments. Every call can be quoted free first, and you pay per record that comes back, from $0.00045 per record, from a prepaid balance with $0.10 free to start.

- Works with: Claude Code
- Operations: 3
- Price: From $0.00045 per record
- Free to start: $0.10

## Set it up in Claude Code

1. Paste the prompt below into Claude Code in your project.
2. It signs itself up with one call, reads the operation list, quotes first and writes the code that calls the API.

## Channels

prompt:

```text
Use https://apiforagents.dev for YouTube data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/youtube.md for the operations. Call POST https://apiforagents.dev/v1/youtube with {"op":"channels","subjects":["@mkbhd"]}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Videos

prompt:

```text
Use https://apiforagents.dev for YouTube data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/youtube.md for the operations. Call POST https://apiforagents.dev/v1/youtube with {"op":"videos","subject":"@mkbhd","limit":10}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Comments

prompt:

```text
Use https://apiforagents.dev for YouTube data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/youtube.md for the operations. Call POST https://apiforagents.dev/v1/youtube with {"op":"comments","subjects":["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"limit":50}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## YouTube operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Channels | $0.00045 |
| Videos | $0.00045 |
| Comments | $0.00045 |

## Each operation in detail

- [YouTube Channel API](https://apiforagents.dev/platforms/youtube/channel-api): inputs, fields, sample, price
- [YouTube Videos API](https://apiforagents.dev/platforms/youtube/videos-api): inputs, fields, sample, price
- [YouTube Comments API](https://apiforagents.dev/platforms/youtube/comments-api): inputs, fields, sample, price

## Questions

### Does Claude Code need an MCP server for this?

No. It makes plain HTTPS requests and writes the code that does, from the prompt alone.

### Where does the key live?

Claude Code signs the agent up itself and keeps its identity in a file you choose; add that file to .gitignore. Or make an API key in the console and put it in your environment.

### What does YouTube data cost?

Pay as you go, from $0.00045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=youtube (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# X / Twitter data in Claude Code. Pay per record.

> Get X / Twitter data into Claude Code: one HTTPS call per operation, a free quote first, pay per record from $0.000225 per record.

Canonical: https://apiforagents.dev/integrations/claude-code/x_twitter · Updated 2026-10-21

Call the X / Twitter API from Claude Code with one HTTPS request per operation: profiles, posts by a person, search and search posts. Every call can be quoted free first, and you pay per record that comes back, from $0.000225 per record, from a prepaid balance with $0.10 free to start.

- Works with: Claude Code
- Operations: 4
- Price: From $0.000225 per record
- Free to start: $0.10

## Set it up in Claude Code

1. Paste the prompt below into Claude Code in your project.
2. It signs itself up with one call, reads the operation list, quotes first and writes the code that calls the API.

## Profiles

prompt:

```text
Use https://apiforagents.dev for X / Twitter data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/x_twitter.md for the operations. Call POST https://apiforagents.dev/v1/x_twitter with {"op":"profiles","subjects":["@NASA"]}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Posts by a person

prompt:

```text
Use https://apiforagents.dev for X / Twitter data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/x_twitter.md for the operations. Call POST https://apiforagents.dev/v1/x_twitter with {"op":"posts","subject":"@NASA","limit":20}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Search

prompt:

```text
Use https://apiforagents.dev for X / Twitter data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/x_twitter.md for the operations. Call POST https://apiforagents.dev/v1/x_twitter with {"op":"search","query":"climate scientist","limit":10}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Search posts

prompt:

```text
Use https://apiforagents.dev for X / Twitter data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/x_twitter.md for the operations. Call POST https://apiforagents.dev/v1/x_twitter with {"op":"searchPosts","query":"electric cars","limit":25}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## X / Twitter operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Profiles | $0.000225 |
| Posts by a person | $0.000225 |
| Search | $0.000225 |
| Search posts | $0.000225 |

## Each operation in detail

- [X Profile API](https://apiforagents.dev/platforms/x_twitter/profile-api): inputs, fields, sample, price
- [X Posts API](https://apiforagents.dev/platforms/x_twitter/posts-api): inputs, fields, sample, price
- [X Account Search API](https://apiforagents.dev/platforms/x_twitter/account-search-api): inputs, fields, sample, price
- [X Post Search API](https://apiforagents.dev/platforms/x_twitter/post-search-api): inputs, fields, sample, price

## Questions

### Does Claude Code need an MCP server for this?

No. It makes plain HTTPS requests and writes the code that does, from the prompt alone.

### Where does the key live?

Claude Code signs the agent up itself and keeps its identity in a file you choose; add that file to .gitignore. Or make an API key in the console and put it in your environment.

### What does X / Twitter data cost?

Pay as you go, from $0.000225 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=x_twitter (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Reddit data in Claude Code. Pay per record.

> Get Reddit data into Claude Code: one HTTPS call per operation, a free quote first, pay per record from $0.0045 per record.

Canonical: https://apiforagents.dev/integrations/claude-code/reddit · Updated 2026-10-21

Call the Reddit API from Claude Code with one HTTPS request per operation: posts by a person, subreddit, comments and search. Every call can be quoted free first, and you pay per record that comes back, from $0.0045 per record, from a prepaid balance with $0.10 free to start.

- Works with: Claude Code
- Operations: 4
- Price: From $0.0045 per record
- Free to start: $0.10

## Set it up in Claude Code

1. Paste the prompt below into Claude Code in your project.
2. It signs itself up with one call, reads the operation list, quotes first and writes the code that calls the API.

## Posts by a person

prompt:

```text
Use https://apiforagents.dev for Reddit data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/reddit.md for the operations. Call POST https://apiforagents.dev/v1/reddit with {"op":"posts","subject":"u/spez","limit":25}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Subreddit

prompt:

```text
Use https://apiforagents.dev for Reddit data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/reddit.md for the operations. Call POST https://apiforagents.dev/v1/reddit with {"op":"subreddit","subject":"r/technology","sort":"top","postedWithin":"7d","limit":25}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Comments

prompt:

```text
Use https://apiforagents.dev for Reddit data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/reddit.md for the operations. Call POST https://apiforagents.dev/v1/reddit with {"op":"comments","subjects":["https://www.reddit.com/r/technology/comments/<post-id>/"],"limit":50}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Search

prompt:

```text
Use https://apiforagents.dev for Reddit data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/reddit.md for the operations. Call POST https://apiforagents.dev/v1/reddit with {"op":"search","query":"electric cars","sort":"top","postedWithin":"30d","limit":25}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Reddit operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Posts by a person | $0.0045 |
| Subreddit | $0.0045 |
| Comments | $0.0045 |
| Search | $0.0045 |

## Each operation in detail

- [Reddit User Posts API](https://apiforagents.dev/platforms/reddit/user-posts-api): inputs, fields, sample, price
- [Reddit Subreddit API](https://apiforagents.dev/platforms/reddit/subreddit-api): inputs, fields, sample, price
- [Reddit Comments API](https://apiforagents.dev/platforms/reddit/comments-api): inputs, fields, sample, price
- [Reddit Search API](https://apiforagents.dev/platforms/reddit/search-api): inputs, fields, sample, price

## Questions

### Does Claude Code need an MCP server for this?

No. It makes plain HTTPS requests and writes the code that does, from the prompt alone.

### Where does the key live?

Claude Code signs the agent up itself and keeps its identity in a file you choose; add that file to .gitignore. Or make an API key in the console and put it in your environment.

### What does Reddit data cost?

Pay as you go, from $0.0045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=reddit (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# TikTok data in Claude Code. Pay per record.

> Get TikTok data into Claude Code: one HTTPS call per operation, a free quote first, pay per record from $0.00045 per record.

Canonical: https://apiforagents.dev/integrations/claude-code/tiktok · Updated 2026-10-21

Call the TikTok API from Claude Code with one HTTPS request per operation: profiles, posts by a person, videos and search posts. Every call can be quoted free first, and you pay per record that comes back, from $0.00045 per record, from a prepaid balance with $0.10 free to start.

- Works with: Claude Code
- Operations: 8
- Price: From $0.00045 per record
- Free to start: $0.10

## Set it up in Claude Code

1. Paste the prompt below into Claude Code in your project.
2. It signs itself up with one call, reads the operation list, quotes first and writes the code that calls the API.

## Profiles

prompt:

```text
Use https://apiforagents.dev for TikTok data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/tiktok.md for the operations. Call POST https://apiforagents.dev/v1/tiktok with {"op":"profiles","subjects":["@nba","@natgeo"]}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Posts by a person

prompt:

```text
Use https://apiforagents.dev for TikTok data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/tiktok.md for the operations. Call POST https://apiforagents.dev/v1/tiktok with {"op":"posts","subject":"@nba","limit":20}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Videos

prompt:

```text
Use https://apiforagents.dev for TikTok data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/tiktok.md for the operations. Call POST https://apiforagents.dev/v1/tiktok with {"op":"videos","subjects":["https://www.tiktok.com/@nba/video/<video-id>"]}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Search posts

prompt:

```text
Use https://apiforagents.dev for TikTok data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/tiktok.md for the operations. Call POST https://apiforagents.dev/v1/tiktok with {"op":"searchPosts","hashtag":"booktok","limit":25}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## TikTok operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Profiles | $0.0022 |
| Posts by a person | $0.0018 |
| Videos | $0.00045 |
| Search posts | $0.0018 |
| Search | $0.00045 |
| Comments | $0.00045 |
| Followers | $0.0009 |
| Shop | $0.013 |

## Each operation in detail

- [TikTok Profile API](https://apiforagents.dev/platforms/tiktok/profile-api): inputs, fields, sample, price
- [TikTok Posts API](https://apiforagents.dev/platforms/tiktok/posts-api): inputs, fields, sample, price
- [TikTok Video API](https://apiforagents.dev/platforms/tiktok/video-api): inputs, fields, sample, price
- [TikTok Video Search API](https://apiforagents.dev/platforms/tiktok/video-search-api): inputs, fields, sample, price
- [TikTok Account Search API](https://apiforagents.dev/platforms/tiktok/account-search-api): inputs, fields, sample, price
- [TikTok Comments API](https://apiforagents.dev/platforms/tiktok/comments-api): inputs, fields, sample, price
- [TikTok Followers API](https://apiforagents.dev/platforms/tiktok/followers-api): inputs, fields, sample, price
- [TikTok Shop API](https://apiforagents.dev/platforms/tiktok/shop-api): inputs, fields, sample, price

## Questions

### Does Claude Code need an MCP server for this?

No. It makes plain HTTPS requests and writes the code that does, from the prompt alone.

### Where does the key live?

Claude Code signs the agent up itself and keeps its identity in a file you choose; add that file to .gitignore. Or make an API key in the console and put it in your environment.

### What does TikTok data cost?

Pay as you go, from $0.00045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tiktok (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Facebook data in Claude Code. Pay per record.

> Get Facebook data into Claude Code: one HTTPS call per operation, a free quote first, pay per record from $0.0022 per record.

Canonical: https://apiforagents.dev/integrations/claude-code/facebook · Updated 2026-10-21

Call the Facebook API from Claude Code with one HTTPS request per operation: pages, posts by a person, reels and comments. Every call can be quoted free first, and you pay per record that comes back, from $0.0022 per record, from a prepaid balance with $0.10 free to start.

- Works with: Claude Code
- Operations: 9
- Price: From $0.0022 per record
- Free to start: $0.10

## Set it up in Claude Code

1. Paste the prompt below into Claude Code in your project.
2. It signs itself up with one call, reads the operation list, quotes first and writes the code that calls the API.

## Pages

prompt:

```text
Use https://apiforagents.dev for Facebook data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/facebook.md for the operations. Call POST https://apiforagents.dev/v1/facebook with {"op":"pages","subjects":["nike","natgeo"]}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Posts by a person

prompt:

```text
Use https://apiforagents.dev for Facebook data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/facebook.md for the operations. Call POST https://apiforagents.dev/v1/facebook with {"op":"posts","subject":"nike","since":"2026-10-01","limit":20}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Reels

prompt:

```text
Use https://apiforagents.dev for Facebook data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/facebook.md for the operations. Call POST https://apiforagents.dev/v1/facebook with {"op":"reels","subject":"natgeo","limit":10}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Comments

prompt:

```text
Use https://apiforagents.dev for Facebook data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/facebook.md for the operations. Call POST https://apiforagents.dev/v1/facebook with {"op":"comments","subjects":["https://www.facebook.com/nike/posts/<post-id>"],"sort":"top","limit":50}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Facebook operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Pages | $0.009 |
| Posts by a person | $0.0045 |
| Reels | $0.0045 |
| Comments | $0.0022 |
| Reviews | $0.0022 |
| Followers | $0.0067 |
| Ads | $0.0045 |
| Events | $0.009 |
| Marketplace | $0.009 |

## Each operation in detail

- [Facebook Page API](https://apiforagents.dev/platforms/facebook/page-api): inputs, fields, sample, price
- [Facebook Posts API](https://apiforagents.dev/platforms/facebook/posts-api): inputs, fields, sample, price
- [Facebook Reels API](https://apiforagents.dev/platforms/facebook/reels-api): inputs, fields, sample, price
- [Facebook Comments API](https://apiforagents.dev/platforms/facebook/comments-api): inputs, fields, sample, price
- [Facebook Reviews API](https://apiforagents.dev/platforms/facebook/reviews-api): inputs, fields, sample, price
- [Facebook Followers API](https://apiforagents.dev/platforms/facebook/followers-api): inputs, fields, sample, price
- [Facebook Ad Library API](https://apiforagents.dev/platforms/facebook/ad-library-api): inputs, fields, sample, price
- [Facebook Events API](https://apiforagents.dev/platforms/facebook/events-api): inputs, fields, sample, price
- [Facebook Marketplace API](https://apiforagents.dev/platforms/facebook/marketplace-api): inputs, fields, sample, price

## Questions

### Does Claude Code need an MCP server for this?

No. It makes plain HTTPS requests and writes the code that does, from the prompt alone.

### Where does the key live?

Claude Code signs the agent up itself and keeps its identity in a file you choose; add that file to .gitignore. Or make an API key in the console and put it in your environment.

### What does Facebook data cost?

Pay as you go, from $0.0022 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=facebook (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Amazon data in Claude Code. Pay per record.

> Get Amazon products, search and reviews into Claude Code: one HTTPS call per operation, a free quote first, pay per record from $0.00045 per record.

Canonical: https://apiforagents.dev/integrations/claude-code/amazon · Updated 2026-10-21

Call the Amazon API from Claude Code with one HTTPS request per operation: products, search and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.00045 per record, from a prepaid balance with $0.10 free to start.

- Works with: Claude Code
- Operations: 3
- Price: From $0.00045 per record
- Free to start: $0.10

## Set it up in Claude Code

1. Paste the prompt below into Claude Code in your project.
2. It signs itself up with one call, reads the operation list, quotes first and writes the code that calls the API.

## Products

prompt:

```text
Use https://apiforagents.dev for Amazon data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/amazon.md for the operations. Call POST https://apiforagents.dev/v1/amazon with {"op":"products","subjects":["B0DGHMNQ5Z"],"marketplace":"com"}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Search

prompt:

```text
Use https://apiforagents.dev for Amazon data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/amazon.md for the operations. Call POST https://apiforagents.dev/v1/amazon with {"op":"search","query":"wireless earbuds","marketplace":"com","limit":10}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Reviews

prompt:

```text
Use https://apiforagents.dev for Amazon data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/amazon.md for the operations. Call POST https://apiforagents.dev/v1/amazon with {"op":"reviews","subjects":["B0DGHMNQ5Z"],"marketplace":"com","limit":50}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Amazon operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0014 |
| Search | $0.00045 |
| Reviews | $0.00045 |

## Each operation in detail

- [Amazon Product API](https://apiforagents.dev/platforms/amazon/product-api): inputs, fields, sample, price
- [Amazon Search API](https://apiforagents.dev/platforms/amazon/search-api): inputs, fields, sample, price
- [Amazon Reviews API](https://apiforagents.dev/platforms/amazon/reviews-api): inputs, fields, sample, price

## Questions

### Does Claude Code need an MCP server for this?

No. It makes plain HTTPS requests and writes the code that does, from the prompt alone.

### Where does the key live?

Claude Code signs the agent up itself and keeps its identity in a file you choose; add that file to .gitignore. Or make an API key in the console and put it in your environment.

### What does Amazon data cost?

Pay as you go, from $0.00045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=amazon (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Shopify data in Claude Code. Pay per record.

> Get Shopify products into Claude Code: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/claude-code/shopify · Updated 2026-10-21

Call the Shopify API from Claude Code with one HTTPS request per operation: products. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Claude Code
- Operations: 1
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Claude Code

1. Paste the prompt below into Claude Code in your project.
2. It signs itself up with one call, reads the operation list, quotes first and writes the code that calls the API.

## Products

prompt:

```text
Use https://apiforagents.dev for Shopify data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/shopify.md for the operations. Call POST https://apiforagents.dev/v1/shopify with {"op":"products","subjects":["https://www.allbirds.com"],"limit":25}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Shopify operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |

## Each operation in detail

- [Shopify Products API](https://apiforagents.dev/platforms/shopify/products-api): inputs, fields, sample, price

## Questions

### Does Claude Code need an MCP server for this?

No. It makes plain HTTPS requests and writes the code that does, from the prompt alone.

### Where does the key live?

Claude Code signs the agent up itself and keeps its identity in a file you choose; add that file to .gitignore. Or make an API key in the console and put it in your environment.

### What does Shopify data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=shopify (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Farfetch data in Claude Code. Pay per record.

> Get Farfetch products, search and listing into Claude Code: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/claude-code/farfetch · Updated 2026-10-21

Call the Farfetch API from Claude Code with one HTTPS request per operation: products, search and listing. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Claude Code
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Claude Code

1. Paste the prompt below into Claude Code in your project.
2. It signs itself up with one call, reads the operation list, quotes first and writes the code that calls the API.

## Products

prompt:

```text
Use https://apiforagents.dev for Farfetch data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/farfetch.md for the operations. Call POST https://apiforagents.dev/v1/farfetch with {"op":"products","subjects":["https://www.farfetch.com/shopping/women/<product>-item-<id>.aspx"]}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Search

prompt:

```text
Use https://apiforagents.dev for Farfetch data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/farfetch.md for the operations. Call POST https://apiforagents.dev/v1/farfetch with {"op":"search","query":"Gucci loafers","limit":20}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Listing

prompt:

```text
Use https://apiforagents.dev for Farfetch data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/farfetch.md for the operations. Call POST https://apiforagents.dev/v1/farfetch with {"op":"listing","subject":"https://www.farfetch.com/shopping/women/gucci/items.aspx","limit":20}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Farfetch operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Listing | $0.0009 |

## Each operation in detail

- [Farfetch Product API](https://apiforagents.dev/platforms/farfetch/product-api): inputs, fields, sample, price
- [Farfetch Search API](https://apiforagents.dev/platforms/farfetch/search-api): inputs, fields, sample, price
- [Farfetch Listings API](https://apiforagents.dev/platforms/farfetch/listings-api): inputs, fields, sample, price

## Questions

### Does Claude Code need an MCP server for this?

No. It makes plain HTTPS requests and writes the code that does, from the prompt alone.

### Where does the key live?

Claude Code signs the agent up itself and keeps its identity in a file you choose; add that file to .gitignore. Or make an API key in the console and put it in your environment.

### What does Farfetch data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=farfetch (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# GOAT data in Claude Code. Pay per record.

> Get GOAT products, search and listing into Claude Code: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/claude-code/goat · Updated 2026-10-21

Call the GOAT API from Claude Code with one HTTPS request per operation: products, search and listing. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Claude Code
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Claude Code

1. Paste the prompt below into Claude Code in your project.
2. It signs itself up with one call, reads the operation list, quotes first and writes the code that calls the API.

## Products

prompt:

```text
Use https://apiforagents.dev for GOAT data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/goat.md for the operations. Call POST https://apiforagents.dev/v1/goat with {"op":"products","subjects":["https://www.goat.com/sneakers/<product-slug>"],"country":"US"}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Search

prompt:

```text
Use https://apiforagents.dev for GOAT data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/goat.md for the operations. Call POST https://apiforagents.dev/v1/goat with {"op":"search","query":"Nike Dunk Low","country":"US","limit":20}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Listing

prompt:

```text
Use https://apiforagents.dev for GOAT data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/goat.md for the operations. Call POST https://apiforagents.dev/v1/goat with {"op":"listing","subject":"https://www.goat.com/brand/nike","country":"US","limit":20}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## GOAT operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Listing | $0.0009 |

## Each operation in detail

- [GOAT Product API](https://apiforagents.dev/platforms/goat/product-api): inputs, fields, sample, price
- [GOAT Search API](https://apiforagents.dev/platforms/goat/search-api): inputs, fields, sample, price
- [GOAT Listings API](https://apiforagents.dev/platforms/goat/listings-api): inputs, fields, sample, price

## Questions

### Does Claude Code need an MCP server for this?

No. It makes plain HTTPS requests and writes the code that does, from the prompt alone.

### Where does the key live?

Claude Code signs the agent up itself and keeps its identity in a file you choose; add that file to .gitignore. Or make an API key in the console and put it in your environment.

### What does GOAT data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=goat (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# StockX data in Claude Code. Pay per record.

> Get StockX products, search and listing into Claude Code: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/claude-code/stockx · Updated 2026-10-21

Call the StockX API from Claude Code with one HTTPS request per operation: products, search and listing. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Claude Code
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Claude Code

1. Paste the prompt below into Claude Code in your project.
2. It signs itself up with one call, reads the operation list, quotes first and writes the code that calls the API.

## Products

prompt:

```text
Use https://apiforagents.dev for StockX data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/stockx.md for the operations. Call POST https://apiforagents.dev/v1/stockx with {"op":"products","subjects":["https://stockx.com/nike-dunk-low-retro-white-black-2021"],"country":"US"}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Search

prompt:

```text
Use https://apiforagents.dev for StockX data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/stockx.md for the operations. Call POST https://apiforagents.dev/v1/stockx with {"op":"search","query":"Air Jordan 1","country":"US","limit":20}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Listing

prompt:

```text
Use https://apiforagents.dev for StockX data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/stockx.md for the operations. Call POST https://apiforagents.dev/v1/stockx with {"op":"listing","subject":"https://stockx.com/brands/nike","country":"US","limit":20}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## StockX operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Listing | $0.0009 |

## Each operation in detail

- [StockX Product API](https://apiforagents.dev/platforms/stockx/product-api): inputs, fields, sample, price
- [StockX Search API](https://apiforagents.dev/platforms/stockx/search-api): inputs, fields, sample, price
- [StockX Listings API](https://apiforagents.dev/platforms/stockx/listings-api): inputs, fields, sample, price

## Questions

### Does Claude Code need an MCP server for this?

No. It makes plain HTTPS requests and writes the code that does, from the prompt alone.

### Where does the key live?

Claude Code signs the agent up itself and keeps its identity in a file you choose; add that file to .gitignore. Or make an API key in the console and put it in your environment.

### What does StockX data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=stockx (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Blinkit data in Claude Code. Pay per record.

> Get Blinkit products, search and category into Claude Code: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/claude-code/blinkit · Updated 2026-10-21

Call the Blinkit API from Claude Code with one HTTPS request per operation: products, search and category. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Claude Code
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Claude Code

1. Paste the prompt below into Claude Code in your project.
2. It signs itself up with one call, reads the operation list, quotes first and writes the code that calls the API.

## Products

prompt:

```text
Use https://apiforagents.dev for Blinkit data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/blinkit.md for the operations. Call POST https://apiforagents.dev/v1/blinkit with {"op":"products","subjects":["https://blinkit.com/prn/<product-name>/prid/<id>"],"store":{"city":"Bengaluru","pincode":"560001"}}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Search

prompt:

```text
Use https://apiforagents.dev for Blinkit data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/blinkit.md for the operations. Call POST https://apiforagents.dev/v1/blinkit with {"op":"search","query":"Amul butter","store":{"city":"Bengaluru","pincode":"560001"},"limit":20}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Category

prompt:

```text
Use https://apiforagents.dev for Blinkit data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/blinkit.md for the operations. Call POST https://apiforagents.dev/v1/blinkit with {"op":"category","category":"Atta, Rice & Dal","subCategory":"Atta","store":{"city":"Delhi","pincode":"110001"},"limit":50}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Blinkit operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Category | $0.0009 |

## Each operation in detail

- [Blinkit Price and Stock API](https://apiforagents.dev/platforms/blinkit/price-and-stock-api): inputs, fields, sample, price
- [Blinkit Search API](https://apiforagents.dev/platforms/blinkit/search-api): inputs, fields, sample, price
- [Blinkit Category API](https://apiforagents.dev/platforms/blinkit/category-api): inputs, fields, sample, price

## Questions

### Does Claude Code need an MCP server for this?

No. It makes plain HTTPS requests and writes the code that does, from the prompt alone.

### Where does the key live?

Claude Code signs the agent up itself and keeps its identity in a file you choose; add that file to .gitignore. Or make an API key in the console and put it in your environment.

### What does Blinkit data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=blinkit (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Swiggy Instamart data in Claude Code. Pay per record.

> Get Swiggy Instamart data into Claude Code: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/claude-code/instamart · Updated 2026-10-21

Call the Swiggy Instamart API from Claude Code with one HTTPS request per operation: products, search and category. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Claude Code
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Claude Code

1. Paste the prompt below into Claude Code in your project.
2. It signs itself up with one call, reads the operation list, quotes first and writes the code that calls the API.

## Products

prompt:

```text
Use https://apiforagents.dev for Swiggy Instamart data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/instamart.md for the operations. Call POST https://apiforagents.dev/v1/instamart with {"op":"products","subjects":["https://www.swiggy.com/instamart/item/<item-id>"],"store":{"city":"Delhi","pincode":"110001"}}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Search

prompt:

```text
Use https://apiforagents.dev for Swiggy Instamart data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/instamart.md for the operations. Call POST https://apiforagents.dev/v1/instamart with {"op":"search","query":"Maggi noodles","store":{"city":"Bengaluru","pincode":"560001"},"limit":20}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Category

prompt:

```text
Use https://apiforagents.dev for Swiggy Instamart data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/instamart.md for the operations. Call POST https://apiforagents.dev/v1/instamart with {"op":"category","category":"Atta, Rice and Dal","subCategory":"Atta","store":{"city":"Delhi","pincode":"110001"},"limit":50}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Swiggy Instamart operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Category | $0.0009 |

## Each operation in detail

- [Instamart Price and Stock API](https://apiforagents.dev/platforms/instamart/price-and-stock-api): inputs, fields, sample, price
- [Instamart Search API](https://apiforagents.dev/platforms/instamart/search-api): inputs, fields, sample, price
- [Instamart Category API](https://apiforagents.dev/platforms/instamart/category-api): inputs, fields, sample, price

## Questions

### Does Claude Code need an MCP server for this?

No. It makes plain HTTPS requests and writes the code that does, from the prompt alone.

### Where does the key live?

Claude Code signs the agent up itself and keeps its identity in a file you choose; add that file to .gitignore. Or make an API key in the console and put it in your environment.

### What does Swiggy Instamart data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=instamart (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Zepto data in Claude Code. Pay per record.

> Get Zepto products, search and category into Claude Code: one HTTPS call per operation, a free quote first, pay per record from $0.0009 per record.

Canonical: https://apiforagents.dev/integrations/claude-code/zepto · Updated 2026-10-21

Call the Zepto API from Claude Code with one HTTPS request per operation: products, search and category. Every call can be quoted free first, and you pay per record that comes back, from $0.0009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Claude Code
- Operations: 3
- Price: From $0.0009 per record
- Free to start: $0.10

## Set it up in Claude Code

1. Paste the prompt below into Claude Code in your project.
2. It signs itself up with one call, reads the operation list, quotes first and writes the code that calls the API.

## Products

prompt:

```text
Use https://apiforagents.dev for Zepto data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/zepto.md for the operations. Call POST https://apiforagents.dev/v1/zepto with {"op":"products","subjects":["https://www.zepto.com/pn/<product-name>/pvid/<id>"],"store":{"city":"Bengaluru","pincode":"560001"}}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Search

prompt:

```text
Use https://apiforagents.dev for Zepto data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/zepto.md for the operations. Call POST https://apiforagents.dev/v1/zepto with {"op":"search","query":"Tata Salt","store":{"city":"Delhi","pincode":"110001"},"limit":20}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Category

prompt:

```text
Use https://apiforagents.dev for Zepto data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/zepto.md for the operations. Call POST https://apiforagents.dev/v1/zepto with {"op":"category","category":"Atta Rice Oil Dals","subCategory":"Atta","store":{"city":"Bengaluru","pincode":"560001"},"limit":50}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Zepto operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Products | $0.0009 |
| Search | $0.0009 |
| Category | $0.0009 |

## Each operation in detail

- [Zepto Price and Stock API](https://apiforagents.dev/platforms/zepto/price-and-stock-api): inputs, fields, sample, price
- [Zepto Search API](https://apiforagents.dev/platforms/zepto/search-api): inputs, fields, sample, price
- [Zepto Category API](https://apiforagents.dev/platforms/zepto/category-api): inputs, fields, sample, price

## Questions

### Does Claude Code need an MCP server for this?

No. It makes plain HTTPS requests and writes the code that does, from the prompt alone.

### Where does the key live?

Claude Code signs the agent up itself and keeps its identity in a file you choose; add that file to .gitignore. Or make an API key in the console and put it in your environment.

### What does Zepto data cost?

Pay as you go, from $0.0009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=zepto (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Indeed data in Claude Code. Pay per record.

> Get Indeed search and jobs into Claude Code: one HTTPS call per operation, a free quote first, pay per record from $0.000045 per record.

Canonical: https://apiforagents.dev/integrations/claude-code/indeed · Updated 2026-10-21

Call the Indeed API from Claude Code with one HTTPS request per operation: search and jobs. Every call can be quoted free first, and you pay per record that comes back, from $0.000045 per record, from a prepaid balance with $0.10 free to start.

- Works with: Claude Code
- Operations: 2
- Price: From $0.000045 per record
- Free to start: $0.10

## Set it up in Claude Code

1. Paste the prompt below into Claude Code in your project.
2. It signs itself up with one call, reads the operation list, quotes first and writes the code that calls the API.

## Search

prompt:

```text
Use https://apiforagents.dev for Indeed data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/indeed.md for the operations. Call POST https://apiforagents.dev/v1/indeed with {"op":"search","query":"software engineer","location":"Austin, TX","country":"US","postedWithin":"7d","limit":10}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Jobs

prompt:

```text
Use https://apiforagents.dev for Indeed data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/indeed.md for the operations. Call POST https://apiforagents.dev/v1/indeed with {"op":"jobs","subjects":["https://www.indeed.com/viewjob?jk=<job-key>"],"country":"US"}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Indeed operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Search | $0.000045 |
| Jobs | $0.000045 |

## Each operation in detail

- [Indeed Jobs API](https://apiforagents.dev/platforms/indeed/jobs-api): inputs, fields, sample, price
- [Indeed Job Details API](https://apiforagents.dev/platforms/indeed/job-details-api): inputs, fields, sample, price

## Questions

### Does Claude Code need an MCP server for this?

No. It makes plain HTTPS requests and writes the code that does, from the prompt alone.

### Where does the key live?

Claude Code signs the agent up itself and keeps its identity in a file you choose; add that file to .gitignore. Or make an API key in the console and put it in your environment.

### What does Indeed data cost?

Pay as you go, from $0.000045 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=indeed (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Naukri data in Claude Code. Pay per record.

> Get Naukri search into Claude Code: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/claude-code/naukri · Updated 2026-10-21

Call the Naukri API from Claude Code with one HTTPS request per operation: search. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: Claude Code
- Operations: 1
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in Claude Code

1. Paste the prompt below into Claude Code in your project.
2. It signs itself up with one call, reads the operation list, quotes first and writes the code that calls the API.

## Search

prompt:

```text
Use https://apiforagents.dev for Naukri data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/naukri.md for the operations. Call POST https://apiforagents.dev/v1/naukri with {"op":"search","query":"data scientist","postedWithin":"7d","experience":"3","locations":["Bengaluru"],"limit":50}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Naukri operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Search | $0.0018 |

## Each operation in detail

- [Naukri Jobs API](https://apiforagents.dev/platforms/naukri/jobs-api): inputs, fields, sample, price

## Questions

### Does Claude Code need an MCP server for this?

No. It makes plain HTTPS requests and writes the code that does, from the prompt alone.

### Where does the key live?

Claude Code signs the agent up itself and keeps its identity in a file you choose; add that file to .gitignore. Or make an API key in the console and put it in your environment.

### What does Naukri data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=naukri (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Upwork data in Claude Code. Pay per record.

> Get Upwork search into Claude Code: one HTTPS call per operation, a free quote first, pay per record from $0.0027 per record.

Canonical: https://apiforagents.dev/integrations/claude-code/upwork · Updated 2026-10-21

Call the Upwork API from Claude Code with one HTTPS request per operation: search. Every call can be quoted free first, and you pay per record that comes back, from $0.0027 per record, from a prepaid balance with $0.10 free to start.

- Works with: Claude Code
- Operations: 1
- Price: From $0.0027 per record
- Free to start: $0.10

## Set it up in Claude Code

1. Paste the prompt below into Claude Code in your project.
2. It signs itself up with one call, reads the operation list, quotes first and writes the code that calls the API.

## Search

prompt:

```text
Use https://apiforagents.dev for Upwork data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/upwork.md for the operations. Call POST https://apiforagents.dev/v1/upwork with {"op":"search","query":"shopify developer","sort":"newest","experienceLevel":["expert"],"clientLocation":["United States"],"limit":10}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Upwork operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Search | $0.0027 |

## Each operation in detail

- [Upwork Jobs API](https://apiforagents.dev/platforms/upwork/jobs-api): inputs, fields, sample, price

## Questions

### Does Claude Code need an MCP server for this?

No. It makes plain HTTPS requests and writes the code that does, from the prompt alone.

### Where does the key live?

Claude Code signs the agent up itself and keeps its identity in a file you choose; add that file to .gitignore. Or make an API key in the console and put it in your environment.

### What does Upwork data cost?

Pay as you go, from $0.0027 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=upwork (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Contacts data in Claude Code. Pay per record.

> Get Contacts reveal into Claude Code: one HTTPS call per operation, a free quote first, pay per record priced per call.

Canonical: https://apiforagents.dev/integrations/claude-code/contacts · Updated 2026-10-21

Call the Contacts API from Claude Code with one HTTPS request per operation: reveal. Every call can be quoted free first, and you pay per record that comes back, priced per call, from a prepaid balance with $0.10 free to start.

- Works with: Claude Code
- Operations: 1
- Price: priced per call
- Free to start: $0.10

## Set it up in Claude Code

1. Paste the prompt below into Claude Code in your project.
2. It signs itself up with one call, reads the operation list, quotes first and writes the code that calls the API.

## Reveal

prompt:

```text
Use https://apiforagents.dev for Contacts data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/contacts.md for the operations. Call POST https://apiforagents.dev/v1/contacts with {"op":"reveal","subjects":["satyanadella"],"reveal":["email"]}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Contacts operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Reveal | quoted per call |

## Each operation in detail

- [Work Email and Phone API](https://apiforagents.dev/platforms/contacts/work-email-and-phone-api): inputs, fields, sample, price

## Questions

### Does Claude Code need an MCP server for this?

No. It makes plain HTTPS requests and writes the code that does, from the prompt alone.

### Where does the key live?

Claude Code signs the agent up itself and keeps its identity in a file you choose; add that file to .gitignore. Or make an API key in the console and put it in your environment.

### What does Contacts data cost?

Pay as you go, priced per call at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=contacts (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Google Maps data in Claude Code. Pay per record.

> Get Google Maps places, search and reviews into Claude Code: one HTTPS call per operation, a free quote first, pay per record from $0.000225 per record.

Canonical: https://apiforagents.dev/integrations/claude-code/google_maps · Updated 2026-10-21

Call the Google Maps API from Claude Code with one HTTPS request per operation: places, search and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.000225 per record, from a prepaid balance with $0.10 free to start.

- Works with: Claude Code
- Operations: 3
- Price: From $0.000225 per record
- Free to start: $0.10

## Set it up in Claude Code

1. Paste the prompt below into Claude Code in your project.
2. It signs itself up with one call, reads the operation list, quotes first and writes the code that calls the API.

## Places

prompt:

```text
Use https://apiforagents.dev for Google Maps data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/google_maps.md for the operations. Call POST https://apiforagents.dev/v1/google_maps with {"op":"places","subjects":["ChIJN1t_tDeuEmsRUsoyG83frY4"]}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Search

prompt:

```text
Use https://apiforagents.dev for Google Maps data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/google_maps.md for the operations. Call POST https://apiforagents.dev/v1/google_maps with {"op":"search","query":"coffee shop","location":"Seattle, WA","minRating":"4.5","limit":20}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Reviews

prompt:

```text
Use https://apiforagents.dev for Google Maps data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/google_maps.md for the operations. Call POST https://apiforagents.dev/v1/google_maps with {"op":"reviews","subjects":["ChIJN1t_tDeuEmsRUsoyG83frY4"],"sort":"newest","limit":25}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Google Maps operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Places | $0.000225 |
| Search | $0.000225 |
| Reviews | $0.000225 |

## Each operation in detail

- [Google Maps Places API](https://apiforagents.dev/platforms/google_maps/places-api): inputs, fields, sample, price
- [Google Maps Search API](https://apiforagents.dev/platforms/google_maps/search-api): inputs, fields, sample, price
- [Google Maps Reviews API](https://apiforagents.dev/platforms/google_maps/reviews-api): inputs, fields, sample, price

## Questions

### Does Claude Code need an MCP server for this?

No. It makes plain HTTPS requests and writes the code that does, from the prompt alone.

### Where does the key live?

Claude Code signs the agent up itself and keeps its identity in a file you choose; add that file to .gitignore. Or make an API key in the console and put it in your environment.

### What does Google Maps data cost?

Pay as you go, from $0.000225 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=google_maps (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Yelp data in Claude Code. Pay per record.

> Get Yelp businesses, search and reviews into Claude Code: one HTTPS call per operation, a free quote first, pay per record from $0.000225 per record.

Canonical: https://apiforagents.dev/integrations/claude-code/yelp · Updated 2026-10-21

Call the Yelp API from Claude Code with one HTTPS request per operation: businesses, search and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.000225 per record, from a prepaid balance with $0.10 free to start.

- Works with: Claude Code
- Operations: 3
- Price: From $0.000225 per record
- Free to start: $0.10

## Set it up in Claude Code

1. Paste the prompt below into Claude Code in your project.
2. It signs itself up with one call, reads the operation list, quotes first and writes the code that calls the API.

## Businesses

prompt:

```text
Use https://apiforagents.dev for Yelp data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/yelp.md for the operations. Call POST https://apiforagents.dev/v1/yelp with {"op":"businesses","subjects":["katzs-delicatessen-new-york"]}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Search

prompt:

```text
Use https://apiforagents.dev for Yelp data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/yelp.md for the operations. Call POST https://apiforagents.dev/v1/yelp with {"op":"search","query":"ramen","location":"San Francisco, CA","sort":"rating_high","priceLevels":["1","2"],"limit":20}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Reviews

prompt:

```text
Use https://apiforagents.dev for Yelp data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/yelp.md for the operations. Call POST https://apiforagents.dev/v1/yelp with {"op":"reviews","subjects":["katzs-delicatessen-new-york"],"limit":25}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Yelp operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Businesses | $0.000225 |
| Search | $0.000225 |
| Reviews | $0.000225 |

## Each operation in detail

- [Yelp Business API](https://apiforagents.dev/platforms/yelp/business-api): inputs, fields, sample, price
- [Yelp Search API](https://apiforagents.dev/platforms/yelp/search-api): inputs, fields, sample, price
- [Yelp Reviews API](https://apiforagents.dev/platforms/yelp/reviews-api): inputs, fields, sample, price

## Questions

### Does Claude Code need an MCP server for this?

No. It makes plain HTTPS requests and writes the code that does, from the prompt alone.

### Where does the key live?

Claude Code signs the agent up itself and keeps its identity in a file you choose; add that file to .gitignore. Or make an API key in the console and put it in your environment.

### What does Yelp data cost?

Pay as you go, from $0.000225 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=yelp (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Tripadvisor data in Claude Code. Pay per record.

> Get Tripadvisor data into Claude Code: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/claude-code/tripadvisor · Updated 2026-10-21

Call the Tripadvisor API from Claude Code with one HTTPS request per operation: hotels, restaurants, attractions and search hotels. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: Claude Code
- Operations: 7
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in Claude Code

1. Paste the prompt below into Claude Code in your project.
2. It signs itself up with one call, reads the operation list, quotes first and writes the code that calls the API.

## Hotels

prompt:

```text
Use https://apiforagents.dev for Tripadvisor data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/tripadvisor.md for the operations. Call POST https://apiforagents.dev/v1/tripadvisor with {"op":"hotels","subjects":["https://www.tripadvisor.com/Hotel_Review-<place-id>-Reviews-The_Plaza-New_York_City_New_York.html"],"currency":"USD","stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15"}}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Restaurants

prompt:

```text
Use https://apiforagents.dev for Tripadvisor data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/tripadvisor.md for the operations. Call POST https://apiforagents.dev/v1/tripadvisor with {"op":"restaurants","subjects":["https://www.tripadvisor.com/Restaurant_Review-<place-id>-Reviews-Katz_s_Delicatessen-New_York_City_New_York.html"]}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Attractions

prompt:

```text
Use https://apiforagents.dev for Tripadvisor data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/tripadvisor.md for the operations. Call POST https://apiforagents.dev/v1/tripadvisor with {"op":"attractions","subjects":["https://www.tripadvisor.com/Attraction_Review-<place-id>-Reviews-Statue_of_Liberty-New_York_City_New_York.html"]}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Search hotels

prompt:

```text
Use https://apiforagents.dev for Tripadvisor data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/tripadvisor.md for the operations. Call POST https://apiforagents.dev/v1/tripadvisor with {"op":"searchHotels","query":"Lisbon","currency":"EUR","limit":20,"stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15"}}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Tripadvisor operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Hotels | $0.0018 |
| Restaurants | $0.0018 |
| Attractions | $0.0018 |
| Search hotels | $0.0018 |
| Search restaurants | $0.0018 |
| Search attractions | $0.0018 |
| Reviews | $0.0018 |

## Each operation in detail

- [Tripadvisor Hotels API](https://apiforagents.dev/platforms/tripadvisor/hotels-api): inputs, fields, sample, price
- [Tripadvisor Restaurants API](https://apiforagents.dev/platforms/tripadvisor/restaurants-api): inputs, fields, sample, price
- [Tripadvisor Attractions API](https://apiforagents.dev/platforms/tripadvisor/attractions-api): inputs, fields, sample, price
- [Tripadvisor Hotel Search API](https://apiforagents.dev/platforms/tripadvisor/hotel-search-api): inputs, fields, sample, price
- [Tripadvisor Restaurant Search API](https://apiforagents.dev/platforms/tripadvisor/restaurant-search-api): inputs, fields, sample, price
- [Tripadvisor Attraction Search API](https://apiforagents.dev/platforms/tripadvisor/attraction-search-api): inputs, fields, sample, price
- [Tripadvisor Reviews API](https://apiforagents.dev/platforms/tripadvisor/reviews-api): inputs, fields, sample, price

## Questions

### Does Claude Code need an MCP server for this?

No. It makes plain HTTPS requests and writes the code that does, from the prompt alone.

### Where does the key live?

Claude Code signs the agent up itself and keeps its identity in a file you choose; add that file to .gitignore. Or make an API key in the console and put it in your environment.

### What does Tripadvisor data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tripadvisor (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Airbnb data in Claude Code. Pay per record.

> Get Airbnb listings and reviews into Claude Code: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/claude-code/airbnb · Updated 2026-10-21

Call the Airbnb API from Claude Code with one HTTPS request per operation: listings and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: Claude Code
- Operations: 2
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in Claude Code

1. Paste the prompt below into Claude Code in your project.
2. It signs itself up with one call, reads the operation list, quotes first and writes the code that calls the API.

## Listings

prompt:

```text
Use https://apiforagents.dev for Airbnb data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/airbnb.md for the operations. Call POST https://apiforagents.dev/v1/airbnb with {"op":"listings","subjects":["https://www.airbnb.com/rooms/<room-id>"],"stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15","adults":2,"currency":"USD"}}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Reviews

prompt:

```text
Use https://apiforagents.dev for Airbnb data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/airbnb.md for the operations. Call POST https://apiforagents.dev/v1/airbnb with {"op":"reviews","subjects":["https://www.airbnb.com/rooms/<room-id>"],"locale":"en-US","limit":25}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Airbnb operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Listings | $0.0018 |
| Reviews | $0.0018 |

## Each operation in detail

- [Airbnb Listings API](https://apiforagents.dev/platforms/airbnb/listings-api): inputs, fields, sample, price
- [Airbnb Reviews API](https://apiforagents.dev/platforms/airbnb/reviews-api): inputs, fields, sample, price

## Questions

### Does Claude Code need an MCP server for this?

No. It makes plain HTTPS requests and writes the code that does, from the prompt alone.

### Where does the key live?

Claude Code signs the agent up itself and keeps its identity in a file you choose; add that file to .gitignore. Or make an API key in the console and put it in your environment.

### What does Airbnb data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=airbnb (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Booking.com data in Claude Code. Pay per record.

> Get Booking.com properties, search and reviews into Claude Code: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/claude-code/booking · Updated 2026-10-21

Call the Booking.com API from Claude Code with one HTTPS request per operation: properties, search and reviews. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: Claude Code
- Operations: 3
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in Claude Code

1. Paste the prompt below into Claude Code in your project.
2. It signs itself up with one call, reads the operation list, quotes first and writes the code that calls the API.

## Properties

prompt:

```text
Use https://apiforagents.dev for Booking.com data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/booking.md for the operations. Call POST https://apiforagents.dev/v1/booking with {"op":"properties","subjects":["https://www.booking.com/hotel/gb/<hotel-name>.html"],"stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15","currency":"GBP"}}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Search

prompt:

```text
Use https://apiforagents.dev for Booking.com data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/booking.md for the operations. Call POST https://apiforagents.dev/v1/booking with {"op":"search","location":"Barcelona","stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15","currency":"EUR"},"minRating":8,"sort":"price_low","limit":20}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Reviews

prompt:

```text
Use https://apiforagents.dev for Booking.com data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/booking.md for the operations. Call POST https://apiforagents.dev/v1/booking with {"op":"reviews","subjects":["https://www.booking.com/hotel/gb/<hotel-name>.html"],"sort":"newest","scoreBands":["average","poor"],"limit":25}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Booking.com operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Properties | $0.0018 |
| Search | $0.0018 |
| Reviews | $0.0018 |

## Each operation in detail

- [Booking.com Hotels API](https://apiforagents.dev/platforms/booking/hotels-api): inputs, fields, sample, price
- [Booking.com Search API](https://apiforagents.dev/platforms/booking/search-api): inputs, fields, sample, price
- [Booking.com Reviews API](https://apiforagents.dev/platforms/booking/reviews-api): inputs, fields, sample, price

## Questions

### Does Claude Code need an MCP server for this?

No. It makes plain HTTPS requests and writes the code that does, from the prompt alone.

### Where does the key live?

Claude Code signs the agent up itself and keeps its identity in a file you choose; add that file to .gitignore. Or make an API key in the console and put it in your environment.

### What does Booking.com data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=booking (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Google data in Claude Code. Pay per record.

> Get Google search, news, images and shopping into Claude Code: one HTTPS call per operation, a free quote first, pay per record from $0.00009 per record.

Canonical: https://apiforagents.dev/integrations/claude-code/google · Updated 2026-10-21

Call the Google API from Claude Code with one HTTPS request per operation: search, news, images and shopping. Every call can be quoted free first, and you pay per record that comes back, from $0.00009 per record, from a prepaid balance with $0.10 free to start.

- Works with: Claude Code
- Operations: 5
- Price: From $0.00009 per record
- Free to start: $0.10

## Set it up in Claude Code

1. Paste the prompt below into Claude Code in your project.
2. It signs itself up with one call, reads the operation list, quotes first and writes the code that calls the API.

## Search

prompt:

```text
Use https://apiforagents.dev for Google data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/google.md for the operations. Call POST https://apiforagents.dev/v1/google with {"op":"search","query":"best CRM for startups","pages":1,"country":"US","language":"en"}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## News

prompt:

```text
Use https://apiforagents.dev for Google data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/google.md for the operations. Call POST https://apiforagents.dev/v1/google with {"op":"news","query":"electric vehicles","postedWithin":"7d","country":"US","language":"en","limit":20}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Images

prompt:

```text
Use https://apiforagents.dev for Google data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/google.md for the operations. Call POST https://apiforagents.dev/v1/google with {"op":"images","query":"Eiffel Tower at night","limit":20}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Shopping

prompt:

```text
Use https://apiforagents.dev for Google data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/platforms/google.md for the operations. Call POST https://apiforagents.dev/v1/google with {"op":"shopping","query":"Sony WH-1000XM5","country":"US","language":"en","limit":20}, quoting first with "estimateOnly": true and telling me the price. Keep the identity_assertion so you never sign up twice.
```

## Google operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Search | $0.0009 |
| News | $0.0018 |
| Images | $0.0009 |
| Shopping | $0.0027 |
| Play reviews | $0.00009 |

## Each operation in detail

- [Google Search API](https://apiforagents.dev/platforms/google/search-api): inputs, fields, sample, price
- [Google News API](https://apiforagents.dev/platforms/google/news-api): inputs, fields, sample, price
- [Google Images API](https://apiforagents.dev/platforms/google/images-api): inputs, fields, sample, price
- [Google Shopping API](https://apiforagents.dev/platforms/google/shopping-api): inputs, fields, sample, price
- [Google Play Reviews API](https://apiforagents.dev/platforms/google/play-store-reviews-api): inputs, fields, sample, price

## Questions

### Does Claude Code need an MCP server for this?

No. It makes plain HTTPS requests and writes the code that does, from the prompt alone.

### Where does the key live?

Claude Code signs the agent up itself and keeps its identity in a file you choose; add that file to .gitignore. Or make an API key in the console and put it in your environment.

### What does Google data cost?

Pay as you go, from $0.00009 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=google (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# A LinkedIn API built for AI agents.

> Give an AI agent LinkedIn data: it signs itself up in one call, gets an exact quote before each call and pays per record from $0.001. $0.10 free.

Canonical: https://apiforagents.dev/guides/linkedin-api-for-ai-agents · Updated 2026-10-16

Yes, an AI agent can use LinkedIn data without you building anything first. It reads https://apiforagents.dev/llms.txt, registers itself with one POST, starts on a $0.10 trial, quotes each call and reads public profiles, companies, people search, posts and jobs. No LinkedIn account and no MCP server needed: it is plain HTTPS.

- Sign-up: One POST
- Free trial: $0.10
- Profile: $0.004
- Your LinkedIn account: Not needed

## Why it fits an agent

- **It can start alone.** auth.md registration: one call returns an identity and a trial. A person claims the agent later with a code, only when it is time to pay.
- **It knows the price first.** estimateOnly returns the exact charge; maxUsd refuses anything above a ceiling. No surprise bills from a loop.
- **It knows what it does not know.** Every answer lists what was missing and why, when each row was measured, and what the call cost, so the agent does not invent the gaps.
- **It reads the docs as text.** llms.txt, a Markdown copy of every page (add .md) and an OpenAPI file. Nothing to scrape, nothing to guess.

## The prompt

paste into any agent:

```text
Use https://apiforagents.dev for LinkedIn data. Read https://apiforagents.dev/auth.md and sign yourself up with one call (new agents get $0.10 free). Read https://apiforagents.dev/llms.txt for the operations. Quote every paid call first with "estimateOnly": true, set "maxUsd" on every call, and tell me what each call cost.
```

## What it can look up

| Ask | Operation | Per record |
|---|---|---|
| Who is this person, where do they work now? | profiles | $0.004 |
| What does this company do, how big is it? | companies | $0.004 |
| Who are the heads of sales at these companies? | searchPeople | $0.004 |
| What has this person posted lately? | posts | $0.002 |
| Who commented on this post? | postComments | $0.002 |
| Who is hiring data engineers in Berlin? | jobs | $0.001 |

## Questions

### Does my agent need an MCP server?

No. Any agent that can make an HTTP request, or write and run code, can call the API directly. Coding agents like Claude Code and Cursor do this from one prompt.

### Will this get my LinkedIn account banned?

Your account is never involved: the API returns public data and never asks for your LinkedIn login, cookie or session.

### Can the agent spend without limit?

No. It spends a prepaid balance, maxUsd caps each call, and only a person can add money.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Is the LinkedIn API free? Partly. Here is what is.

> LinkedIn's open API is free but covers only sign-in and posting. Reading profiles, search and jobs needs a partner programme or a paid data API.

Canonical: https://apiforagents.dev/guides/is-the-linkedin-api-free · Updated 2026-10-16

LinkedIn's open permissions are free: Sign in with LinkedIn (the signed-in member's name, headline, photo and email) and Share on LinkedIn (post for that member). Everything else (other people's profiles, people search, company data, jobs) needs a LinkedIn partner programme, or a data API like this one at $0.004 a profile with a $0.10 free trial for agents.

- Sign-in, posting: Free
- Profiles, search: Partner or paid
- Here: $0.004 / profile
- Trial: $0.10

## Free or not, by what you need

| You need | LinkedIn's API | Here |
|---|---|---|
| Log users in with LinkedIn | Free | Not offered |
| Post for a signed-in user | Free | Not offered |
| Read any public profile | Partner programme | $0.004 |
| Search people | Partner programme | $0.004 per profile |
| Job listings | Talent partners | $0.001 per listing |

## The easiest way to try

Agents can start on a $0.10 trial with no card: that is about 25 profiles or 100 job listings. After that you top up from $5, with no subscription; unused money is kept.

## Questions

### Is the LinkedIn Sales Navigator API free?

No. Sales Navigator API access is for approved partners of LinkedIn's Sales Navigator Application Platform.

### Is there a free LinkedIn jobs API?

LinkedIn's job APIs are for approved talent partners. Here, job listings are $0.001 each, so 1,000 listings cost $1.

## Sources

1. [LinkedIn (Microsoft Learn): Getting Access to LinkedIn APIs](https://learn.microsoft.com/en-us/linkedin/shared/authentication/getting-access), seen 16 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn data without risking your account.

> Unofficial LinkedIn API libraries and browser tools run on your own login, and LinkedIn can restrict it. Get public profile data with no account involved.

Canonical: https://apiforagents.dev/guides/linkedin-data-without-risking-your-account · Updated 2026-10-16

Unofficial LinkedIn API libraries, browser extensions and automation tools usually work by logging in as you: your cookie, your session, your account. LinkedIn's user agreement prohibits automated access, and accounts that do it get restricted. An API that reads public pages never touches your account.

- Your login: Never asked
- Your cookie: Never asked
- Data: Public only
- Profile: $0.004

## Where the risk sits

| Approach | Runs as | Risk to your account |
|---|---|---|
| Unofficial API libraries | Your logged-in session | Yours: restrictions fall on the account used |
| Browser extensions and automation tools | Your browser and cookie | Yours |
| Account-based APIs | Each user's connected account | Each connected account |
| A public-data API (this one) | Nobody's account | None to your account |

## What you give up

- Anything behind a login: private profiles, your network, your inbox and messages.
- Actions: connecting, messaging, posting. Use LinkedIn's own API or tools on your account for those.

## Questions

### Can using an unofficial LinkedIn API get me banned?

It can get the account it runs on restricted. LinkedIn's user agreement prohibits scraping and automated access with your account; how strictly it acts varies.

### Does this API ever use my LinkedIn account?

No. It never asks for a LinkedIn login, password, cookie or session.

## Sources

1. [LinkedIn User Agreement](https://www.linkedin.com/legal/user-agreement), seen 16 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn's official API versus a data API.

> LinkedIn's official API is mostly partner-only: open access covers sign-in and posting. What a public LinkedIn data API covers instead, and when to use each.

Canonical: https://apiforagents.dev/guides/linkedin-official-api-vs-data-api · Updated 2026-10-16

Short answer: LinkedIn's own API, opened to any developer, covers signing a member in, reading that member's name, headline, photo and email, and posting for them. Searching people, reading other profiles, companies and jobs at scale needs a partner programme LinkedIn approves. A LinkedIn data API returns public profile, company, post and job data without that approval.

- Official, open to all: Sign-in, posting
- Official, approval needed: Marketing, Sales, Talent
- Data API: Public profiles, search, jobs
- Checked: Oct 2026

## What each can do

LinkedIn's side is from its developer documentation on Microsoft Learn, seen 16 October 2026.

| You want to | LinkedIn official API | LinkedIn data API (this one) |
|---|---|---|
| Sign a user in with LinkedIn | Yes, open to all | No |
| Post or comment as that user | Yes, open to all | No |
| Read any public profile by URL | Partner programmes only | Yes, $0.004 |
| Search people by title and company | Partner programmes only | Yes, $0.004 per profile |
| Read company pages | Partner programmes only | Yes, $0.004 |
| Search job listings | Talent partners only | Yes, $0.001 per listing |
| Read posts, comments, reactions | Mostly your own organisation's | Yes, $0.002 each |
| Read the LinkedIn Ad Library | No | Yes, $0.002 per ad |

## What LinkedIn opens to every developer

LinkedIn's documentation says most of its permissions and partner programmes need explicit approval, and that Open Permissions are the only ones available to all developers. Those are Sign in with LinkedIn (the member's name, headline, photo and email) and Share on LinkedIn (post, comment and like for the member who signed in).

Marketing permissions need approval as an Advertising API partner. Sales permissions need approval as a Sales Navigator Application Platform partner. Talent integrations, including jobs, go through an application to LinkedIn's talent partner programme.

## When the official API is the right tool

If your app signs people in with LinkedIn, posts for them, or you are an approved partner building an ads, sales or recruiting integration, use LinkedIn's API: it acts with the member's permission, on their own account.

If you need public data about people and companies who are not your users (to research accounts, enrich leads or watch hiring), a data API is the practical route. This one is pay as you go, from $0.001 per record.

> **Not affiliated** API for Agents is independent and is not affiliated with, endorsed by or a partner of LinkedIn. It returns public data only: nothing behind a login.

## Questions

### Is there a free LinkedIn API?

LinkedIn's open permissions (sign-in and posting) are free to use. They do not include searching or reading other people's profiles. Data APIs charge for that; here a profile is $0.004 and agents start with a free trial.

### Can I get people search through LinkedIn's API?

Only through a partner programme LinkedIn approves, such as the Sales Navigator Application Platform. It is not in the open permissions.

### Does a data API need my LinkedIn login?

Not this one. It returns public data and never asks for a LinkedIn account, password or cookie.

## Sources

1. [LinkedIn (Microsoft Learn): Getting Access to LinkedIn APIs](https://learn.microsoft.com/en-us/linkedin/shared/authentication/getting-access), seen 16 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Is scraping LinkedIn legal? What the cases say.

> hiQ v. LinkedIn, Meta v. Bright Data, Proxycurl and ProAPIs in plain words: what courts decided about public data, and what they did not. Not legal advice.

Canonical: https://apiforagents.dev/guides/is-linkedin-scraping-legal · Updated 2026-10-16

There is no one-line answer, and this page is not legal advice. In the United States, courts have said that reading public pages is not hacking under the federal anti-hacking law (hiQ v. LinkedIn, 2022), and that a site's terms may not reach logged-out visitors (Meta v. Bright Data, 2024). They have also let contract, fraud and trademark claims go forward against scrapers that used fake accounts (hiQ, Proxycurl, and ProAPIs in September 2026). How you collect and use data matters as much as whether it is public.

- hiQ v. LinkedIn: 2017 to 2022
- Meta v. Bright Data: Jan 2024
- LinkedIn v. ProAPIs: Sept 2026
- Legal advice: No

## The cases people cite

| Case | What happened | What it means |
|---|---|---|
| hiQ Labs v. LinkedIn (9th Cir., April 2022) | The appeals court again upheld an order stopping LinkedIn from blocking hiQ, finding hiQ raised serious questions that scraping public profiles is not access "without authorization" under the CFAA. | Reading public pages is unlikely to be a federal hacking crime. It did not settle contract or state-law claims. |
| hiQ Labs v. LinkedIn (N.D. Cal., Dec 2022) | After a ruling on LinkedIn's contract claim, the parties settled; a consent judgment of $500,000 was entered against hiQ. hiQ had used fake accounts for some collection. | Breaking a site's user agreement, especially with logged-in or fake accounts, can still cost you. The consent judgment is not precedent. |
| Meta v. Bright Data (N.D. Cal., Jan 2024) | The court granted Bright Data summary judgment on Meta's contract claim, finding it had only scraped logged-out, public data. Meta later dropped the case. | Terms of use may not bind visitors who never log in. One district court; not binding elsewhere. |
| LinkedIn v. ProAPIs (N.D. Cal., Sept 2026) | LinkedIn sued ProAPIs and Netswift in 2025 over scraping with fake accounts and reselling member, company, post, comment and reaction data. A consent judgment requires them to stop scraping, stop selling the data, stop using fake accounts and delete what they hold. | Reselling scraped LinkedIn data at scale through fake accounts is where LinkedIn keeps winning. |
| LinkedIn v. Proxycurl (2025) | LinkedIn sued in January 2025 alleging unauthorised scraping, fraud and trademark misuse. Proxycurl shut down on 4 July 2025; LinkedIn announced the case resolved. | Fake accounts and implied endorsement are where providers have lost. Pick one that uses neither. |

## Questions to ask any LinkedIn data provider

- Do you read only public pages, or log in with accounts?
- Do you ever need my LinkedIn login, cookie or session?
- Do you claim to be LinkedIn's partner or the official LinkedIn API?
- Does each record say when it was measured, so I can keep data current?
- Can you delete what you hold about a person if they ask?

## How this API works

API for Agents returns public data only: nothing behind a login, never with your LinkedIn account. It is not affiliated with LinkedIn and does not claim to be. Every record carries the time it was measured. What you do with the data, including privacy law in your country (GDPR, CCPA and others), is your responsibility; our terms say what is allowed.

> **Not legal advice** This page summarises public reporting on court cases for general information. Laws differ by country and change. Ask a lawyer about your own use.

## Questions

### Did hiQ win against LinkedIn?

On the federal hacking question, the appeals court sided with hiQ in 2019 and again in 2022. But hiQ lost on breach of contract, and the case ended in December 2022 with a $500,000 consent judgment against hiQ.

### Is public LinkedIn data covered by GDPR?

Yes, if it is personal data about people in the EU or UK, being public does not take it outside GDPR. You need a lawful basis for processing, and people keep their rights. Ask a lawyer about your use.

### Why did Proxycurl shut down?

LinkedIn sued it in January 2025, alleging unauthorised scraping, fraud and trademark misuse. Its founder announced the shutdown on 4 July 2025 to comply with the settlement.

## Sources

1. [Proskauer: hiQ and LinkedIn reach proposed settlement](https://newmedialaw.proskauer.com/2022/12/08/hiq-and-linkedin-reach-proposed-settlement-in-landmark-scraping-case/), seen 16 October 2026
2. [Morgan Lewis: LinkedIn v. hiQ, guidance to scrapers and web operators](https://www.morganlewis.com/blogs/sourcingatmorganlewis/2022/12/linkedin-v-hiq-landmark-data-scraPing-suit-provides-guidance-to-data-scrapers-and-web-operators), seen 16 October 2026
3. [Farella Braun + Martel: Meta Platforms v. Bright Data](https://www.fbm.com/post/102kqw7/), seen 16 October 2026
4. [Nubela: Goodbye Proxycurl](https://nubela.co/blog/goodbye-proxycurl/), seen 16 October 2026
5. [LinkedIn newsroom on the Proxycurl case](https://news.linkedin.com/2025/LinkedInWinsLegalBattleToProtectMemberData), seen 16 October 2026
6. [The Record: LinkedIn wins court order blocking mass scraping (21 Sept 2026)](https://therecord.media/linkedin-wins-court-order-blocking-mass-scraping), seen 16 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# How to choose a LinkedIn data API in 2026.

> Five kinds of LinkedIn data API, how each charges, what it needs from you and who it suits: marketplaces, datasets, account APIs, per-record APIs.

Canonical: https://apiforagents.dev/guides/how-to-choose-a-linkedin-data-api · Updated 2026-10-16

LinkedIn data APIs come in five kinds, and the kind matters more than the brand: how you pay (per record, per hour, per account or per month), whether you need your own LinkedIn account, and whether data is fetched when you ask or read from a stored set.

- Kinds: 5
- Our kind: Per record
- Profiles here: $0.004
- Start: $5

## The five kinds

| Kind | How you pay | Your LinkedIn account | Suits |
|---|---|---|---|
| Per-record APIs (this one) | Per profile, company, post or job; prepaid balance | Not needed | Agents, products and scripts with variable volume |
| Scraper marketplaces | Per run or per result, set by each scraper's author; often a monthly plan | Usually not | Teams that want many sources and will compare scrapers |
| Stored datasets | Monthly credits or bulk licences | Not needed | Bulk analysis, large steady volume |
| Account-based APIs | Per connected account or seat, monthly | Yes, each user's | Messaging and inbox products |
| Automation tools | Monthly plans by execution time | Often your session | No-code workflows on your own account |

## Seven questions that decide it

1. What is the smallest amount I must pay to start, and does unused money expire?
2. Is the price per record, and can I see the exact price before a call?
3. Do I need to connect a LinkedIn account or share a cookie?
4. Is the data fetched when I ask, or read from a stored set, and does each row say when?
5. What happens when a profile is not found: am I charged?
6. Can my agent sign itself up and stay inside a budget?
7. Does the provider claim to be LinkedIn's partner? (If it is not, it should not.)

## Our answers

| Question | API for Agents |
|---|---|
| Smallest amount to start | $5; agents get a $0.10 trial first. Money is kept. |
| Price per record, quoted | Yes: $0.001 to $0.004, exact quote with estimateOnly, free |
| Your LinkedIn account | Never |
| Freshness | Every row says when it was measured and whether it was fresh or cached |
| Not found | Refunded and named in coverage |
| Agent self-signup and budget | One POST to sign up; maxUsd caps each call |
| LinkedIn partner | No, and we do not claim to be |

## Questions

### What is the best LinkedIn data API?

The one whose kind matches your volume and workflow. For agents and variable volume, a per-record API with quotes; for huge steady volume, a dataset or high-volume plan; for acting on your own account, an account-based API.

### What should a LinkedIn profile cost by API?

Published prices range from about a tenth of a cent to tens of cents per profile depending on volume and kind. Here it is $0.004, pay as you go.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# LinkedIn API pricing: what the data costs.

> What LinkedIn profiles, companies, posts and jobs cost by API, per record, and what common jobs cost: 1,000 leads for $4, a month of job signals for $1.50.

Canonical: https://apiforagents.dev/guides/linkedin-api-pricing · Updated 2026-10-16

LinkedIn's own API has no public price list; access beyond sign-in and posting goes through partner programmes. Data APIs publish prices. Here: $0.004 per profile, $0.004 per company, $0.002 per post, comment, reaction or ad, $0.001 per job. Pay as you go from $5, no plan.

- Profile: $0.004
- Company: $0.004
- Post: $0.002
- Job: $0.001

## Every LinkedIn operation, per record

Prices as of 2026-10-21. The live list is GET https://apiforagents.dev/v1/platforms, free.

| Operation | You get | Per record |
|---|---|---|
| profiles | A person: headline, location, skills, positions | $0.004 |
| companies | A company: size, industry, website, followers | $0.004 |
| searchPeople | People matching title, company, location | $0.004 per profile |
| searchCompanies | Companies matching keyword and filters | $0.004 per company |
| posts | A person's or company's posts | $0.002 |
| searchPosts | Posts matching a keyword | $0.002 |
| postComments, profileComments | Comments | $0.002 |
| postReactions, profileReactions | Reactions | $0.002 |
| adsLibrary | Ads from the LinkedIn Ad Library | $0.002 |
| jobs | Job listings | $0.001 |

## What common jobs cost

| Job | Records | Cost |
|---|---|---|
| Enrich 1,000 leads | 1,000 profiles | $4.00 |
| 250 decision makers at 25 accounts | 275 records | $1.10 |
| A month of daily hiring scans, 50 jobs a day | 1,500 jobs | $1.50 |
| An account brief: company, 10 leaders, 15 posts, 20 jobs | 46 records | $0.094 |

## What you are not charged for

- Quotes (estimateOnly), your balance and your history.
- A record your account already fetched the same day.
- A subject that did not come back: refunded and named.
- A call that fails on our side.

## Questions

### How much does the LinkedIn API cost?

LinkedIn does not publish prices for its partner APIs; access is by application. Third-party data APIs publish theirs: here, $0.004 per profile, $0.001 per job, pay as you go from $5.

### Is there a monthly fee?

No. You top up from $5 and spend per record. Unused money is kept.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# How an AI agent signs up for an API by itself.

> An agent registers with one POST, gets a token and a free trial, and a person claims it later with a code. The auth.md flow, step by step, with code.

Canonical: https://apiforagents.dev/guides/how-ai-agents-sign-up-for-apis · Updated 2026-10-16

Most APIs need a person to sign up, verify an email and paste a key before an agent can do anything. Here the agent registers itself with one request, starts on a free trial, and a person claims it later with a six-digit code when it is time to pay.

- Calls to start: 2
- Free trial: $0.10
- Person needed: To pay
- Protocol: auth.md

## The flow

1. The agent reads https://apiforagents.dev/auth.md, which says how to register.
2. It sends POST /agent/identity with type anonymous and gets an identity_assertion (a signed JWT) and a claim token.
3. It exchanges the identity_assertion at /oauth2/token for a bearer token, and again whenever the token expires.
4. It quotes and runs calls on the trial.
5. When the trial runs out, it hands a person a claim link; the person signs in, enters the six-digit code and tops up.

## The two calls

bash:

```bash
curl -s -X POST https://apiforagents.dev/agent/identity -H "Content-Type: application/json" -d '{"type":"anonymous"}'
curl -s -X POST https://apiforagents.dev/oauth2/token \
  -d "grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion=$IDENTITY_ASSERTION"
```

## What keeps it safe

- **Limited trials.** One trial per address per day and a daily ceiling across everyone, so free credit cannot be farmed.
- **A person pays.** An agent can spend what it has; it cannot add money. Top-ups are paid by a person through a link.
- **Per-call ceilings.** maxUsd on any call makes the API refuse anything above it, before spending.

## Questions

### What is auth.md?

A short Markdown file at a known path that tells an agent how to register for an API and get credentials without a person filling a form.

### Should the agent register every time it runs?

No. Keep the identity_assertion and exchange it for a new token when needed. Registering again starts a new identity without the old balance.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Stop an AI agent overspending on APIs.

> Quote before every call, cap each call with maxUsd, fund a balance instead of a card, and read what each answer cost. Four controls for agent spend.

Canonical: https://apiforagents.dev/guides/stop-ai-agents-overspending · Updated 2026-10-16

An agent in a loop can spend a month's budget in minutes. Four controls stop that: an exact quote before each paid call, a hard per-call ceiling, a prepaid balance instead of an open card, and a cost line in every answer the agent can log.

- Quote: Free
- Per-call cap: maxUsd
- Balance: Prepaid
- Cost: In every answer

## 1. Quote first

json:

```json
{
  "op": "searchPeople",
  "company": "stripe",
  "titles": [
    "Head of Data"
  ],
  "limit": 25,
  "estimateOnly": true
}
```

## 2. Cap the call

json:

```json
{
  "op": "searchPeople",
  "company": "stripe",
  "titles": [
    "Head of Data"
  ],
  "limit": 25,
  "maxUsd": 0.1
}
```

## 3. Fund a balance, not a card

The agent spends from a prepaid balance a person tops up from $5. When it runs low the API answers payment_required with a top-up link for a person, and the agent stops. It can never add money itself.

## 4. Log the cost line

Every answer carries cost.usd (what was charged) and the balance left. Have the agent report both after each step so you see spend as it happens.

> **Put it in the prompt** Tell the agent: quote every paid call first with estimateOnly, tell me the price, set maxUsd on every call, and stop when the API asks for a top-up.

## Questions

### What happens if a call would cost more than maxUsd?

The API refuses it with budget_exceeded before spending anything, and returns the quote so the agent can ask you.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Is the YouTube API free? There is no price list, but there is a quota.

> Google's docs give the YouTube Data API a daily quota, not a price list: 10,000 units a day by default, and more only after an audit.

Canonical: https://apiforagents.dev/guides/is-the-youtube-api-free · Updated 2026-10-21

Mostly, in money terms. Google's documentation for the YouTube Data API describes a daily quota rather than a price list: by default 10,000 units a day for most calls, plus separate buckets of 100 searches and 100 uploads, as of October 2026. The real cost is the quota, and more quota needs a compliance audit.

- Default quota: 10,000 units / day
- search.list: 100 calls / day
- More quota: After an audit
- Checked: Oct 2026

## Official API or this one

YouTube's side is from Google's developer documentation, seen 21 October 2026.

|  | YouTube Data API | API for Agents |
|---|---|---|
| Public channels, videos, comments | Yes, with an API key | Yes |
| Upload, manage playlists, reply as a channel | Yes, with the owner's OAuth consent | No |
| Daily limit | 10,000 units, plus 100 searches and 100 uploads | Priced per record; you top up as you go |
| Who can get access | Anyone with a Google account and a Cloud project | Anyone. An agent signs itself up in one call and starts on a $0.10 trial |
| Price model | No price list in the docs; a daily quota | Pay as you go, from $0.00045 per record |
| Setup | Cloud project, enable the API, create a key | One API key. No YouTube account or app review |

## How the quota works

Every project that enables the YouTube Data API gets a default allocation. Google's quota page says it is 100 search.list calls, 100 videos.insert calls and 10,000 units a day for all other endpoints combined. Reading a list of channels, videos or comment threads costs 1 unit a call. The quota resets at midnight Pacific Time.

Since 1 June 2026, search.list and videos.insert have their own buckets at 1 unit per call. Before that a search cost 100 units from the shared pool, so older guides that say a project can only run about 100 searches a day from its 10,000 units are describing the old rule.

To go past the default you fill in the YouTube API Services Audit and Quota Extension Form. Google says you must first complete an audit of your use against its terms.

## When the official API is the right tool

If you upload videos, manage a channel's playlists, reply to comments as a channel or build an app that people sign in to with their Google account, use the YouTube Data API. It acts with the owner's permission, which no data API can do.

It is also a good fit for small, steady reads of public data that stay inside the quota. Where it gets hard is volume: many channels, deep comment threads or many searches a day, each of which spends quota you then have to apply for.

## What you can get here

- **[YouTube Channel API](https://apiforagents.dev/platforms/youtube/channel-api).** Subscribers, total views, video count, country and description for up to ten channels per call.
- **[YouTube Videos API](https://apiforagents.dev/platforms/youtube/videos-api).** A channel's recent videos with views, likes, comments, duration and publish date.
- **[YouTube Comments API](https://apiforagents.dev/platforms/youtube/comments-api).** Top comments on videos and Shorts by URL or id, with author, text, likes and replies.

> **Not affiliated** API for Agents is independent and is not affiliated with or endorsed by YouTube or Google. It returns public data only: nothing behind a login.

## Operation pages

- [YouTube Channel API](https://apiforagents.dev/platforms/youtube/channel-api)
- [YouTube Videos API](https://apiforagents.dev/platforms/youtube/videos-api)
- [YouTube Comments API](https://apiforagents.dev/platforms/youtube/comments-api)

## Questions

### Does the YouTube Data API cost money?

Google's YouTube Data API documentation describes quota, not prices, as of October 2026. Check the current terms before you rely on that for a commercial product.

### How many searches can I run per day?

By default 100 search.list calls a day, in their own bucket, since a change on 1 June 2026. Other reads come out of a separate pool of 10,000 units a day.

### How do I get more YouTube API quota?

Through the YouTube API Services Audit and Quota Extension Form. Google says an audit of your use comes first.

### Does the YouTube API need OAuth?

Not for public data: an API key is enough. OAuth is for private user data and for acting on a channel, such as uploads.

### What does a YouTube lookup cost here?

Priced per record, from $0.00045 per record. Quote any call first with estimateOnly, which is free.

## Sources

1. [YouTube Data API: Quota calculator](https://developers.google.com/youtube/v3/determine_quota_cost), seen 21 October 2026
2. [YouTube Data API: Revision history (1 June 2026)](https://developers.google.com/youtube/v3/revision_history), seen 21 October 2026
3. [YouTube API Services: Quota and compliance audits](https://developers.google.com/youtube/v3/guides/quota_and_compliance_audits), seen 21 October 2026
4. [YouTube Data API: Getting started](https://developers.google.com/youtube/v3/getting-started), seen 21 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# YouTube API quota exceeded? What the limits are and what to do.

> The YouTube Data API allows 10,000 units a day plus 100 searches by default. How to stretch it, how to get more, and when a per-record data API fits.

Canonical: https://apiforagents.dev/guides/youtube-api-quota-and-alternatives · Updated 2026-10-21

You have three options: spend fewer units per answer, apply for more quota through Google's audit form, or read public YouTube data from a per-record API instead. As of October 2026 the default is 10,000 units a day, with search.list and uploads in their own buckets of 100 calls each.

- Shared pool: 10,000 units / day
- Searches: 100 / day
- List calls: 1 unit each
- Reset: Midnight Pacific

## Ways past the quota

Quota figures from Google's YouTube Data API documentation, seen 21 October 2026.

|  | Stay on the YouTube Data API | API for Agents |
|---|---|---|
| How you get more | Apply through the Audit and Quota Extension Form | Top up your balance |
| Searching | 100 search.list calls a day by default | Not offered for YouTube; read channels you already know |
| Comments at volume | 1 unit per commentThreads.list page | $0.00045 per record |
| Who can get access | Google account and Cloud project | Anyone. An agent signs itself up in one call and starts on a $0.10 trial |
| Price model | Quota; the docs list no prices | Pay as you go, from $0.00045 per record |
| Setup | Cloud project, key, then the audit for more | One API key. No YouTube account or app review |

## Stretch the quota you have

- Use list calls by id (videos.list, channels.list) where you can: they cost 1 unit each.
- Batch ids into one request instead of one call per video.
- Each extra page of a paged result is another call, so ask only for the pages you need.
- Cache what you already fetched and refresh it on a schedule, inside what YouTube's terms allow.

## When to stay on the official API

Stay if your app uploads, edits or moderates for a channel owner, or if your reads fit in the default quota. The audit is worth doing for a long-lived product built on YouTube.

A per-record API fits when you need public data on many channels or deep comment threads now, and an agent should not stop when a daily counter runs out.

## What you can get here

- **[YouTube Channel API](https://apiforagents.dev/platforms/youtube/channel-api).** Subscribers, total views, video count, country and description for up to ten channels per call.
- **[YouTube Videos API](https://apiforagents.dev/platforms/youtube/videos-api).** A channel's recent videos with views, likes, comments, duration and publish date.
- **[YouTube Comments API](https://apiforagents.dev/platforms/youtube/comments-api).** Top comments on videos and Shorts by URL or id, with author, text, likes and replies.

## Operation pages

- [YouTube Channel API](https://apiforagents.dev/platforms/youtube/channel-api)
- [YouTube Videos API](https://apiforagents.dev/platforms/youtube/videos-api)
- [YouTube Comments API](https://apiforagents.dev/platforms/youtube/comments-api)

## Questions

### What happens when I exceed the YouTube API quota?

Calls that need quota fail until the quota resets at midnight Pacific Time. Google's docs show the quota per project in the Cloud console.

### Does a search still cost 100 units?

No. Since 1 June 2026 search.list has its own bucket of 100 calls a day at 1 unit each, per Google's revision history.

### Can I create more projects to get more quota?

Check the current YouTube API Services terms before you try. The documented route to more quota is the audit and extension form.

### Can this API search YouTube by keyword?

Not today. It reads channels, their recent videos and the comments on videos you name. Use the Google Search API with a site filter to find channels first.

## Sources

1. [YouTube Data API: Quota calculator](https://developers.google.com/youtube/v3/determine_quota_cost), seen 21 October 2026
2. [YouTube Data API: Revision history (1 June 2026)](https://developers.google.com/youtube/v3/revision_history), seen 21 October 2026
3. [YouTube API Services: Quota and compliance audits](https://developers.google.com/youtube/v3/guides/quota_and_compliance_audits), seen 21 October 2026
4. [YouTube Data API: Obtaining authorization credentials](https://developers.google.com/youtube/registering_an_application), seen 21 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Google Maps API pricing Free caps per SKU, then a price per 1,000.

> Since March 2025 each Google Maps Platform SKU has a free monthly cap (10,000, 5,000 or 1,000 calls), then a price per 1,000. What Places calls cost.

Canonical: https://apiforagents.dev/guides/google-maps-api-pricing · Updated 2026-10-21

It depends on the SKU. Since 1 March 2025 Google Maps Platform gives each core SKU a free monthly cap instead of the old $200 credit: 10,000 calls for Essentials, 5,000 for Pro and 1,000 for Enterprise. After that, as of October 2026, a Place Details Pro call is $17 per 1,000 and reviews sit in the dearest tier.

- Essentials free: 10,000 / month
- Pro free: 5,000 / month
- Enterprise free: 1,000 / month
- Billing account: Required

## Places API (New) list prices

First paid tier per 1,000 calls, from Google's pricing list, seen 21 October 2026. Volume tiers are cheaper.

| SKU | Free each month | Then per 1,000 |
|---|---|---|
| Place Details Essentials | 10,000 | $5.00 |
| Place Details Pro | 5,000 | $17.00 |
| Place Details Enterprise | 1,000 | $20.00 |
| Place Details Enterprise + Atmosphere (includes reviews) | 1,000 | $25.00 |
| Text Search Pro | 5,000 | $32.00 |
| Text Search Enterprise + Atmosphere | 1,000 | $40.00 |
| Nearby Search Pro | 5,000 | $32.00 |

## Official API or this one

|  | Google Maps Platform | API for Agents |
|---|---|---|
| Reviews per place | Up to 5, sorted by relevance | Up to 100 per call, newest or by rating, $0.000225 per record |
| Storing results | Place IDs may be kept; other content has limits in the terms | Your rows are yours to keep |
| Maps, routes, geocoding | Yes | No |
| Who can get access | Anyone with a Cloud project and billing enabled | Anyone. An agent signs itself up in one call and starts on a $0.10 trial |
| Price model | Free cap per SKU, then per 1,000 calls | Pay as you go, from $0.000225 per record |
| Setup | Cloud project, billing account, API key | One API key. No Google Maps account or app review |

## When Google's API is the right tool

If you show a map, autocomplete addresses, route people or put place details in front of users inside your app, use Google Maps Platform. Those are what it is built and licensed for, and the free caps cover a lot of small apps.

A data API fits a different job: building a list of businesses in an area, reading many reviews per place, or keeping the rows to analyse later.

## What you can get here

- **[Google Maps Search API](https://apiforagents.dev/platforms/google_maps/search-api).** Every business for a keyword in a location, with rating, phone, address and category.
- **[Google Maps Places API](https://apiforagents.dev/platforms/google_maps/places-api).** Full details for known places: rating, review count, category, address, phone, website and hours.
- **[Google Maps Reviews API](https://apiforagents.dev/platforms/google_maps/reviews-api).** Review text, stars, date, reviewer and owner response, sorted newest or by rating.

> **Not affiliated** API for Agents is independent and is not affiliated with or endorsed by Google. It returns public data only: nothing behind a login.

## Operation pages

- [Google Maps Search API](https://apiforagents.dev/platforms/google_maps/search-api)
- [Google Maps Places API](https://apiforagents.dev/platforms/google_maps/places-api)
- [Google Maps Reviews API](https://apiforagents.dev/platforms/google_maps/reviews-api)

## Questions

### Is the $200 Google Maps credit gone?

Yes. Google's billing FAQ says that from 1 March 2025 the $200 monthly credit was replaced by a free monthly usage threshold for each core SKU.

### Do I need a credit card for the Google Maps API?

To use the Places API you must enable billing on your project, per Google's usage and billing page. Google also offers a demo key for trying it.

### Why are reviews more expensive?

Asking for the reviews field puts a Place Details, Text Search or Nearby Search call in the Enterprise + Atmosphere SKU, the highest tier.

### What does Google Maps data cost here?

Priced per record, from $0.000225 per record. Quote any call first with estimateOnly, which is free.

## Sources

1. [Google Maps Platform: Pricing list](https://developers.google.com/maps/billing-and-pricing/pricing), seen 21 October 2026
2. [Google Maps Platform: Billing and pricing FAQ (March 2025 changes)](https://developers.google.com/maps/billing-and-pricing/faq), seen 21 October 2026
3. [Places API: Usage and billing](https://developers.google.com/maps/documentation/places/web-service/usage-and-billing), seen 21 October 2026
4. [Places API (New): Data fields and SKUs](https://developers.google.com/maps/documentation/places/web-service/data-fields), seen 21 October 2026
5. [Places API (New): Place resource, reviews field](https://developers.google.com/maps/documentation/places/web-service/reference/rest/v1/places), seen 21 October 2026
6. [Google Maps Platform: Pricing overview](https://mapsplatform.google.com/pricing/), seen 21 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Google Places API versus a Google Maps data API.

> Google's Places API returns up to 5 reviews per place and limits what you store. When it is the right tool, and when a per-record Maps data API fits.

Canonical: https://apiforagents.dev/guides/google-places-api-vs-data-api · Updated 2026-10-21

Use Google's Places API to show places inside your app; use a data API to collect places and reviews for analysis. As of October 2026 the Places API returns at most 5 reviews per place, and Google's policies let you store place IDs indefinitely but limit other content.

- Reviews per place: Up to 5 (Places API)
- Stored forever: Place IDs only
- Billing: Required
- Checked: Oct 2026

## What each is for

Google's side is from its Places API documentation, seen 21 October 2026.

|  | Google Places API (New) | API for Agents |
|---|---|---|
| Search businesses by keyword and area | Text Search and Nearby Search | Yes |
| Place details | Yes, priced by the fields you ask for | Yes |
| Reviews | Up to 5 per place, by relevance | Up to 100 per call, newest or by rating, $0.000225 per record |
| Autocomplete, photos, maps in your UI | Yes | No |
| Keeping the data | Place IDs only, without limits | Your rows are yours to keep |
| Who can get access | Anyone with a Cloud project and billing | Anyone. An agent signs itself up in one call and starts on a $0.10 trial |
| Price model | Per 1,000 calls by SKU, with a free monthly cap | Pay as you go, from $0.000225 per record |
| Setup | Cloud project, billing, API key, field masks | One API key. No Google Maps account or app review |

## When the Places API is the right choice

Pick Google's API when the place data is shown to a user in your product: a store finder, an address box, a booking flow. It is fast, documented and covered by Google's licence for that use, including the attribution rules.

Pick a data API when the output is a dataset: every dentist in a city with ratings, the last hundred reviews of each competitor, a weekly check on a list of venues. That is where five reviews and the storage rules get in the way.

## What you can get here

- **[Google Maps Search API](https://apiforagents.dev/platforms/google_maps/search-api).** Every business for a keyword in a location, with rating, phone, address and category.
- **[Google Maps Places API](https://apiforagents.dev/platforms/google_maps/places-api).** Full details for known places: rating, review count, category, address, phone, website and hours.
- **[Google Maps Reviews API](https://apiforagents.dev/platforms/google_maps/reviews-api).** Review text, stars, date, reviewer and owner response, sorted newest or by rating.

> **Not affiliated** API for Agents is independent and is not affiliated with or endorsed by Google. It returns public data only: nothing behind a login.

## Operation pages

- [Google Maps Search API](https://apiforagents.dev/platforms/google_maps/search-api)
- [Google Maps Places API](https://apiforagents.dev/platforms/google_maps/places-api)
- [Google Maps Reviews API](https://apiforagents.dev/platforms/google_maps/reviews-api)

## Questions

### How many reviews does the Google Places API return?

At most 5 per place, sorted by relevance, according to the Place resource reference, as of October 2026.

### Can I store Google Places data?

Google's policies say place IDs are exempt from caching limits and can be stored indefinitely. For other fields, check the current Google Maps Platform terms.

### Does this API return Google place IDs?

Yes. Each place comes back with its place id, cid and place URL, so you can match rows with your own records.

### Can I search a whole city?

Yes. The search operation takes a keyword and a location and returns up to 100 businesses per call.

## Sources

1. [Places API (New): Place resource, reviews field](https://developers.google.com/maps/documentation/places/web-service/reference/rest/v1/places), seen 21 October 2026
2. [Places API: Policies and attributions](https://developers.google.com/maps/documentation/places/web-service/policies), seen 21 October 2026
3. [Places API (New): Data fields and SKUs](https://developers.google.com/maps/documentation/places/web-service/data-fields), seen 21 October 2026
4. [Places API: Usage and billing](https://developers.google.com/maps/documentation/places/web-service/usage-and-billing), seen 21 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# A Google Search API for AI agents.

> Google's Custom Search JSON API is closed to new customers and ends for existing ones on 1 January 2027. How an agent can still read Google results.

Canonical: https://apiforagents.dev/guides/google-search-api-for-ai-agents · Updated 2026-10-21

Not from Google's own JSON API, if you are new. As of October 2026 Google says its Custom Search JSON API is closed to new customers, and existing customers have until 1 January 2027 to move to something else. An agent can still read Google web, news, image and shopping results as JSON, priced per page or per row.

- Custom Search JSON API: Closed to new customers
- Existing customers: Until 1 Jan 2027
- Here: Web, news, images, shopping
- Checked: Oct 2026

## Google's API or this one

Google's side is from its Custom Search JSON API overview, seen 21 October 2026.

|  | Custom Search JSON API | API for Agents |
|---|---|---|
| New sign-ups | Closed | Open |
| Free use | 100 queries a day, for existing customers | A $0.10 trial for new agents |
| Daily cap | 10,000 queries a day | Priced per page; set a ceiling per call with maxUsd |
| Results | From a Programmable Search Engine you configure | Google's organic results, plus news, images and shopping |
| Who can get access | Existing customers only, until 1 January 2027 | Anyone. An agent signs itself up in one call and starts on a $0.10 trial |
| Price model | $5 per 1,000 queries after the free 100 | Pay as you go, from $0.00009 per record |
| Setup | Search engine ID and API key | One API key. No Google account or app review |

## What Google points to instead

Google's overview names Vertex AI Search as the alternative for searching up to 50 domains, and asks you to contact it if your use needs full web search. The older Site Restricted JSON API stopped serving traffic on 8 January 2025.

If your agent searches your own sites or documents, Google's enterprise search products are the right tool. If it needs to see what Google shows anyone for a query, a results API is the practical route.

## What you can get here

- **[Google Search API](https://apiforagents.dev/platforms/google/search-api).** Organic web results with rank, title, link, snippet and domain, plus site, date and file-type filters.
- **[Google News API](https://apiforagents.dev/platforms/google/news-api).** News articles by query, country and recency: headline, publisher, date and link.
- **[Google Shopping API](https://apiforagents.dev/platforms/google/shopping-api).** Shopping offers with title, merchant, price, rating and review count.
- **[Google Images API](https://apiforagents.dev/platforms/google/images-api).** Image results with the image URL, source page, size and thumbnail.

> **For an agent** Search first, then read: let the agent run a Google search with a site filter to find the exact page or handle, then look that up on the platform it belongs to.

## Operation pages

- [Google Search API](https://apiforagents.dev/platforms/google/search-api)
- [Google News API](https://apiforagents.dev/platforms/google/news-api)
- [Google Shopping API](https://apiforagents.dev/platforms/google/shopping-api)
- [Google Images API](https://apiforagents.dev/platforms/google/images-api)

## Questions

### Is the Google Custom Search API shutting down?

Google says the Custom Search JSON API is closed to new customers and that existing customers have until 1 January 2027 to move to an alternative.

### How much did the Custom Search JSON API cost?

For existing customers, 100 queries a day free, then $5 per 1,000 queries, up to 10,000 a day, as of October 2026.

### What does a Google search cost here?

Priced per record, from $0.00009 per record. A web search is billed per page of about ten results. Quote it first with estimateOnly.

### Can I filter by site, date or file type?

Yes. The search operation takes a country, language, a site to search within, since and until dates and file types such as pdf.

### Does an agent need a Google account?

No. It signs itself up here with one call and never needs a Google account or a search engine ID.

## Sources

1. [Custom Search JSON API: Overview](https://developers.google.com/custom-search/v1/overview), seen 21 October 2026
2. [Custom Search Site Restricted JSON API](https://developers.google.com/custom-search/v1/site_restricted_api), seen 21 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Is the Instagram API free? No fee, but narrow.

> Meta lists no per-call fee for the Instagram API, but it only serves business and creator accounts, and reading others needs App Review. What that means.

Canonical: https://apiforagents.dev/guides/is-the-instagram-api-free · Updated 2026-10-21

Partly. The official Instagram API has no per-call price in Meta's developer docs, but it only works with business and creator accounts, personal accounts are not supported, and reading accounts you do not own needs App Review. The Basic Display API, the old route for personal accounts, ended on 4 December 2024.

- Per-call price: None listed by Meta
- Personal accounts: Not supported
- Other accounts: App Review needed
- Basic Display API: Ended Dec 2024

## Free or not, by what you need

Instagram's side is from Meta for Developers, seen 21 October 2026.

|  | Official Instagram API | API for Agents |
|---|---|---|
| Publish and manage your own professional account | Yes | No |
| Insights for accounts you manage | Yes | No |
| Counts for other business and creator accounts | Business Discovery, after App Review for accounts you do not own | Yes, any public account |
| Comments on other accounts' posts | No; comments need the post owner's token | Yes, $0.00045 per record |
| Followers lists of other accounts | No; only a follower count | Yes, $0.000675 per record |
| Who can get access | Business and creator accounts; App Review for accounts you do not own | Anyone. An agent signs itself up in one call and starts on a $0.10 trial |
| Price model | No per-call price listed | Pay as you go, from $0.00045 per record |
| Setup | Meta app, Facebook Page link or Instagram Login, App Review | One API key. No Instagram account or app review |

## When the official API is the right tool

If you publish posts, reply to comments, read insights or run a messaging inbox for accounts you or your clients own, use Meta's API. It acts with the account owner's permission and it is built for exactly that.

If you need public data about accounts that are not yours (creators to vet, competitors to watch, comments to read), the official API stops at counts for professional accounts. That is where a data API fits.

## What you can get here

- **[Instagram Profile API](https://apiforagents.dev/platforms/instagram/profile-api).** Bio, followers, posts count, engagement rate and category for any public account, ten per call.
- **[Instagram Posts API](https://apiforagents.dev/platforms/instagram/posts-api).** An account's recent posts or Reels with caption, likes, comments, views and hashtags.
- **[Instagram Comments API](https://apiforagents.dev/platforms/instagram/comments-api).** Top comments on any public post or Reel by URL, with author, text, likes and date.
- **[Instagram Hashtag API](https://apiforagents.dev/platforms/instagram/hashtag-api).** Posts tagged with a hashtag, top or newest.
- **[Instagram Followers API](https://apiforagents.dev/platforms/instagram/followers-api).** The followers or following list of public accounts.

> **Not affiliated** API for Agents is independent and is not affiliated with or endorsed by Instagram or Meta. It returns public data only: nothing behind a login.

## Operation pages

- [Instagram Profile API](https://apiforagents.dev/platforms/instagram/profile-api)
- [Instagram Posts API](https://apiforagents.dev/platforms/instagram/posts-api)
- [Instagram Comments API](https://apiforagents.dev/platforms/instagram/comments-api)
- [Instagram Hashtag API](https://apiforagents.dev/platforms/instagram/hashtag-api)
- [Instagram Followers API](https://apiforagents.dev/platforms/instagram/followers-api)

## Questions

### Does Meta charge for the Instagram API?

Meta's Instagram platform docs list no per-call price, as of October 2026. Check the current Meta Platform Terms for your use.

### Can I use the Instagram API with a personal account?

No. Meta's docs say the API cannot access consumer accounts, only business and creator accounts. The Basic Display API for personal accounts ended on 4 December 2024.

### What are the Instagram API rate limits?

Meta's overview gives most calls a limit of 4,800 times the account's impressions per 24 hours. Business Discovery and Hashtag Search are subject to Meta's platform rate limits instead.

### What does Instagram data cost here?

Priced per record, from $0.00045 per record. Quote any call first with estimateOnly, which is free.

## Sources

1. [Meta for Developers: Instagram API with Facebook Login](https://developers.facebook.com/docs/instagram-platform/instagram-api-with-facebook-login), seen 21 October 2026
2. [Meta for Developers blog: Update on Instagram Basic Display API](https://developers.facebook.com/blog/post/2024/09/04/update-on-instagram-basic-display-api), seen 21 October 2026
3. [Meta for Developers: Instagram Platform overview](https://developers.facebook.com/docs/instagram-platform/overview), seen 21 October 2026
4. [Meta for Developers: Business Discovery](https://developers.facebook.com/docs/instagram-platform/instagram-api-with-facebook-login/business-discovery), seen 21 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Can the Instagram API read other people's public data?

> Meta's Instagram API reads other accounts only through Business Discovery and Hashtag Search, with App Review and limits. How to get public data instead.

Canonical: https://apiforagents.dev/guides/instagram-api-for-public-data · Updated 2026-10-21

Only a little. Meta's official API reads other accounts through two features: Business Discovery, which returns basic metadata and metrics for other business and creator accounts, and Hashtag Search, capped at 30 hashtags per 7 days. Both need App Review. Personal accounts, follower lists and comments on other people's posts are out of reach.

- Other accounts: Business and creator only
- Hashtags: 30 per 7 days
- Comment text: Owner only
- Approval: App Review

## Public data, side by side

Instagram's side is from Meta for Developers, seen 21 October 2026.

|  | Official Instagram API | API for Agents |
|---|---|---|
| Profile counts of other accounts | Business and creator accounts, via Business Discovery | Any public account |
| Their recent posts | Basic media fields via Business Discovery | Yes, with likes, comments and views |
| Hashtag posts | 30 unique hashtags per 7 days | $0.00045 per record |
| Comment text on their posts | No | Yes |
| Followers or following lists | No | Yes |
| Who can get access | App Review and Advanced Access for accounts you do not own | Anyone. An agent signs itself up in one call and starts on a $0.10 trial |
| Price model | No per-call price listed | Pay as you go, from $0.00045 per record |
| Setup | Meta app, linked professional account, App Review | One API key. No Instagram account or app review |

## What Meta's docs say

- Business Discovery gets basic metadata and metrics about other Instagram professional accounts. Age-gated accounts are not returned.
- Hashtag Search allows a maximum of 30 unique hashtags in a rolling 7-day period, and needs App Review for Instagram Public Content Access.
- Reading comments on a post needs an access token from the user who created it.
- Serving accounts you do not own or manage needs Advanced Access, which needs Meta App Review.

## When the official API is still right

For anything you do on your own accounts or your clients' accounts (publishing, moderation, insights, messages) the official API is the right tool, and a data API cannot do it.

## What you can get here

- **[Instagram Profile API](https://apiforagents.dev/platforms/instagram/profile-api).** Bio, followers, posts count, engagement rate and category for any public account, ten per call.
- **[Instagram Posts API](https://apiforagents.dev/platforms/instagram/posts-api).** An account's recent posts or Reels with caption, likes, comments, views and hashtags.
- **[Instagram Comments API](https://apiforagents.dev/platforms/instagram/comments-api).** Top comments on any public post or Reel by URL, with author, text, likes and date.
- **[Instagram Hashtag API](https://apiforagents.dev/platforms/instagram/hashtag-api).** Posts tagged with a hashtag, top or newest.
- **[Instagram Followers API](https://apiforagents.dev/platforms/instagram/followers-api).** The followers or following list of public accounts.

## Operation pages

- [Instagram Profile API](https://apiforagents.dev/platforms/instagram/profile-api)
- [Instagram Posts API](https://apiforagents.dev/platforms/instagram/posts-api)
- [Instagram Comments API](https://apiforagents.dev/platforms/instagram/comments-api)
- [Instagram Hashtag API](https://apiforagents.dev/platforms/instagram/hashtag-api)
- [Instagram Followers API](https://apiforagents.dev/platforms/instagram/followers-api)

## Questions

### Can I get another account's followers list from the Instagram API?

No. Business Discovery returns a follower count, not a list. Here the followers operation returns the list for public accounts.

### Can it read private accounts?

No, neither API can. This one reads what is public on the profile page and flags a private account as private.

### Do I need an Instagram account to use this API?

No. You need an API key, or an agent signs itself up in one call. No Instagram login, password or cookie is used.

### What is Business Discovery?

A feature of the Instagram API with Facebook Login that returns basic metadata and metrics, such as follower and media counts, for other business and creator accounts.

## Sources

1. [Meta for Developers: Business Discovery](https://developers.facebook.com/docs/instagram-platform/instagram-api-with-facebook-login/business-discovery), seen 21 October 2026
2. [Meta for Developers: Hashtag Search](https://developers.facebook.com/docs/instagram-platform/instagram-api-with-facebook-login/hashtag-search), seen 21 October 2026
3. [Meta for Developers: IG Media comments reference](https://developers.facebook.com/docs/instagram-platform/instagram-graph-api/reference/ig-media/comments), seen 21 October 2026
4. [Meta for Developers: Instagram Platform overview](https://developers.facebook.com/docs/instagram-platform/overview), seen 21 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# The Facebook Ad Library API what it covers and who can use it.

> Meta's Ad Library API needs an ID check and covers political ads worldwide plus all ads shown in the EU and UK. How to read every ad a page runs.

Canonical: https://apiforagents.dev/guides/facebook-ad-library-api · Updated 2026-10-21

Yes, Meta has an Ad Library API, but it is narrow. You need a Facebook account, an identity check and a developer app, and it returns ads about social issues, elections or politics anywhere in the past seven years, and ads of any type delivered to the EU or UK in the past year. Other commercial ads are not returned.

- Identity check: Required
- Political ads: Worldwide, 7 years
- All ad types: EU and UK, 1 year
- Checked: Oct 2026

## Official API or this one

Meta's side is from its Ad Library API page and Graph API reference, seen 21 October 2026.

|  | Meta Ad Library API | API for Agents |
|---|---|---|
| Commercial ads shown outside the EU and UK | Not returned | Yes, as shown in the Ad Library, $0.0045 per record |
| Political and issue ads | Yes, with spend and impressions ranges | Yes |
| Fields on every ad | Page, delivery dates and where it ran; more for political, EU and UK ads | Copy, headline, call to action, landing page, dates and platforms |
| Look up by | Search terms or page IDs | Page URL or handle, active or stopped ads |
| Who can get access | Facebook account, identity confirmation, developer app | Anyone. An agent signs itself up in one call and starts on a $0.10 trial |
| Price model | No price published | Pay as you go, from $0.0022 per record |
| Setup | Confirm your ID, create a Meta app, get a token | One API key. No Facebook account or app review |

## When Meta's API is the right tool

For research on political and issue advertising, Meta's API is the primary source: it carries spend and impression ranges and demographic reach that the public library page does not show for other ads. For EU and UK ads it adds estimated reach and, for the EU, advertiser and payer details.

For competitor research on ordinary commercial ads in other markets, those ads are not in the API. Reading the ads a page runs, the way the Ad Library shows them, is what this API does.

## What you can get here

- **[Facebook Ad Library API](https://apiforagents.dev/platforms/facebook/ad-library-api).** Every ad a page runs in the Ad Library, active or stopped: copy, headline, call to action, link, dates and platforms.
- **[Facebook Page API](https://apiforagents.dev/platforms/facebook/page-api).** Followers, likes, category, contact details and whether the page is running ads.
- **[Facebook Posts API](https://apiforagents.dev/platforms/facebook/posts-api).** A page's recent posts with reactions, comments, shares and views.

> **Not affiliated** API for Agents is independent and is not affiliated with or endorsed by Meta. It returns public data only: nothing behind a login.

## Operation pages

- [Facebook Ad Library API](https://apiforagents.dev/platforms/facebook/ad-library-api)
- [Facebook Page API](https://apiforagents.dev/platforms/facebook/page-api)
- [Facebook Posts API](https://apiforagents.dev/platforms/facebook/posts-api)

## Questions

### Who can use the Meta Ad Library API?

Anyone with a Facebook account who completes Meta's identity and location confirmation and creates a Meta for Developers app, per Meta's Ad Library API page.

### Does the Ad Library API return all ads?

No. It returns ads about social issues, elections or politics delivered anywhere in the past seven years, and ads of any type delivered to the EU or UK in the past year.

### Does it show ad spend?

Only for political and issue ads, as a range. Commercial ads come without spend.

### What does an ad cost here?

Priced per record, from $0.0022 per record. Quote first with estimateOnly, which is free.

### Can I read other Facebook pages through Meta's API?

Reading public content of pages you do not manage needs the Page Public Content Access feature, which requires App Review and business verification.

## Sources

1. [Meta Ad Library API](https://www.facebook.com/ads/library/api), seen 21 October 2026
2. [Graph API reference: ads_archive](https://developers.facebook.com/docs/graph-api/reference/ads_archive/), seen 21 October 2026
3. [Graph API reference: Archived Ad](https://developers.facebook.com/docs/graph-api/reference/archived-ad/), seen 21 October 2026
4. [Meta for Developers: Page Public Content Access](https://developers.facebook.com/docs/features-reference/page-public-content-access), seen 21 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# X (Twitter) API pricing pay per use since February 2026.

> Since February 2026 the X API bills pay per use: $0.005 per post read and $0.01 per user read, capped at 3 million post reads a month. Your options.

Canonical: https://apiforagents.dev/guides/x-twitter-api-pricing · Updated 2026-10-21

The X API is now pay per use. Since 6 February 2026, X sells credits with no subscription: as of October 2026 a post read is $0.005 and a user read is $0.010, with a cap of 3 million post reads a month before you need Enterprise. Basic and Pro plans still exist, and the old Free tier was retired.

- Post read: $0.005
- User read: $0.010
- Monthly cap: 3M post reads
- Model: Credits, no subscription

## Official API or this one

X's side is from docs.x.com, seen 21 October 2026.

|  | X API (pay per use) | API for Agents |
|---|---|---|
| Post as an account, like, follow | Yes | No |
| Read public posts | $0.005 per post | $0.000225 per record |
| Read public profiles | $0.010 per user | $0.000225 per record |
| Volume cap | 3 million post reads a month, then Enterprise | Priced per record, with a ceiling per call (maxUsd) |
| Who can get access | X developer account with a card and credits | Anyone. An agent signs itself up in one call and starts on a $0.10 trial |
| Price model | Credits per resource read or created | Pay as you go, from $0.000225 per record |
| Setup | Developer account, app, keys, credits | One API key. No X / Twitter account or app review |

## When X's own API is the right tool

If your app posts, replies, likes or follows as a user, or works with an account's own data, use the X API: only it can act for an account, and reading your own app's data is priced lower, at $0.001 per resource.

X also charges once for the same resource requested twice within 24 hours, which helps a polling app. For reading public profiles and posts across many accounts, compare the per-record cost before you choose.

## What you can get here

- **[X Profile API](https://apiforagents.dev/platforms/x_twitter/profile-api).** Bio, followers, following, post count, location and join date for up to ten accounts per call.
- **[X Posts API](https://apiforagents.dev/platforms/x_twitter/posts-api).** An account's recent posts with views, likes, reposts, replies and quotes.
- **[X Post Search API](https://apiforagents.dev/platforms/x_twitter/post-search-api).** Posts by keyword across all authors, with their engagement.
- **[X Account Search API](https://apiforagents.dev/platforms/x_twitter/account-search-api).** Accounts by name, topic or bio phrase, each a full profile card.

> **Not affiliated** API for Agents is independent and is not affiliated with or endorsed by X Corp.. It returns public data only: nothing behind a login.

## Operation pages

- [X Profile API](https://apiforagents.dev/platforms/x_twitter/profile-api)
- [X Posts API](https://apiforagents.dev/platforms/x_twitter/posts-api)
- [X Post Search API](https://apiforagents.dev/platforms/x_twitter/post-search-api)
- [X Account Search API](https://apiforagents.dev/platforms/x_twitter/account-search-api)

## Questions

### Is the X API free?

Not any more for new reads. X retired its legacy Free tier when pay per use launched on 6 February 2026, giving recently active Free users a one-time $10 voucher. New accounts can earn $20 in credits after their first purchase.

### Do Basic and Pro still exist?

Yes. X's changelog says Basic and Pro plans remain available. Check X's docs for their current prices.

### What does it cost to post through the X API?

As of October 2026, $0.015 per post created, or $0.200 for a post with a URL, per X's pricing page.

### What does X data cost here?

Priced per record, from $0.000225 per record. Quote any call first with estimateOnly, which is free.

## Sources

1. [X API: Pricing](https://docs.x.com/x-api/getting-started/pricing), seen 21 October 2026
2. [X API: Changelog (pay-per-use launch, 6 February 2026)](https://docs.x.com/changelog), seen 21 October 2026
3. [X Enterprise API: Pricing](https://docs.x.com/enterprise-api/getting-started/pricing), seen 21 October 2026
4. [X API: About the X API](https://docs.x.com/x-api/getting-started/about-x-api), seen 21 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Reddit API pricing and who can get access.

> Reddit's Data API needs approval before any access, is free only for eligible non-commercial use at 100 queries a minute, and needs a contract for firms.

Canonical: https://apiforagents.dev/guides/reddit-api-pricing · Updated 2026-10-21

It depends on who you are. Reddit's Data API is free only for eligible non-commercial use, at 100 queries per minute per OAuth client. Since its Responsible Builder Policy, every new app must request access and get approval first, and any commercial use needs a separate written agreement with Reddit at rates Reddit sets.

- Approval: Required first
- Free limit: 100 queries / minute
- Commercial use: Separate agreement
- Price list: Not published

## Official API or this one

Reddit's side is from Reddit Help and Reddit's Data API Terms, seen 21 October 2026.

|  | Reddit Data API | API for Agents |
|---|---|---|
| Post, comment, moderate as a user | Yes | No |
| Search posts across Reddit | Yes, after approval | $0.0045 per record |
| Subreddit posts and comments | Yes, after approval | Yes |
| Business use | Needs a written agreement | Pay per record |
| Who can get access | Request access and wait for approval | Anyone. An agent signs itself up in one call and starts on a $0.10 trial |
| Price model | Free for eligible non-commercial use; contract rates otherwise | Pay as you go, from $0.0045 per record |
| Setup | Approval, OAuth app, User-Agent | One API key. No Reddit account or app review |

## What Reddit's pages say

- You must request access and get explicit approval before accessing any Reddit data through the API.
- Free access is limited to 100 queries per minute per OAuth client id, averaged over ten minutes. Traffic without OAuth is blocked.
- Commercial use, research beyond the rate limits, or anything not expressly allowed needs a separate agreement with Reddit. Reddit counts any use by or for a business as commercial.
- Academic research goes through the Reddit for Researchers program.

## When Reddit's API is the right tool

If you build a bot, a moderation tool or an app that posts and comments for users, Reddit's API is the only way, and the approval step is part of the job. Researchers should look at Reddit for Researchers.

If you need to read public threads about a product or a market without building an app, a data API is another route. Reddit's own rules about how its data may be used still apply to your use, so read the Data API Terms and the Responsible Builder Policy.

## What you can get here

- **[Reddit Search API](https://apiforagents.dev/platforms/reddit/search-api).** Posts by keyword across every subreddit, with score, comments and upvote ratio.
- **[Reddit Subreddit API](https://apiforagents.dev/platforms/reddit/subreddit-api).** A subreddit's posts, sorted hot, newest, top or rising.
- **[Reddit Comments API](https://apiforagents.dev/platforms/reddit/comments-api).** Top comments on posts by permalink, with author, text, score and depth.
- **[Reddit User Posts API](https://apiforagents.dev/platforms/reddit/user-posts-api).** A user's recent submissions with subreddit, score and comments.

> **Not affiliated** API for Agents is independent and is not affiliated with or endorsed by Reddit. It returns public data only: nothing behind a login.

## Operation pages

- [Reddit Search API](https://apiforagents.dev/platforms/reddit/search-api)
- [Reddit Subreddit API](https://apiforagents.dev/platforms/reddit/subreddit-api)
- [Reddit Comments API](https://apiforagents.dev/platforms/reddit/comments-api)
- [Reddit User Posts API](https://apiforagents.dev/platforms/reddit/user-posts-api)

## Questions

### How much does the Reddit API cost?

Reddit publishes no public price list. Its Data API Terms say commercial access needs a separate agreement, at rates Reddit decides. Eligible non-commercial use is free within the rate limit.

### What is the Reddit API rate limit?

100 queries per minute per OAuth client id for free access, averaged over a ten-minute window, per the Reddit Data API Wiki as of October 2026.

### Can I use Reddit data to train an AI model?

Reddit's Responsible Builder Policy says you must not use its data to train machine learning or AI models without express written approval. Check the current terms for your case.

### What does Reddit data cost here?

Priced per record, from $0.0045 per record. Quote any call first with estimateOnly, which is free.

## Sources

1. [Reddit Help: Responsible Builder Policy](https://support.reddithelp.com/hc/en-us/articles/42728983564564-Responsible-Builder-Policy), seen 21 October 2026
2. [Reddit Help: Reddit Data API Wiki](https://support.reddithelp.com/hc/en-us/articles/16160319875092-Reddit-Data-API-Wiki), seen 21 October 2026
3. [Reddit: Data API Terms](https://redditinc.com/policies/data-api-terms), seen 21 October 2026
4. [Reddit Help: Accessing Reddit data](https://support.reddithelp.com/hc/en-us/articles/14945211791892-Developer-Platform-Accessing-Reddit-Data), seen 21 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Is there a TikTok API for public data?

> TikTok's Research API is only for academic and non-profit researchers, and its Display API shows a creator's own videos. Where businesses get TikTok data.

Canonical: https://apiforagents.dev/guides/tiktok-api-for-public-data · Updated 2026-10-21

Not for most businesses. TikTok's Research API returns public accounts, videos and comments, but only to academic and non-profit researchers who apply and are independent of commercial interests. Its Display API shows a creator's own profile and videos after they log in, and its Commercial Content API covers ads shown in the EU.

- Research API: Academic and non-profit
- Display API: The signed-in creator's own
- Ads library: EU ads
- Checked: Oct 2026

## TikTok's APIs and this one

TikTok's side is from TikTok for Developers, seen 21 October 2026.

|  | Official TikTok APIs | API for Agents |
|---|---|---|
| Other accounts' public profiles and videos | Research API, for accepted researchers only | Yes |
| Comments on public videos | Research API only | Yes, $0.00045 per record |
| A creator's own profile and videos | Display API, after Login Kit | Their public profile and posts |
| Ads | Commercial Content API, EU ads | Not offered |
| TikTok Shop products | Research API covers EU-based shops | Yes, by keyword |
| Who can get access | Research: academic and non-profit applicants. Display: any app, with the creator's login | Anyone. An agent signs itself up in one call and starts on a $0.10 trial |
| Price model | No price published | Pay as you go, from $0.00045 per record |
| Setup | Developer app, application or Login Kit review | One API key. No TikTok account or app review |

## When TikTok's own APIs are right

If you are an academic or non-profit researcher in an eligible region, apply for the Research API: it is the primary source and TikTok says applicants typically hear back within four weeks. If your app shows a creator their own videos, or posts for them, use Login Kit with the Display or Content Posting APIs.

If you are a business that needs public numbers on creators, videos or products, the Research API is not open to you. That is the gap a data API fills.

## What you can get here

- **[TikTok Profile API](https://apiforagents.dev/platforms/tiktok/profile-api).** Followers, following, total likes, video count, bio and verification for any public account.
- **[TikTok Posts API](https://apiforagents.dev/platforms/tiktok/posts-api).** An account's recent posts with views, likes, comments, shares and saves.
- **[TikTok Video Search API](https://apiforagents.dev/platforms/tiktok/video-search-api).** Posts by keyword, hashtag or sound.
- **[TikTok Comments API](https://apiforagents.dev/platforms/tiktok/comments-api).** Top-level comments on posts by URL, with commenter, text, likes and replies.
- **[TikTok Shop API](https://apiforagents.dev/platforms/tiktok/shop-api).** TikTok Shop products by keyword: price, rating, reviews, sold count and seller.

> **Not affiliated** API for Agents is independent and is not affiliated with or endorsed by TikTok. It returns public data only: nothing behind a login.

## Operation pages

- [TikTok Profile API](https://apiforagents.dev/platforms/tiktok/profile-api)
- [TikTok Posts API](https://apiforagents.dev/platforms/tiktok/posts-api)
- [TikTok Video Search API](https://apiforagents.dev/platforms/tiktok/video-search-api)
- [TikTok Comments API](https://apiforagents.dev/platforms/tiktok/comments-api)
- [TikTok Shop API](https://apiforagents.dev/platforms/tiktok/shop-api)

## Questions

### Can a company use the TikTok Research API?

TikTok says applicants must be academic institutions or not-for-profit research bodies in eligible regions, and independent of commercial interests.

### What does the TikTok Display API return?

A creator's profile information and videos, for display in your product, after the creator authorises your app through Login Kit.

### Is there a TikTok ads API?

The Commercial Content API is TikTok's ads library API. TikTok says it includes ads data from EU countries in this phase.

### What does TikTok data cost here?

Priced per record, from $0.00045 per record. Quote any call first with estimateOnly, which is free.

## Sources

1. [TikTok for Developers: Research API](https://developers.tiktok.com/products/research-api/), seen 21 October 2026
2. [TikTok for Developers: Display API overview](https://developers.tiktok.com/docs/en/display-api-overview), seen 21 October 2026
3. [TikTok for Developers: Display API, get started](https://developers.tiktok.com/docs/en/display-api-get-started), seen 21 October 2026
4. [TikTok for Developers: Commercial Content API](https://developers.tiktok.com/products/commercial-content-api), seen 21 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# An Amazon product data API and what Amazon's own APIs allow.

> Amazon's Creators API, which replaced PA-API 5.0, is for Associates with 10 sales in 30 days. What it allows, and how to read product and review data.

Canonical: https://apiforagents.dev/guides/amazon-product-data-api · Updated 2026-10-21

Amazon's own product API is for its affiliates. The Product Advertising API 5.0 is deprecated and replaced by the Creators API, which Amazon opens to Associates with at least 10 qualifying sales in the past 30 days, starting at one request per second. The Selling Partner API is for sellers and vendors working with their own business data.

- PA-API 5.0: Deprecated
- Creators API: Associates, 10 sales / 30 days
- Starting rate: 1 request / second
- Checked: Oct 2026

## Official APIs or this one

Amazon's side is from its Creators API docs and Associates policies, seen 21 October 2026.

|  | Amazon Creators API | API for Agents |
|---|---|---|
| Who it is for | Amazon Associates linking to products | Anyone who needs product data |
| Product details | Item info, images and browse nodes | Yes, with price, stock, rating and rank |
| Search results | Yes | Yes, with rank |
| Customer review text | Not among the listed resources | Yes, $0.00045 per record |
| Keeping the data | Non-image content up to 24 hours; images not cached | Your rows are yours to keep |
| Who can get access | Associates with 10 qualifying sales in 30 days | Anyone. An agent signs itself up in one call and starts on a $0.10 trial |
| Price model | No fee; request rate grows with shipped revenue | Pay as you go, from $0.00045 per record |
| Setup | Associates account, sales, credentials | One API key. No Amazon account or app review |

## When Amazon's API is the right tool

If you earn affiliate commission by linking to Amazon products, use the Creators API: it is built for that, its links carry your tag, and Amazon's policies tie showing ratings and reviews on your site to links obtained through it. If you sell on Amazon, the Selling Partner API covers your own orders, inventory, shipping and payments.

If you need to track prices, ranks or reviews across products you do not sell, without an affiliate business behind you, a product data API is the practical route.

## What you can get here

- **[Amazon Product API](https://apiforagents.dev/platforms/amazon/product-api).** Price, deal and Prime flags, stock, rating, best-sellers rank and seller for up to ten ASINs per call.
- **[Amazon Search API](https://apiforagents.dev/platforms/amazon/search-api).** Search results where every hit is a full product card with its rank, price, rating and seller.
- **[Amazon Reviews API](https://apiforagents.dev/platforms/amazon/reviews-api).** Customer review text, rating, date, verified purchase and helpful votes.

> **Not affiliated** API for Agents is independent and is not affiliated with or endorsed by Amazon. It returns public data only: nothing behind a login.

## Operation pages

- [Amazon Product API](https://apiforagents.dev/platforms/amazon/product-api)
- [Amazon Search API](https://apiforagents.dev/platforms/amazon/search-api)
- [Amazon Reviews API](https://apiforagents.dev/platforms/amazon/reviews-api)

## Questions

### Is the Amazon Product Advertising API still available?

Amazon says PA-API 5.0 has been deprecated and replaced by the Creators API, and that applications still calling PA-API 5 receive an HTTP 403 response.

### How many requests does the Creators API allow?

One request per second and 8,640 a day to start, then more as your shipped revenue grows, up to ten per second, per Amazon's API rates page as of October 2026.

### Can I get Amazon reviews through Amazon's API?

Customer review text is not among the resources the Creators API reference lists. Here, the reviews operation returns review text, rating, date and verified-purchase flag.

### What does Amazon data cost here?

Priced per record, from $0.00045 per record. Quote any call first with estimateOnly, which is free.

## Sources

1. [Amazon Creators API: PA-API 5.0 deprecation](https://affiliate-program.amazon.com/creatorsapi/docs/en-us/paapiv5-deprecation), seen 21 October 2026
2. [Amazon Creators API: Introduction](https://affiliate-program.amazon.com/creatorsapi/docs/en-us/introduction), seen 21 October 2026
3. [Amazon Creators API: API rates](https://affiliate-program.amazon.com/creatorsapi/docs/en-us/concepts/api-rates), seen 21 October 2026
4. [Amazon Associates Program Policies](https://affiliate-program.amazon.com/help/operating/policies), seen 21 October 2026
5. [Amazon: What is the Selling Partner API](https://developer-docs.amazon/sp-api/docs/what-is-the-selling-partner-api), seen 21 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Yelp API pricing and the alternatives.

> Yelp's API now starts at $229 a month, gives no review excerpts on Base, and caps caching at 24 hours. What it costs and when a per-record API fits.

Canonical: https://apiforagents.dev/guides/yelp-api-alternatives · Updated 2026-10-21

Yelp's API is paid now. As of October 2026 its plans run from $229 to $643 a month after a 30-day trial of 5,000 calls; the Base plan has no review excerpts and the top plan returns up to 7 per business. Yelp's terms also cap caching at 24 hours and rule out feeding Yelp content into generative AI models.

- Plans from: $229 / month
- Trial: 30 days, 5,000 calls
- Review excerpts: 0, 3 or 7 by plan
- Caching: 24 hours max

## Yelp's plans

From Yelp's pricing page, seen 21 October 2026.

| Plan | Per month | Extra 1,000 calls | Review excerpts |
|---|---|---|---|
| Base | $229 | $5.91 | None |
| Enhanced | $299 | $6.57 | Up to 3 per business |
| Premium | $643 | $14.13 | Up to 7 per business |

## Official API or this one

|  | Yelp Places API | API for Agents |
|---|---|---|
| Business search and details | Yes | Yes |
| Review text | Excerpts on Enhanced and Premium | Full reviews, up to 100 per call, $0.000225 per record |
| Use with AI models | Yelp's terms forbid it | Built for agents |
| Keeping the data | 24 hours, except business IDs | Your rows are yours to keep |
| Who can get access | Register for keys; business email for the trial | Anyone. An agent signs itself up in one call and starts on a $0.10 trial |
| Price model | Monthly plan plus calls over the allowance | Pay as you go, from $0.000225 per record |
| Setup | Yelp developer account and plan | One API key. No Yelp account or app review |

## When Yelp's API is the right tool

If your app shows Yelp ratings and business details to your own users, with Yelp's attribution, the official API is built for that and its plans include the licence to display the content.

Its terms rule out several other jobs: using the API on behalf of a third party, storing content beyond 24 hours, selling the data, or putting Yelp content into a generative AI model. For research datasets or an agent's workflow, look at a different source.

## What you can get here

- **[Yelp Search API](https://apiforagents.dev/platforms/yelp/search-api).** Businesses for a keyword in a place, with price and feature filters, rating and phone.
- **[Yelp Business API](https://apiforagents.dev/platforms/yelp/business-api).** Business profiles with address, phone, rating, review count, hours and menu link.
- **[Yelp Reviews API](https://apiforagents.dev/platforms/yelp/reviews-api).** Review text, rating, date, reactions, reviewer and the owner's public reply.

> **Not affiliated** API for Agents is independent and is not affiliated with or endorsed by Yelp. It returns public data only: nothing behind a login.

## Operation pages

- [Yelp Search API](https://apiforagents.dev/platforms/yelp/search-api)
- [Yelp Business API](https://apiforagents.dev/platforms/yelp/business-api)
- [Yelp Reviews API](https://apiforagents.dev/platforms/yelp/reviews-api)

## Questions

### Is the Yelp API free?

No. Yelp offers a 30-day trial with 5,000 calls, then paid plans from $229 a month, as of October 2026.

### How many reviews does the Yelp API return?

None on the Base plan, up to 3 review excerpts per business on Enhanced and up to 7 on Premium. The reviews endpoint needs Enhanced or Premium.

### Can I use the Yelp API with ChatGPT or another AI model?

Yelp's API terms say you may not submit or ingest Yelp content into any generative AI model, including in prompts. Check the current terms for your case.

### What does Yelp data cost here?

Priced per record, from $0.000225 per record. Quote any call first with estimateOnly, which is free.

## Sources

1. [Yelp: Places API pricing](https://business.yelp.com/data/resources/pricing/), seen 21 October 2026
2. [Yelp developer docs: Business reviews endpoint](https://docs.developer.yelp.com/reference/v3_business_reviews), seen 21 October 2026
3. [Yelp API Terms of Use](https://terms.yelp.com/developers/api_terms/), seen 21 October 2026
4. [Yelp developer docs: Fusion API introduction](https://docs.developer.yelp.com/docs/fusion-intro), seen 21 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Tripadvisor API access what it takes and what you get.

> Tripadvisor's legacy Content API is no longer updated; its new API is priced per location, for display on your own site. When a data API fits instead.

Canonical: https://apiforagents.dev/guides/tripadvisor-api-access · Updated 2026-10-21

You sign up for Tripadvisor's new API, called Terra, to show its content on your own site or app. The legacy Content API is no longer updated. As of October 2026 Terra gives a one-time 1,000 free billable entities, then charges per entity, and its terms require attribution and allow no caching except the location ID.

- Legacy Content API: No longer updated
- Free allowance: 1,000, once
- Caching: Location ID only
- Checked: Oct 2026

## Official API or this one

Tripadvisor's side is from its Terra developer docs, seen 21 October 2026.

|  | Tripadvisor Terra API | API for Agents |
|---|---|---|
| Where results may be used | Your own website or app, with Tripadvisor's mark and a link back | Your own analysis and agents |
| Reviews per location | Set by your contract | Up to 100 per call, $0.0018 per record |
| Hotels priced for your dates | Check the current Terra docs | Yes |
| Keeping the data | Location ID only | Your rows are yours to keep |
| Daily limit | 10,000 calls a day per API on the entry package | Priced per record, with a ceiling per call (maxUsd) |
| Who can get access | Sign up as a Terra customer | Anyone. An agent signs itself up in one call and starts on a $0.10 trial |
| Price model | Per billable entity after a one-time free 1,000 | Pay as you go, from $0.0018 per record |
| Setup | Account, package, key, display rules | One API key. No Tripadvisor account or app review |

## When Tripadvisor's API is the right tool

If you run a travel site or app and want Tripadvisor ratings and reviews on your pages, with its branding, use Terra. That is the use it licenses, and the display rules come with it.

Its master terms rule out combining the content with other content and most use with AI or machine learning, beyond internal non-commercial grounding. For market research, rate checks across hotels or an agent that compares places, a data API fits better.

## What you can get here

- **[Tripadvisor Hotel Search API](https://apiforagents.dev/platforms/tripadvisor/hotel-search-api).** Hotels for a destination, priced for your dates, with rating, rank and class.
- **[Tripadvisor Restaurants API](https://apiforagents.dev/platforms/tripadvisor/restaurants-api).** Restaurant cuisines, rating, rank, price range, hours and menu link.
- **[Tripadvisor Attractions API](https://apiforagents.dev/platforms/tripadvisor/attractions-api).** Attraction rating, rank, types, lowest ticket price and booking links.
- **[Tripadvisor Reviews API](https://apiforagents.dev/platforms/tripadvisor/reviews-api).** Reviews for hotels, restaurants and attractions: title, text, rating, trip type and dates.

> **Not affiliated** API for Agents is independent and is not affiliated with or endorsed by Tripadvisor. It returns public data only: nothing behind a login.

## Operation pages

- [Tripadvisor Hotel Search API](https://apiforagents.dev/platforms/tripadvisor/hotel-search-api)
- [Tripadvisor Restaurants API](https://apiforagents.dev/platforms/tripadvisor/restaurants-api)
- [Tripadvisor Attractions API](https://apiforagents.dev/platforms/tripadvisor/attractions-api)
- [Tripadvisor Reviews API](https://apiforagents.dev/platforms/tripadvisor/reviews-api)

## Questions

### Is the Tripadvisor Content API still available?

Tripadvisor's legacy Content API overview says it is no longer being updated. New integrations go through Terra.

### Is the Tripadvisor API free?

Terra grants 1,000 free billable entities once per account, not monthly, then charges per entity, as of October 2026.

### Can I store Tripadvisor API data?

Terra's caching policy allows only the location ID to be cached. Check the current terms for your use.

### What does Tripadvisor data cost here?

Priced per record, from $0.0018 per record. Quote any call first with estimateOnly, which is free.

## Sources

1. [Tripadvisor Content API (legacy): Overview](https://tripadvisor-content-api.readme.io/reference/overview), seen 21 October 2026
2. [Tripadvisor Terra: Usage-based pricing](https://docs.terra.tripadvisor.com/docs/usage-based-pricing), seen 21 October 2026
3. [Tripadvisor Terra: API access and limits](https://docs.terra.tripadvisor.com/docs/api-access-and-limits), seen 21 October 2026
4. [Tripadvisor Terra: Caching policy](https://docs.terra.tripadvisor.com/docs/caching-policy), seen 21 October 2026
5. [Tripadvisor Terra: API master terms](https://docs.terra.tripadvisor.com/docs/api-master-terms), seen 21 October 2026

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md


---

# Price list (USD per record)

- airbnb/listings: 0.0018
- airbnb/reviews: 0.0018
- amazon/reviews: 0.00045
- amazon/products: 0.00135
- blinkit/category: 0.0009
- blinkit/products: 0.0009
- blinkit/search: 0.0009
- booking/listings: 0.0018
- booking/reviews: 0.0018
- facebook/comments: 0.00225
- facebook/reviews: 0.00225
- facebook/ads: 0.0045
- facebook/posts: 0.0045
- facebook/reels: 0.0045
- facebook/followers: 0.00675
- facebook/events: 0.009
- facebook/marketplace: 0.009
- facebook/pages: 0.009
- farfetch/products: 0.0009
- goat/products: 0.0009
- google/play reviews: 0.00009
- google/images: 0.0009
- google/search: 0.0009
- google/news: 0.0018
- google/shopping: 0.0027
- google_maps/reviews: 0.000225
- google_maps/places: 0.0036
- indeed/jobs: 0.000045
- instagram/comments: 0.00045
- instagram/followers: 0.000675
- instagram/posts: 0.0018
- instagram/profiles: 0.0018
- instamart/category: 0.0009
- instamart/products: 0.0009
- instamart/search: 0.0009
- linkedin/jobs: 0.001
- linkedin/ads library: 0.002
- linkedin/post comments: 0.002
- linkedin/post reactions: 0.002
- linkedin/posts: 0.002
- linkedin/profile comments: 0.002
- linkedin/profile reactions: 0.002
- linkedin/companies: 0.004
- linkedin/profiles: 0.004
- naukri/job: 0.0018
- reddit/comments: 0.0045
- reddit/posts: 0.0045
- shopify/products: 0.0009
- stockx/products: 0.0009
- tiktok/comments: 0.00045
- tiktok/followers: 0.0009
- tiktok/posts: 0.0018
- tiktok/profiles: 0.00225
- tiktok/shop: 0.0135
- tripadvisor/attractions: 0.0018
- tripadvisor/hotels: 0.0018
- tripadvisor/restaurants: 0.0018
- tripadvisor/reviews: 0.0018
- upwork/jobs: 0.0027
- x_twitter/followers: 0.000225
- x_twitter/replies: 0.000225
- x_twitter/retweeters: 0.000225
- x_twitter/tweets: 0.000225
- x_twitter/profiles: 0.00045
- yelp/reviews: 0.000225
- yelp/business: 0.00045
- youtube/channels: 0.00045
- youtube/comments: 0.00045
- youtube/videos: 0.00045
- zepto/category: 0.0009
- zepto/products: 0.0009
- zepto/search: 0.0009
