Social media scraping API. One POST request, clean JSON back.

Bridgly turns LinkedIn, X (Twitter), Reddit, GitHub, Instagram, TikTok and YouTube into plain HTTPS endpoints. Send a JSON body with a bearer token, get normalized JSON back in about a second. Proxies, browser sessions, logins and anti-bot handling run on our side, so your code stays a single fetch call in any language.

request
curl -X POST \
https://api.bridgly.app/linkedin/get-profile-from-url \
-H "Authorization: Bearer $BRIDGLY_KEY" \
-H "Content-Type: application/json" \
-d '{"memberIdentity":"satya-nadella"}'
response
200 · 428 ms
{
  "timeMs": 428,
  "creditsCost": 1,
  "data": {
    "name": "Satya Nadella",
    "headline": "Chairman & CEO, Microsoft",
    "followers": 10840213
  }
}
[ QUICK START ]

Get started with the REST API in 3 steps

  1. 1

    Create an API key

    Sign up, open API Keys in the dashboard and create a key. It starts with bgly_ and is shown once, so store it in an environment variable straight away.

    .env
    BRIDGLY_API_KEY=bgly_YOUR_KEY
  2. 2

    Send a POST request

    Every endpoint is POST https://api.bridgly.app/<platform>/<action> with a JSON body. Put the key in the Authorization header.

    terminal
    curl -X POST https://api.bridgly.app/reddit/get-user \
    -H "Authorization: Bearer $BRIDGLY_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"username":"spez"}'
  3. 3

    Read the JSON envelope

    A successful call returns the result in data, plus what it cost and how long it took. Errors return an HTTP status and a message instead, and are never charged.

    response.json
    {
    "timeMs": 842,
    "creditsCost": 1,
    "data": { "username": "spez", "linkKarma": 182044, "isMod": true }
    }
[ FEATURES ]

What you get with the Bridgly REST API

One schema across platforms

Shared fields share one name on every platform: username, avatarUrl, createdAt, likeCount, viewCount. Learn one platform’s response and the next one reads the same.

Consistent inputs

Lists take count and cursor and return nextCursor. Lookups accept a handle or the full link: a LinkedIn slug or profile URL, an X handle with or without the @, any YouTube link.

One envelope, one error shape

Every success is { timeMs, creditsCost, data } and every failure is { status, message } with a meaningful HTTP code. One parser covers every endpoint.

Documented down to the field

Every endpoint has an OpenAPI schema with a description and example for each field, so your editor, your codegen and your AI agent all know the shape.

Try it before you write code

Run any endpoint from the dashboard playground, copy the request as cURL, Node.js or Python, and look back at every call you made in the request log.

Failed calls are free

Validation errors, not-found records, rate-limited and failed scrapes cost nothing. You pay only for data you receive.

How the Bridgly REST API works

The API has one shape for everything. You pick an endpoint, such as /linkedin/get-profile-from-url or /x/get-user-tweets, send its input as a JSON body, and receive the data. There is no OAuth app to register with LinkedIn, X or Reddit, no developer account approval and no per-platform rate card. One Bridgly key covers every platform.

PlatformExample endpoints
LinkedIn/linkedin/get-profile-from-url, /linkedin/get-company-from-url, /linkedin/search/jobs, /linkedin/search/people
X (Twitter)/x/get-user, /x/get-user-tweets, /x/get-followers, /x/search
Reddit/reddit/get-post, /reddit/list-subreddit-posts, /reddit/search/comments
GitHub/github/get-profile, /github/search-repositories, /github/search-code
Instagram/instagram/user, /instagram/user-posts, /instagram/post-comments
TikTok/tiktok/get-user, /tiktok/get-video-comments, /tiktok/search-videos
YouTube/youtube/get-video (with transcript)

Call the API from JavaScript

Any HTTP client works. This example uses the built-in fetch in Node.js to read a LinkedIn profile. Keep the key on the server: anyone holding it can spend your credits.

linkedin-profile.mjs
const res = await fetch(
"https://api.bridgly.app/linkedin/get-profile-from-url",
{
method: "POST",
headers: {
Authorization: `Bearer ${process.env.BRIDGLY_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ memberIdentity: "satya-nadella" }),
},
);
if (!res.ok) throw new Error(`Bridgly ${res.status}`);
const { data, creditsCost } = await res.json();
console.log(data.headline, creditsCost);

Writing TypeScript? The TypeScript SDK wraps these same endpoints with typed inputs, typed results, automatic pagination and rate-limit retries.

Call the API from Python

There is nothing to install beyond an HTTP library. Here requests pulls the newest posts of a subreddit.

subreddit_posts.py
import os
import requests
r = requests.post(
"https://api.bridgly.app/reddit/list-subreddit-posts",
headers={"Authorization": f"Bearer {os.environ['BRIDGLY_API_KEY']}"},
json={"subreddit": "programming", "sort": "new", "count": 10},
timeout=60,
)
r.raise_for_status()
for post in r.json()["data"]["posts"]:
print(post["title"])

Paginate through results

List endpoints return one page at a time. count sets the page size where an endpoint takes it, and nextCursor points at the next page. Loop until nextCursor is null: a page can hold fewer results than count and still have more after it.

all-followers.mjs
let cursor;
do {
const res = await fetch("https://api.bridgly.app/x/get-followers", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.BRIDGLY_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ userId: "44196397", cursor }),
});
const { data } = await res.json();
console.log(data.users.length);
cursor = data.nextCursor ?? undefined;
} while (cursor);

Errors and status codes

Errors use one body, { "status": "error", "message": "..." }, and the HTTP status tells you what happened. Branch on the status, not the message text.

StatusMeaningWhat to do
400The JSON body failed validation.Check the endpoint schema in the API reference.
401Missing, malformed or revoked API key.Check the Authorization header and that the key is active.
402Out of credits.Top up from Billing, or turn on auto top-up.
404The profile, post or page does not exist or is not public.Confirm the identifier.
429Rate limit exceeded.Wait for the Retry-After seconds, then retry.
500The scrape failed unexpectedly.Retry after a short delay.

Rate limits

Limits apply per platform and are shared by every key on your account, so a LinkedIn burst never slows down your Reddit calls. The standard limit is 2 requests per second and 80 per minute per platform. Larger credit purchases raise it to 5 per second (Growth) or 25 per second (Scale). Every response carries X-RateLimit-Limit and X-RateLimit-Remaining, and a 429 carries Retry-After. Rejected requests cost no credits. See pricing for the tiers.

[ FAQ ]

REST API questions

Is there a free tier for the Bridgly API?

Yes. Signing up with a business email gives you 100 free credits, which is about 100 calls. No credit card is required. After that you buy credits as you need them, and they never expire.

Which languages can call the REST API?

Any language with an HTTP client: JavaScript, TypeScript, Python, Go, Ruby, PHP, Java, C#, or plain cURL. TypeScript users can also use the official SDK for typed inputs and results.

Do I need a LinkedIn, X or Reddit developer account?

No. Bridgly handles access to each platform. You only need a Bridgly API key, and you never share your own social media logins.

How fast are responses?

Most single-record calls return in about a second. Every response includes timeMs so you can measure it for your own workload.

Can I call the API from the browser?

Do not put your API key in browser or mobile code, because anyone could read it and spend your credits. Call Bridgly from your server or a serverless function and pass the result to your frontend.

What happens when I run out of credits?

Requests return 402 Payment Required until you top up. You can turn on auto top-up in Billing to refill your balance when it falls below a threshold you set.

Pull your first profile in minutes.

Start with 100 free credits on a business email. The same data flows through the API, MCP, SDK and CLI.

APIMCPSDKCLI
free credits

On business email signup. No credit card required.

Start with 100 credits