SocialData runs scheduled scrapers over Facebook, Instagram, TikTok and RSS sources, normalises every post into one schema, and serves it to your apps and agents over a Bearer-token REST API.
Paste a Facebook, Instagram or TikTok profile URL — or any RSS feed — pick an interval, and the pipeline keeps collecting on its own.
Create a projectRead the same normalised posts over HTTP with a project-scoped token — four GET endpoints, JSON out, no SDK to install.
See the endpointsGroup scraping targets into projects, one task per profile URL, and watch every run from a single dashboard.
Each task carries an interval in hours; the pipeline picks up whatever is due and updates the next run time.
Mint project-scoped Bearer tokens and read your projects, targets and scraped posts over HTTP.
Every attempt is logged as queued, running, succeeded or failed — no silent retries.
Every payload is deduplicated per post and normalised into one typed shape per platform, ready to query or join.
Row-level security scopes data to your organisation, and API keys are stored as SHA-256 hashes only.
Four steps, the same ones the dashboard walks you through.
A project groups scraping targets by brand, campaign, or whatever fits your workflow. It belongs to your organisation, so access follows your members and roles.
Name Brand monitoring Organisation Acme Members 3 · admin, admin, user Targets 0 so far
Paste a profile URL and pick the platform. Each platform's adapter validates the link first, so a malformed or unsupported URL never reaches the scraper.
Platform facebook URL facebook.com/your-page ✓ valid Interval every 24 hours Next run in 24 hours
Every due target is scraped, then reduced in three passes: the payload is kept as collected, deduplicated per post, then normalised into one typed shape per platform.
1 · collected 42 items, kept as returned 2 · deduplicated 38 new, 4 already seen 3 · normalised 38 posts, one schema Status queued → running → succeeded
Mint a project-scoped token and read the normalised posts over HTTP — same records the dashboard shows, no SDK to install. The endpoint reference comes with your account.
Auth project-scoped Bearer token Format JSON, newest first Per call up to 100 posts Fields id · text · engagement · media · time
Name Brand monitoring Organisation Acme Members 3 · admin, admin, user Targets 0 so far
Read-only by design, one token per project. Scroll through the calls.
Every call carries a Bearer token scoped to one project. Tokens are stored as SHA-256 hashes with an expiry you choose, and can be revoked instantly.
{
"projects": [
{
"project_id": 1,
"project_name": "Brand monitoring",
"descriptions": "…"
}
]
}Each target comes back with the profile it scrapes, its interval and the next run, so you can mirror the schedule in your own system.
{
"tasks": [
{
"task_id": 1,
"interval": 24,
"next_run_at": "2026-01-01T00:00:00Z",
"is_active": true,
"profiles": {
"profile_id": 1,
"platform_name": "facebook",
"link_url": "facebook.com/your-page"
}
}
]
}Fetch a single target when you only need its current state — handy for polling a run you just started from the dashboard.
{
"task": {
"task_id": 1,
"project_id": 1,
"interval": 24,
"is_active": true
}
}Reads one profile's posts, newest first, up to 100 per call. Supported today: facebook, instagram, tiktok. Read-only — the public API never writes.
{
"data": [
{
"post_id": "…",
"caption": "…",
"reactions": 0,
"comments": 0,
"posted_at": "2026-01-01T00:00:00Z"
}
]
}{
"projects": [
{
"project_id": 1,
"project_name": "Brand monitoring",
"descriptions": "…"
}
]
}Same collected posts, four different jobs.
Hand the latest captions and engagement for the accounts you track to a model as context. Collection runs on a schedule, so the answers stop being months out of date.
Point a BI tool at the collected posts and let it refresh itself — engagement over time, per account, per platform.
Track the accounts you care about at the interval you choose. New posts land in your project, so you diff periods instead of scrolling.
Runs append rather than overwrite, and a re-run never duplicates what was already collected. A post its author deleted is still in your record.
Isolation is enforced in the database, not in the UI layer.
Members join an organisation as super admin, admin or user, and every project belongs to that organisation.
Database policies scope reads to your own organisation — the web app queries with your session, not a shared key.
Tokens are SHA-256 hashed, tied to a single project, expire on a date you choose, and can be revoked instantly.
The payload as collected, the deduplicated history and the normalised posts are each kept separately, so any figure can be traced back.