Unified scraper API
for every social platform
Bring public profiles, posts, videos and conversations into your apps.
One social media data API for your workflows and AI agents.
Social data infrastructure
One integration for the social web.
Scrape social networks, video, forums, messaging, ad libraries, IRL events and communities, link-in-bio pages, commerce and prediction markets. Bring the data into your apps and AI workflows through one API.
const baseUrl = "https://api.scrapeatlas.com";
const url = new URL('/v1/youtube/video', baseUrl);
url.searchParams.set("url", "https://www.youtube.com/watch?v=UPrkC1LdlLY");
const response = await fetch(url, {
method: 'GET',
headers: {
'x-api-key': process.env.SCRAPEATLAS_API_KEY
}
});
const data = await response.json();
console.log(data);const baseUrl = "https://api.scrapeatlas.com";
const url = new URL('/v1/youtube/video', baseUrl);
url.searchParams.set("url", "https://www.youtube.com/watch?v=MRtg6A1f2Ko");
const response = await fetch(url, {
method: 'GET',
headers: {
'x-api-key': process.env.SCRAPEATLAS_API_KEY
}
});
const data = await response.json();
console.log(data);
- Views
- 367.3M
- Likes
- 6.3M
- Published
- Aug 2024
{
"id": "UPrkC1LdlLY",
"channel": { "handle": "MrBeast" },
"viewCountInt": 367344641
}
- Views
- 7.8M
- Likes
- 186K
- Published
- Sep 2024
{
"id": "MRtg6A1f2Ko",
"channel": { "handle": "mkbhd" },
"viewCountInt": 7835637
}Saved examples. Counts change over time.
const baseUrl = "https://api.scrapeatlas.com";
const url = new URL('/v1/depop/shop', baseUrl);
url.searchParams.set("handle", "itscharlixcxbaby");
const response = await fetch(url, {
method: 'GET',
headers: {
'x-api-key': process.env.SCRAPEATLAS_API_KEY
}
});
const data = await response.json();
console.log(data);- Followers
- 12K
- Items sold
- 71
- Reviews
- 6
{ "shop": {
"username": "itscharlixcxbaby",
"followers": 12000,
"itemsSold": 71 }
}Saved examples. Counts change over time.
“ScrapeAtlas powers my social media scheduler - and I couldn't operate without it”
StevieFounder, WahluUse cases
What our customers
are building
From your first research tool to your next product.
Six ways to put public social data to work.
Brand monitoring
Bring public posts, comments and conversations into your listening tools. Understand how people talk about your brand and products.
Explore the dataCreator discovery
Find creators worth a closer look. Combine public profiles, recent content and engagement to build your next campaign shortlist.
Explore the dataVideo intelligence
Turn videos into something you can work with. Feed transcripts, comments and video metadata into research and content tools.
Explore the dataCompetitive intelligence
Study the content and ads behind another brand’s strategy. Bring public creatives and engagement into your own comparisons.
Explore the dataCommerce research
Connect products, prices and customer reviews. Build product discovery tools and research what shoppers are talking about.
Explore the dataAI agents & workflows
Give your agents public social context. Connect ScrapeAtlas through MCP or HTTP to research, summarize and enrich your workflows.
Explore the dataCUSTOMER STORIES
What they are saying
about us.
Watch Nigel’s story
Watch Janu’s storyDigging your ScrapeAtlas experience?
Email Viktor with a testimonial & receive 10,000 free credits.
EXPLORE THE ATLAS
Every platform in one place.
47 platforms. 367 endpoints.
Pick a platform to explore what you can build.
TikTok
18 endpointsX (Twitter)
6 endpointsYouTube
17 endpointsThreads
8 endpointsTwitch
7 endpointsDepop
12 endpointsAmazon
8 endpointsBluesky
5 endpointsCosmos
7 endpointsCouchsurfing
6 endpointsDribbble
4 endpointsEtsy
8 endpointsFacebook Events
4 endpointsFacebook Marketplace
5 endpointsGitHub
27 endpointsHacker News
5 endpointsKalshi
12 endpointsKick
1 endpointKomi
1 endpointKwai
3 endpointsLinkedIn Ads Library
4 endpointsLinkme
1 endpointLinktree
3 endpointsLnk.Bio
1 endpointMastodon
10 endpointsMedium
12 endpointsMeetup
8 endpointsMeta Ads Library
8 endpointsPillar
1 endpointPolymarket
13 endpointsProduct Hunt
10 endpointsQuora
11 endpointsRumble
2 endpointsSkool
11 endpointsSnapchat
7 endpointsSubstack
10 endpointsTelegram
5 endpointsTikTok Shop
6 endpointsTumblr
10 endpointsVinted
7 endpointsWhatnot
12 endpointsGet social data in
ChatGPT, Claude or your terminal.
Retrieve public profiles, posts and videos with a chat prompt or a terminal command.
CLI. Scrape from your terminal.
Run ScrapeAtlas commands to retrieve profiles, posts and videos as JSON.
npm install -g @scrapeatlas/cli
scrapeatlas auth login
scrapeatlas listRequires Node.js 22+. At the login prompt, enter an API key from your ScrapeAtlas dashboard.
MCP. Connect ChatGPT or Claude.
Add ScrapeAtlas to your assistant and retrieve profiles, posts and videos with a prompt.
https://api.scrapeatlas.com/mcp- In ChatGPT Plugins or Claude Connectors, add a custom MCP connection with this URL.
- Choose OAuth, sign in to ScrapeAtlas and allow the connection.
- Enable ScrapeAtlas in your chat, then request profiles, posts or videos.
API PLAYGROUND
Try the API
in your browser.
Choose an endpoint, fill in the request fields, and run it with your API key. See the JSON response and copy the code for your app.
- 01
Choose an endpoint
Browse the platforms and choose what you want to retrieve.
- 02
Enter your details
Add the URL, username or search terms the endpoint needs, along with your API key.
- 03
Run it and see the response
View the JSON response and copy a request example in your preferred language.
# ScrapeAtlas · use your customer API key
export BASE_URL="https://api.scrapeatlas.com"
curl --get "$BASE_URL/v1/reddit/subreddit/details" \
-H "x-api-key: $SCRAPEATLAS_API_KEY" \
--data-urlencode "subreddit=Example"const baseUrl = "https://api.scrapeatlas.com";
const url = new URL('/v1/reddit/subreddit/details', baseUrl);
url.searchParams.set("subreddit", "Example");
const response = await fetch(url, {
method: 'GET',
headers: {
'x-api-key': process.env.SCRAPEATLAS_API_KEY
}
});
const data = await response.json();
console.log(data);type Result = {
status: "success" | "partial" | "failed" | "challenged";
requestId: string;
[field: string]: unknown;
};
const response = await fetch(
"https://api.scrapeatlas.com/v1/reddit/subreddit/details?subreddit=Example",
{
headers: {
"x-api-key": process.env.SCRAPEATLAS_API_KEY!
}
}
);
const data = (await response.json()) as Result;
if (data.status === "failed" || data.status === "challenged") {
throw new Error(`Reddit request failed: ${data.requestId}`);
}
console.log(data);import requests
response = requests.get(
"https://api.scrapeatlas.com/v1/reddit/subreddit/details",
headers={"x-api-key": "YOUR_API_KEY"},
params={
"subreddit": "Example"
},
timeout=60,
)
data = response.json()
print(data["status"], data)package main
import (
"encoding/json"
"fmt"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.scrapeatlas.com/v1/reddit/subreddit/details?subreddit=Example", nil)
req.Header.Set("x-api-key", "YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
var data map[string]interface{}
json.NewDecoder(resp.Body).Decode(&data)
fmt.Println(data["status"], data)
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
var client = HttpClient.newHttpClient();
var request = HttpRequest.newBuilder()
.uri(URI.create("https://api.scrapeatlas.com/v1/reddit/subreddit/details?subreddit=Example"))
.GET()
.header("x-api-key", "YOUR_API_KEY")
.build();
var response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}/v1/reddit/subreddit/detailsJSON response# ScrapeAtlas · use your customer API key
export BASE_URL="https://api.scrapeatlas.com"
curl --get "$BASE_URL/v1/pinterest/search" \
-H "x-api-key: $SCRAPEATLAS_API_KEY" \
--data-urlencode "query=synthetic recipes"const baseUrl = "https://api.scrapeatlas.com";
const url = new URL('/v1/pinterest/search', baseUrl);
url.searchParams.set("query", "synthetic recipes");
const response = await fetch(url, {
method: 'GET',
headers: {
'x-api-key': process.env.SCRAPEATLAS_API_KEY
}
});
const data = await response.json();
console.log(data);type Result = {
status: "success" | "partial" | "failed" | "challenged";
requestId: string;
[field: string]: unknown;
};
const response = await fetch(
"https://api.scrapeatlas.com/v1/pinterest/search?query=synthetic+recipes",
{
headers: {
"x-api-key": process.env.SCRAPEATLAS_API_KEY!
}
}
);
const data = (await response.json()) as Result;
if (data.status === "failed" || data.status === "challenged") {
throw new Error(`Pinterest request failed: ${data.requestId}`);
}
console.log(data);import requests
response = requests.get(
"https://api.scrapeatlas.com/v1/pinterest/search",
headers={"x-api-key": "YOUR_API_KEY"},
params={
"query": "synthetic recipes"
},
timeout=60,
)
data = response.json()
print(data["status"], data)package main
import (
"encoding/json"
"fmt"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.scrapeatlas.com/v1/pinterest/search?query=synthetic+recipes", nil)
req.Header.Set("x-api-key", "YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
var data map[string]interface{}
json.NewDecoder(resp.Body).Decode(&data)
fmt.Println(data["status"], data)
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
var client = HttpClient.newHttpClient();
var request = HttpRequest.newBuilder()
.uri(URI.create("https://api.scrapeatlas.com/v1/pinterest/search?query=synthetic+recipes"))
.GET()
.header("x-api-key", "YOUR_API_KEY")
.build();
var response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}/v1/pinterest/searchJSON response# ScrapeAtlas · use your customer API key
export BASE_URL="https://api.scrapeatlas.com"
curl --get "$BASE_URL/v1/instagram/profile" \
-H "x-api-key: $SCRAPEATLAS_API_KEY" \
--data-urlencode "handle=example"const baseUrl = "https://api.scrapeatlas.com";
const url = new URL('/v1/instagram/profile', baseUrl);
url.searchParams.set("handle", "example");
const response = await fetch(url, {
method: 'GET',
headers: {
'x-api-key': process.env.SCRAPEATLAS_API_KEY
}
});
const data = await response.json();
console.log(data);type Result = {
status: "success" | "partial" | "failed" | "challenged";
requestId: string;
[field: string]: unknown;
};
const response = await fetch(
"https://api.scrapeatlas.com/v1/instagram/profile?handle=example",
{
headers: {
"x-api-key": process.env.SCRAPEATLAS_API_KEY!
}
}
);
const data = (await response.json()) as Result;
if (data.status === "failed" || data.status === "challenged") {
throw new Error(`Instagram request failed: ${data.requestId}`);
}
console.log(data);import requests
response = requests.get(
"https://api.scrapeatlas.com/v1/instagram/profile",
headers={"x-api-key": "YOUR_API_KEY"},
params={
"handle": "example"
},
timeout=60,
)
data = response.json()
print(data["status"], data)package main
import (
"encoding/json"
"fmt"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.scrapeatlas.com/v1/instagram/profile?handle=example", nil)
req.Header.Set("x-api-key", "YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
var data map[string]interface{}
json.NewDecoder(resp.Body).Decode(&data)
fmt.Println(data["status"], data)
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
var client = HttpClient.newHttpClient();
var request = HttpRequest.newBuilder()
.uri(URI.create("https://api.scrapeatlas.com/v1/instagram/profile?handle=example"))
.GET()
.header("x-api-key", "YOUR_API_KEY")
.build();
var response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}/v1/instagram/profileJSON responseUse your ScrapeAtlas API key. Replace the sample input with your own.
Pay as you go
Start free.
Build at your pace.
One-time credit packs, priced in US dollars. Credits never expire, and there is no monthly commitment.
Free
Try the API with your next idea.
$0No credit card needed
100 free credits
One starter grant per account
Starter
For a new idea or a one-off project.
$19USD / one-time
10,000 credits
$1.90 per 1,000 credits
Growth
PopularFor regular workflows and bigger builds.
$89USD / one-time
50,000 credits
$1.78 per 1,000 credits
Save 6.3% compared with Starter
Scale
For high-volume data collection.
$249USD / one-time
200,000 credits
$1.25 per 1,000 credits
Save 34.5% compared with Starter
Enterprise Plan
Want to scrape larger volumes?
Let’s talk about a plan that fits your scale.
Before you start
Frequently asked questions
The essentials, from your first request
to the way you build.
The basics
Find your data. Make it useful.
What does ScrapeAtlas do?
ScrapeAtlas brings public social media data into your software. Send a request for a profile, post, video or conversation, and get structured JSON that you can use in your product or workflow.
What kind of data can I explore?
Explore social profiles, posts, comments, videos, transcripts, ad creatives, creator links and marketplace listings. The platform reference shows the requests and fields for each API.
What can I build with it?
Build creator discovery tools, content research workflows, brand dashboards and market intelligence products. Combine profiles, engagement, conversations or transcripts with your own analysis to answer the questions that matter to your users.
Building with the API
From your first call to your next idea.
How do I make my first request?
Create your ScrapeAtlas account, generate an API key in the dashboard and choose an endpoint from the docs. Add your key to the x-api-key header and send the request. The API playground lets you try requests and inspect their responses.
Can I use my existing tools and language?
Yes. ScrapeAtlas works over HTTP, so you can call it from Python, JavaScript, cURL or a workflow tool with an HTTP request step. Use the CLI for terminal scripts and the documentation’s request examples as a starting point.
How do I connect an AI agent?
Connect your MCP-compatible client to the ScrapeAtlas MCP server using your API key. Your agent can then discover platform tools and request social data. The agent reference also gives coding assistants a readable guide to the API.
What does the response look like?
Responses contain structured JSON with the data returned by the endpoint. The API reference includes field descriptions and example responses, including pagination details, so you can map the result into your application.
Credits & support
Start small. Keep building.
Can I try ScrapeAtlas before buying credits?
Yes. Your account starts with 100 free credits, with no credit card needed. Create a key and try the API with the data you want to build around.
How do credits and top-ups work?
A successful retrieval uses one credit, including partial results and valid empty collections. LinkedIn post search, Quora search and Threads user search use two credits per successful request; each endpoint page shows its price. Each additional page you request is another request. Failed requests cost zero credits, and internal retries cost nothing extra. Buy one-time packs in Billing when you need more. Your balance is shared across your API keys, and credits never expire.
Where can I get help with an integration?
Tell us what you are building and which platform or endpoint you are working with through Contact. You can also reach us from Support in your dashboard. For request formats and examples, start with the API documentation.
Have something else in mind?
Talk to usMake something with it
Ready to build?
Bring social data into your next project.
Start with 100 free credits and see what you can build.