For developers

Short-form video data as an MCP server and an API.

Add ShortsIntel to Claude Code, Codex, Cursor or any Assistant that calls an API: Research, video analysis, creator Scores and daily Trackers on TikTok, Reels and Shorts, prepaid and charged per Run.

Run in a terminal

claude mcp add --transport http shortsintel \
  https://www.shortsintel.com/api/mcp \
  --header "Authorization: Bearer YOUR_KEY"
These snippets need a key: sign up (1,000 credits free), then paste it at YOUR_KEY. Claude.ai and Codex connect over OAuth, no key. VS Code is in the MCP guide.

Public data from the platforms short-form lives on

  • TikTok
  • Instagram Reels
  • YouTube Shorts
  • Facebook
  • Meta Ads

What you can ask

Your Assistant picks from 29 tools. You ask the question.

  • A niche

    “What is working in my niche right now?”

    • research
    • get_research
    • search_videos
  • A video or a creator

    “Is this creator's last video an outlier?”

    • get_video
    • get_comments
    • score_video
    • get_creator
    • get_hashtag_or_sound
    • get_keyword
  • Change over time

    “Watch my competitors and tell me when something moves.”

    • track
    • list_trackers
    • get_tracker
    • set_tracker_state
    • set_tracker_intelligence
    • set_tracker_focus
    • delete_tracker
    • get_changes
    • list_collections
    • create_collection
    • rename_collection
    • delete_collection
    • add_to_collection
    • remove_from_collection
    • act_on_collection
  • Ads

    “What ads is this brand running?”

    • search_ads
    • get_ad
  • Your account

    “What have I spent this week?”

    • get_run
    • get_usage
    • get_balance

Every question is a Run.

A Run is one piece of work: a search, a video analysed, a Research, a day of tracking. It is the only thing charged, once, when it finishes.

Ask the price first

Pass estimate: true and a paid tool returns its cost, and whether the answer is stored, without charging anything.

Pay for delivered work

A failed Run charges nothing. A partial Run charges only for what completed. A stored answer costs the same as a fresh one.

Read it again for free

A finished Run stays readable forever at no cost, so a follow-up about yesterday's research does not pay twice.

It says what it does not know

Instagram search is best-effort, so results say coverage: "partial" rather than quietly returning less.

Pricing

Prepaid, per Run. No subscription.

Top up a Balance in Credits and each Run draws from it. New accounts get 1,000 credits, valid for 90 days. Top-ups buy 1,000 credits per US dollar and start at $10.

Research a niche

1,036 credits

once

One intent in, a Digest out: themes, hooks, sentiment and angles from the top videos on three platforms.

Track 10 creators daily

~1,800 credits

a month

A cycle a day per creator, and a Change Report only on the days something moved. Analysis of new videos is off by default; turn it on and each new video a cycle finds adds 20 credits.

Analyse 20 videos

460 credits

once

Hook, call to action, format, on-screen text and brand safety for each, read from the video itself.

Every tool, every price

Open a tool to read the description your Assistant reads, word for word.

A niche

  • Research a nicheresearch1,036 credits for up to 50 enriched videos, then 20 credits each, at most 4,036 credits

    Run a Research: searches TikTok, Instagram Reels and YouTube Shorts (plus Facebook when platforms names it) for an intent, de-duplicates, analyses the top videos, ranks them and drops off-topic videos before analysing them, and returns a Digest (themes, verbatim hooks with templates, winning formulas, audience gaps from comments, sentiment, recommended angles, with lifts computed in code) plus the ranked videos, outlier creators, hashtags and sounds. Costs 1,036 credits for up to 50 enriched videos, then 20 credits each (at most 4,036 credits). Typically takes 1-3 minutes for 50 videos, depending on how busy the video analysis service is, longer toward 200: this tool waits up to 60 s, then returns a run id to poll with get_run (run.progress shows how far it has got).

  • Read a researchget_researchFree

    Read a research you have already run, for free, as many times as you like. Give it the run id a previous research returned and an aspect: digest for the synthesis, videos for the shortlist, creators, hashtags or sounds for the evidence behind it (each sound with its author and is_original, true for original audio and false for a catalogue track, so trend sounds can be told from voiceovers). Filters depend on the aspect: every list takes platforms, order_by, sort, limit and offset; videos also take view bounds, dates, creator, hashtag and sound, for example TikTok only, over 100k views, best outlier first; creators also take follower bounds; digest takes only as_of. A filter the aspect does not take is refused, not ignored. This does NOT run a research and costs nothing: use research (which charges 1,036 credits and takes minutes) to collect a new one, and this to ask a narrower question of one you already have. Numbers are frozen as the research saw them; pass as_of=latest for the newest this API holds.

  • Search videossearch_videos3 credits per platform searched, per page; +20 credits per enriched video with intelligence=true (top 20); with focus +3 credits per Video judged, +1 credit per must_mention rejection

    Keyword search across platforms. Returns up to 30 normalised videos per page with stats. Cheap (3 credits per platform searched, per page; 9 credits for all three). Add intelligence=true to analyse the top 20 (+20 credits each, async); a search that finds no videos still completes and is charged the page fee. A video over 10 minutes is not analysed or charged: its item fails with video_too_long. Instagram results are best-effort (coverage: partial). Facebook is opt-in: name it in platforms (best-effort, coverage: partial, views only where Facebook shows them, no other counts), and intelligence=true analyses its videos like the others. Pass focus to hide off-focus results (off_focus_count says how many; include_off_focus=true shows them with verdicts), +3 credits per Video judged, +1 credit per must_mention rejection, nothing for one already judged; with intelligence only in-focus and unjudged results are analysed.

A video or a creator

  • Get a videoget_video3 credits plain; with include=intelligence 23 credits instead; transcript only 10 credits instead; include=download 3 credits alone, else +3 credits

    Look up one video by URL or by platform + id, on TikTok, Instagram (a post, Reel or carousel, by shortcode or /p/, /reel/ URL), YouTube (a Short or long-form video by 11-character id or watch, shorts or youtu.be URL) or Facebook (a video or reel, by numeric id or a /reel/, /watch?v= or /{page}/videos/ URL). Returns metadata (its sound with author and is_original: true for original audio, false for a catalogue track, null when the platform did not say), stats, the latest Snapshot and Scores when history exists, plus what the platform itself declares: title (YouTube and Facebook, apart from the description), commerce (ad, paid partnership or YouTube paid promotion, and affiliate flags, shop link, anchors), people (caption mentions or tagged users, and co-authors on Instagram and Facebook), location (Instagram), language, topics (YouTube keywords and genre, TikTok category labels), chapters (YouTube) and ai_generated, each null when the platform did not say (3 credits, any platform). include: ['intelligence'] adds the full analysis object (hook, CTA, tone, visual, safety, and content.transcript_segments with timings on TikTok and YouTube) and is charged 23 credits instead of the lookup price, not on top of it. include: ['transcript'] alone adds the transcript for a flat 10 credits, also instead of the lookup price. include works on every platform (YouTube long-form too); a post that is gone, private or restricted fails with media_unavailable, uncharged. include: ['download'] adds download_url, a link to the video file that works until download_expires_at (7 days after our copy was made, at least a day away), for 3 credits: alone it is the whole price, with intelligence or transcript it is added to theirs; ask again for a fresh link, same price. A video over 10 minutes is refused for analysis and download with video_too_long, before any charge when its length is known, else uncharged. Each call is charged one price, the same whether the answer is stored or fresh. A video's comments are not read here: use get_comments.

  • Get a video's commentsget_comments3 credits per page; +10 credits with analyze

    Read a page of a video's comments (by URL or platform + id) on TikTok, Instagram, YouTube or Facebook: text, likes, replies, parent id and posted and fetched times, never the author. limit sets the page size (1-100, default 25); next_cursor comes back: pass it as cursor for the next page. 3 credits per page. analyze=true adds a sentiment distribution and themes over the video's comments (+10 credits). Each call is charged the same whether the answer is stored or fresh.

  • Score a videoscore_video9 credits

    Judge a video (by URL or platform + id) against its creator's baseline: outlier multiple (views vs the creator's median), velocity (views per hour since posting) and percentile. Fetches the creator's recent videos if no baseline exists (9 credits).

  • Get a creatorget_creator6 credits; videos pages 3 credits; with intelligence=true the page is free, +20 credits per analysed video (top 20)

    Creator profile with follower stats (following_count, links, joined_at, country, business {is_business, category}, verified, total_views on YouTube; null when the platform does not report them), contact {email, phone, address, website, source} the account publishes itself (a Facebook Page's public details, else the first email in the bio; null when none; follow anti-spam law when using it), baseline metrics (median views, engagement rate, posting cadence) and Scores, on TikTok, Instagram, YouTube or Facebook (a Page, linked to its Meta Advertiser when known); pass include: ['videos'] to add recent videos (6 credits). On Instagram and Facebook, videos_from picks the Reels (default) or all posts including carousels, and next_cursor comes back: pass it as cursor for the next page (3 credits). On YouTube the handle may be a channel id (UC…), the videos are the channel's Shorts, paged the same way. intelligence: true analyses the creator's stored videos instead, on every Platform, like search_videos with intelligence: up to 20 per page at +20 credits each, async, the page itself free; a video that cannot be analysed (including video_too_long past 10 minutes) comes back with intelligence: null and why, uncharged.

  • Get a hashtag or soundget_hashtag_or_soundhashtag 3 credits, sound 6 credits

    Look up a hashtag or a sound (TikTok music / Instagram audio): totals, trend direction, top videos and the latest Snapshot (hashtag 3 credits, sound 6 credits). A sound adds album, artists, is_commercial (cleared for ads), full_duration_seconds, released_at; a TikTok hashtag platform_id, description; null when unreported. videos: true pages its Videos instead, in the platform's order and always fresh, at the same price per page with no lookup on top; pass next_cursor back as cursor for the next page.

  • Get a keywordget_keyword3 credits; with focus +3 credits per Video judged, +1 credit per must_mention rejection

    Look up a Keyword: one page of a platform's search for a phrase (relevance order, past month) on tiktok, instagram, youtube or facebook: sample stats, trend since the last lookup, and the top 10 videos by views. Sample-based, not platform totals. Case and extra spaces are ignored ('skincare' and 'skin care' differ), at most 100 characters. Instagram and Facebook are best-effort (coverage: partial). 3 credits, the same when a lookup under 24 h old answers. Pass focus to judge the top videos against it and hide the off-focus ones (off_focus_count says how many; include_off_focus=true shows them with verdicts), +3 credits per Video judged, +1 credit per must_mention rejection, nothing for one already judged; the stats stay unfiltered. To watch it daily, track with kind=keyword.

Change over time

  • Track a targettrack6 credits per creator cycle, 3 credits per hashtag cycle, 3 credits per keyword cycle, 6 credits per sound cycle, 30 credits per advertiser cycle, including the first one run on create; +20 credits per new video or Ad with intelligence; with a focus +3 credits per video judged, +1 credit per must_mention rejection; tracking a target you already track is free

    Create a daily Tracker on a creator, a hashtag, a keyword, a sound or a Meta or TikTok Advertiser (video is deprecated and returns kind_deprecated, and nothing is charged). Creator: platform tiktok, instagram or facebook (youtube returns unsupported_platform for now); target is the handle or profile URL (a numeric Page id also works on Facebook); 6 credits a cycle; a Change Report only when something notable happens (new videos, outliers, followers +/-10%, velocity spikes). Hashtag (kind=hashtag, platform tiktok or instagram): target is the tag, with or without '#'; 3 credits a cycle, which samples one page of the tag's videos and reports when the sample's median views move 25% or more or a video enters its top 10 (sample-based, not platform totals). Keyword (kind=keyword, platform tiktok, instagram, youtube or facebook): target is the search phrase (case and extra spaces ignored); 3 credits a cycle, which samples one page of the platform's search for it and reports the same way as a hashtag (median views move 25% or more, or a new top-10 video). Sound (kind=sound, platform tiktok): target is the sound id, the number at the end of a tiktok.com/music/ URL, or that URL; 6 credits a cycle, which reads the sound's platform video count and one page of its videos and reports when the video count rises 10% or more or the most viewed video changes. Advertiser (kind=advertiser, platform meta or omitted): target is the Facebook Page id or Page URL (a name works when only one Advertiser carries it, else advertiser_ambiguous with candidates, free); 30 credits a cycle, which reads all the Advertiser's Ads (running and stopped) and reports new Ads, stopped Ads, Ads whose variant count grew, and new countries or placements. TikTok Advertiser (kind=advertiser, platform tiktok; EU/EEA, CH, UK and Turkey Ads only): target is the ad library advertiser id, its library.tiktok.com URL or its name (several exact matches: advertiser_ambiguous with candidates; none, or a bare id not seen before since the library needs the exact name, not_found; both free); 30 credits a cycle, which reads the Advertiser's recent Ads and reports new Ads (each with targeting, landing page and CTA; 10 included, 3 credits each beyond), stopped Ads (ended, or not shown for 3 days) and Ads whose reach bucket grew; a read the library breaks off is partial, 3 credits per page read up to the cycle price; with intelligence each new Ad is analysed as on Meta and get_changes returns the analysis on the Ad. Creating runs the first cycle immediately and charges it; with too little balance nothing is created and you get insufficient_balance. You only ever have one Tracker per target: tracking something you already track returns that Tracker with created=false, unchanged, and charges nothing; a different focus is not applied (focus_applied=false; use set_tracker_focus). Pass refresh=true with an existing tracker_id to run a cycle now, at the same price. Pass collection (an id or a name like 'Competitors') to also put the Tracker in that Collection; a name you have not used yet creates it. Pass focus (kind=creator, hashtag, sound or keyword; Advertiser and Video Trackers return focus_unsupported_kind) to judge each cycle's sampled videos (a creator's new videos and any of its newest 20 not judged yet; spoken mentions count when the video has an analysis transcript) against your own plain-language statement of relevance: off-focus videos are hidden from get_tracker (include_off_focus=true shows them with reasons), while the sample and its stats stay whole; +3 credits per video the model judges, +1 credit per video ruled out by must_mention, nothing for a video already judged under the same focus. estimate=true quotes the base cycle price, plus a focus's worst case: the +20 credits per new video or Ad with intelligence depends on what the cycle finds. idempotency_key applies to refresh only; create is already idempotent by target.

  • List trackerslist_trackersFree

    List this Customer's Trackers with state, kind and next cycle time. Free.

  • Get a trackerget_trackerFree

    Look up one Tracker: its kind, platform, target, state (active or paused) and whether analysis is on. Refer to it by tracker_id, or by platform and target as you would pass them to track (e.g. tiktok and '@nike'; meta and a Page id for an Advertiser). A target you do not track is not_found: this never starts a Tracker. A Tracker with a focus also returns sample: its latest sampled videos with off-focus ones hidden, off_focus_count, 'N of M in focus' and in-focus stats beside the full-sample stats (a creator Tracker returns recent_videos instead: its newest 20 videos, off-focus ones hidden, with off_focus_count and in-focus stats); include_off_focus=true returns every video with its focus verdict and reason. Free.

  • Pause or resume a trackerset_tracker_stateFree

    Pause (state paused) or resume (state active) one Tracker, found as in get_tracker. A paused Tracker runs no cycles and is charged nothing; resuming brings back its daily cycles at the usual price. Free.

  • Switch tracker analysis on or offset_tracker_intelligenceFree

    Switch analysis of new videos or Ads on (intelligence true) or off (false) for one Tracker, found as in get_tracker, from the next cycle. Switching it on spends Credits: +20 credits per new video or Ad each cycle analyses, on top of the cycle price. The switch itself is free.

  • Set, clear or preview a tracker's focusset_tracker_focus+3 credits per video judged, +1 credit per must_mention rejection; nothing for one already judged; clearing is free

    Set the focus of one Tracker (creator, hashtag, sound or keyword), found as in get_tracker: your plain-language statement of which videos are relevant, exclusions included, plus optional must_mention terms. Setting it judges the latest sample (a creator: its newest videos) now, so the answer already hides the off-focus videos; each edit is a new version, older Change Reports keep their verdicts, and going back to an earlier focus reuses its verdicts. focus null clears it, free: get_tracker shows every video again. preview=true judges a proposed focus the same way and returns every video's verdict and reason without saving it; saving it afterwards costs nothing more. +3 credits per video the model judges, +1 credit per video must_mention rules out, nothing for a video already judged under that focus. estimate=true quotes without judging; other kinds return focus_unsupported_kind.

  • Delete a trackerdelete_trackerFree

    Delete one Tracker, found as in get_tracker. Final: it stops its cycles, its Change Reports stay readable with get_changes, and tracking the target again starts a new Tracker. Free.

  • Get change reportsget_changesFree

    Change Reports for a Tracker, or for a whole Collection (by id or name, e.g. 'Competitors'), merged newest first: new videos, outliers, follower moves and velocity spikes, a video that became an ad, a creator's bio links or verified badge changing, a hashtag's or keyword's median-view moves and new top videos, a sound's video-count rises and new top video, with before/after numbers. Pass since to see only what changed after a time. A Tracker with a focus lists only in-focus videos and counts the hidden ones in off_focus_count (including those of quiet cycles before it); include_off_focus=true lists them as off_focus_videos with verdicts and reasons. Free.

  • List collectionslist_collectionsFree

    List this Customer's Collections: named sets of Trackers such as 'Competitors', 'Our accounts' or 'Influencers', each holding one kind (creator, hashtag, keyword, sound or advertiser; older ones may hold the deprecated video kind), with how many Trackers are in each. Free.

  • Create a collectioncreate_collectionFree

    Create an empty Collection, a named set of Trackers such as 'Competitors'. kind (creator, hashtag, keyword, sound or advertiser) is fixed once created. A Collection is only a named set: pausing, analysis and cycles belong to each Tracker, and one Tracker can sit in several Collections while being charged once per cycle. You rarely need this first: add_to_collection and track create a Collection from a name you have not used yet. Free.

  • Rename a collectionrename_collectionFree

    Rename a Collection, referred to by id or by its current name. Its Trackers are untouched. Free.

  • Delete a collectiondelete_collectionFree

    Delete a Collection, by id or name. Its Trackers keep running unless delete_trackers=true, which also deletes the member Trackers that are in no other Collection (their Change Reports stay readable with get_changes). The answer always lists the Trackers still being charged. Free.

  • Add to a collectionadd_to_collectionFree for a Tracker you already have; a target not tracked yet runs its first cycle: 6 credits per creator, 3 credits per hashtag, 3 credits per keyword, 6 credits per sound, 30 credits per advertiser, +20 credits per new video with analysis

    Add a Tracker to a Collection (by id or name). Pass tracker_id, or a platform and target: a target you already track is attached as it is (a paused Tracker stays paused), and one you do not track yet starts a Tracker whose first cycle runs now (6 credits for a TikTok, Instagram or Facebook creator, 3 credits for a TikTok or Instagram hashtag, 3 credits for a TikTok, Instagram, YouTube or Facebook keyword (target the search phrase, kind=keyword), 6 credits for a TikTok sound, 30 credits for a Meta Advertiser by Page id, Page URL or name, or for a TikTok Advertiser (platform tiktok) by ad library advertiser id, library.tiktok.com URL or name; only those can be tracked today). One advertiser Collection holds Meta and TikTok Advertisers. A name you have not used yet creates that Collection, with the Tracker's kind (pass kind when adding by target), once the Tracker exists. A Tracker of a different kind than the Collection is refused with collection_kind_mismatch. Pass estimate to get the price first. Adding a Tracker you already have is free.

  • Remove from a collectionremove_from_collectionFree

    Take a Tracker (tracker_id) out of a Collection (by id or name). The Tracker itself keeps running, and stays in its other Collections. Free.

  • Act on every memberact_on_collectionFree for pause, resume and intelligence; refresh is one cycle per member: 6 credits per creator, 3 credits per hashtag, 3 credits per keyword, 6 credits per sound, 30 credits per advertiser, +20 credits per new video with analysis

    Pause, resume, refresh or switch analysis for every Tracker in a Collection (by id or name) at once (action intelligence takes intelligence true or false). pause, resume and intelligence write through to each member Tracker and are free, but switching intelligence on adds +20 credits per new video or Ad analysed in later cycles. refresh runs every member's cycle now as one Run and spends Credits: 6 credits per creator, 3 credits per hashtag, 3 credits per keyword, 6 credits per sound, 30 credits per advertiser; pass estimate to get the price first. A Tracker in several Collections is changed for all of them, so pausing one Collection pauses shared members in the others: every answer lists those in trackers_in_other_collections.

Ads

  • Search ad librariessearch_adsMeta 1 credit per Ad delivered, +20 credits per Ad analysed (computed or stored); TikTok 3 credits per page

    Search the Meta or TikTok ad library by keyword or advertiser (exactly one). Meta: 1 credit per Ad delivered; filters country (omit for all countries), status (active default, inactive, all), kind (commercial default, political, issue, all), media_type, placements, started_after, started_before; limit up to 500 (default 50), next_cursor for more; order_by relevance (default), winner, days_running or start_date sorts the page. Each Meta Ad comes back trimmed (copy, CTA, landing URL, media URLs, dates, placements, countries, variant count, days running, a 0-100 winner Score from days running and variants added relative to the Advertiser's other Ads, disclosed spend and reach) and is stored with a Snapshot. A library outage is source_unavailable and costs nothing; one part-way through is a partial run charged only for the Ads delivered. Meta analyze=true adds analysis to the first 50 Ads (video Ads: transcript, hook, CTA, format, safety; image and carousel Ads: copy angle, offer, CTA, visual format, topics, sentiment) at +20 credits per Ad, whether computed or already stored; an Ad whose analysis fails is not charged and the run is partial. TikTok: 3 credits per page of up to 30, EU/EEA, CH, UK and Turkey Ads only, no country or Meta filters, no analyze; advertiser: id, library URL or name; a name several carry is advertiser_ambiguous (409, free), candidates' url to pass back. get_ad tiktok_ad_id reads one Ad's targeting.

  • Get an Ad or Advertiserget_adAd 3 credits, +20 credits with analyze (Meta); Advertiser 15 credits (Meta or TikTok); TikTok Ad 3 credits

    Look up one Meta Ad by its Ad Library id (library_id), one Advertiser by its Facebook Page id (page_id), one TikTok Advertiser (platform tiktok with advertiser_id), or one TikTok Ad by its ad library id (tiktok_ad_id); pass exactly one. Ad mode: copy, CTA, landing URL, media URLs, dates, running state, placements, countries, variant count, days running, disclosed spend and reach (3 credits, the same when served from our copy observed in the last 6 hours). An Ad Meta has removed is still returned from our stored copy with removed_from_library: true at 3 credits; an id never seen is not_found and costs nothing. analyze=true adds Ad analysis (+20 credits, computed or already stored). Snapshot history and stored analysis are free over REST at /v1/ads/meta/{library_id}/snapshots and /intelligence. Advertiser mode: the Advertiser's profile (name, Page URL, linked Instagram account and Creator when Meta shows one, running and total Ad counts) after reading all its Ads, at 15 credits (the same when served within 6 hours of the last complete read); its Ads are search_ads with advertiser=page_id. TikTok Advertiser mode (advertiser_id: the library's advertiser id, its library.tiktok.com URL or its name; several exact name matches are advertiser_ambiguous, none not_found, as is a bare id not seen before since the library needs the exact name, all free): name, TikTok account, registry location, paid by, running and total Ad counts, at 15 credits (6 h reuse). TikTok mode (3 credits, EU/EEA, CH, UK and Turkey Ads only): copy, media, dates, landing URL, CTA, objective, advertiser and its TikTok account, targeting with impressions per country by age and gender; or Creative Center engagement (CTR, likes, comments, shares) when only it answers. Stored like Meta's (6 h reuse, removed_from_library), with any analysis a Tracker stored, free. Unknown id is not_found, free.

Your account

  • Get a runget_runFree

    Poll a Run by id. Returns status and, once completed or partial, the full result. Free, and never re-runs the work. Poll every 5 to 15 s for research, 2 to 5 s for enrichment.

  • Get usageget_usageFree

    Recent charges, one per charged Run, with the Run behind each one: kind, status, charge and list price in Credits, and when, plus the total charged. Use it to see what has already been paid for before repeating work. Free.

  • Get balanceget_balanceFree

    Prepaid balance in Credits, plus each Grant (such as the Starter Grant) with the Credits it has left and when they expire. Grants are spent first. Free.

The same prices apply over REST. Every parameter that changes a price is in the API reference; balance and top-ups are on Pricing.

What we hold, and what you may do with it

ShortsIntel processes public short-form video data (posts, captions, public metrics, public profiles) under legitimate interest. Media files are deleted after analysis, and a copy made for a download after 7 days. Raw comments are purged after 90 days; the sentiment drawn from them is kept and never carries usernames. Snapshots of public numbers are kept and shared across customers, which is why history is there from your first call.

Derived works are yours to sell: the analyses, reports, scores and dashboards you build on the output. Republishing bulk raw records, mirroring the data, or using it to target or profile individuals is prohibited. Read the terms and the privacy policy.