Skip to content
ScrapeField

Find and vet creators on TikTok, Instagram and X

A follower count is easy to buy and says little about reach. Find creators through what they post, measure what their recent videos and posts actually get, and check afterwards that a paid post went up and stayed up.

What you get

  • The creators behind a hashtag, filtered to the follower band you pay for.
  • Median views and engagement across a creator’s last thirty videos.
  • Reach on X: median views and likes beside the follower count.
  • Proof a sponsored post ran: still up, tagging you, and what it got.

Worked examples

Each with the calls it makes and what a run costs, multiplied out from the published price of every call.

01

Find creators through a hashtag

Take the recent posts under a hashtag, collect the accounts behind them, and read each profile. Keep the ones in the follower band you pay for — with their bio links, so the outreach address is already on the row.

GET instagram/hashtag× 164 cr
GET instagram/profile× 2472 cr
per hashtag136 cr

≈ $0.081 at the 250k pack

const API = 'https://api.scrapefield.com/v1';
const sf = (path, q) =>
  fetch(API + '/' + path + '?' + new URLSearchParams(q), {
    headers: { Authorization: 'Bearer ' + process.env.SCRAPEFIELD_KEY },
  }).then((r) => r.json());

const q = { tag: 'sourdough', limit: 24 };
const { data: posts } = await sf('instagram/hashtag', q);
const handles = [...new Set(posts.map((p) => p.username))];
const creators = [];

for (const username of handles) {
  const { data: p } = await sf('instagram/profile', { username });
  if (p.followers_count >= 10_000 && p.followers_count <= 100_000) {
    const { followers_count, media_count, bio_links } = p;
    creators.push({ username, followers_count, media_count, bio_links });
  }
}
02

Vet a creator before you pay one

Follower counts are easy to inflate; median views are not. Read the profile and the last thirty videos, and you have the audience a post will actually reach and how much of it engages.

GET tiktok/profile× 13 cr
GET tiktok/videos× 13 cr
per creator6 cr

≈ $0.004 at the 250k pack

const API = 'https://api.scrapefield.com/v1';
const sf = (path, q) =>
  fetch(API + '/' + path + '?' + new URLSearchParams(q), {
    headers: { Authorization: 'Bearer ' + process.env.SCRAPEFIELD_KEY },
  }).then((r) => r.json());

const { data: profile } = await sf('tiktok/profile', { username });
const q = { username, limit: 30 };
const { data: videos } = await sf('tiktok/videos', q);

const views = videos.map((v) => v.view_count ?? 0).sort((a, b) => a - b);
const engaged = videos.reduce(
  (s, v) => s + (v.like_count ?? 0) + (v.comment_count ?? 0), 0,
);

console.log({
  followers: profile.follower_count,
  medianViews: views[Math.floor(views.length / 2)],
  engagement: engaged / views.reduce((s, n) => s + n, 0),
});
03

Size an account by its reach, not its followers

Followers can be bought; views are harder to fake. Read the profile and its newest posts, and compare the median views a post gets with the followers the profile claims.

GET x/profile× 13 cr
GET x/posts× 113 cr
per account16 cr

≈ $0.01 at the 250k pack

const API = 'https://api.scrapefield.com/v1';
const sf = (path, q) =>
  fetch(API + '/' + path + '?' + new URLSearchParams(q), {
    headers: { Authorization: 'Bearer ' + process.env.SCRAPEFIELD_KEY },
  }).then((r) => r.json());

const { data: user } = await sf('x/profile', { username });
const { data: posts } = await sf('x/posts', { username });

const median = (xs) => xs.sort((a, b) => a - b)[Math.floor(xs.length / 2)];
const m = posts.map((p) => p.public_metrics);

console.log({
  followers: user.public_metrics.followers_count,
  medianViews: median(m.map((x) => x.impression_count ?? 0)),
  medianLikes: median(m.map((x) => x.like_count ?? 0)),
});
04

Check a campaign actually ran

A day after each sponsored post goes live, and again a week later, fetch it by its shortcode: is it still up, does it tag you, is it labelled as a paid partnership, and what did it get. A deleted post shows up as an error you can report — and is not charged.

GET instagram/post× 60180 cr
a 30-post campaign, checked twice180 cr

≈ $0.107 at the 250k pack

const API = 'https://api.scrapefield.com/v1';
const sf = (path, q) =>
  fetch(API + '/' + path + '?' + new URLSearchParams(q), {
    headers: { Authorization: 'Bearer ' + process.env.SCRAPEFIELD_KEY },
  }).then((r) => r.json());

const report = [];

for (const shortcode of campaignPosts) {
  const { data: p, error } = await sf('instagram/post', { shortcode });
  if (error) {
    report.push({ shortcode, live: false, reason: error.code });
    continue;
  }

  report.push({
    shortcode, live: true,
    tagged: p.mentions.includes('yourbrand'),
    labelled: p.is_paid_partnership,
    likes: p.like_count, // null if the creator hid it
    comments: p.comments_count,
    views: p.view_count,
  });
}
05

Spot a trend while it is still early

Search a term once a day and rank the videos by views per day since they were posted. What climbs that list fastest is what is about to be everywhere.

GET tiktok/search× 3090 cr
a month, one term daily90 cr

≈ $0.054 at the 250k pack

const API = 'https://api.scrapefield.com/v1';
const sf = (path, q) =>
  fetch(API + '/' + path + '?' + new URLSearchParams(q), {
    headers: { Authorization: 'Bearer ' + process.env.SCRAPEFIELD_KEY },
  }).then((r) => r.json());

const q = { query: 'sourdough', type: 'video', limit: 30 };
const { data } = await sf('tiktok/search', q);

const ranked = data
  .filter((v) => v.create_time && v.view_count !== null)
  .map((v) => {
    const age = (Date.now() - Date.parse(v.create_time)) / 864e5;
    const days = Math.max(age, 1);
    return { url: v.share_url, perDay: Math.round(v.view_count / days) };
  })
  .sort((a, b) => b.perDay - a.perDay);

console.table(ranked.slice(0, 10));

The endpoints

Every call above, with its price. A failed call costs nothing.

What it does not do

Only what a creator’s public profile and posts show: no email address, no audience demographics and no private analytics. YouTube is not covered yet.

Your first call, in a minute

Get a key