domains / data / social-media-data-collection / scrapecreators-api
The two copies describe the same ScrapeCreators API but with materially different procedures and constraints. The gooseworks copy is a provider-agnostic wrapper that prioritizes a managed MCP/CLI runtime, forbids using Orthogonal for discovery, and defines a normalized output contract for parent workflows. The ScrapeCreators copy is a direct REST client that requires a user-owned key, mandates fetching per-endpoint OpenAPI specs before calling, and provides a much larger, explicit endpoint routing table. Neither copy is a strict reproduction of the other; crowning one would hide the alternative runtime strategy and the detailed endpoint routing.
| Repository | Path |
|---|---|
| gooseworks-ai/goose-skills | skills/shared/scrapecreators-api/SKILL.md |
| ScrapeCreators/social-media-research-skills | skills/scrapecreators-api/SKILL.md |
| Role | Repository | Path |
|---|---|---|
| peer | gooseworks-ai/goose-skills | skills/shared/scrapecreators-api/SKILL.md |
| peer | ScrapeCreators/social-media-research-skills | skills/scrapecreators-api/SKILL.md |
# ScrapeCreators API
Use ScrapeCreators to collect structured public social or ad-library data from 27+ platforms.
## Runtime Selection
1. **GooseWorks MCP available:** Call the `data_call_provider` tool with the operation fields. This is the preferred path in ChatGPT, Cowork, and clients without a terminal.
2. **Local GooseWorks CLI available:** Translate the operation into `gooseworks call <provider> <path>`.
3. **User-owned key available:** Call `https://api.scrapecreators.com<path>` with `SCRAPECREATORS_API_KEY` in the `x-api-key` header.
4. **No runtime available:** Ask the user to connect GooseWorks MCP, sign in via CLI, or provide their own key. Do not pretend the operation ran.
Prefer MCP whenever `data_call_provider` is registered. Never print, store, or return credentials.
## Endpoint Discovery
- Use the official OpenAPI at `https://docs.scrapecreators.com/openapi.json` as the source of truth.
- For specific endpoints, fetch the per-endpoint spec at `https://docs.scrapecreators.com/{path}/openapi.json` to get full parameter details, types, and example responses before making the actual API call.
- Do not use Orthogonal search or details to discover ScrapeCreators operations.
## Endpoint Routing
Map user intent to the right endpoint using the tables below. Most operations are GET requests. Use POST only when the official operation requires it (e.g., Meta ad search, Reddit post comments).
### Profiles / User Info
| Platform | Endpoint | Primary Param |
|----------|----------|---------------|
| TikTok | `/v1/tiktok/profile` | handle |
| Instagram | `/v1/instagram/profile` | handle |
| YouTube | `/v1/youtube/channel` | handle, channelId, or url |
| LinkedIn (person) | `/v1/linkedin/profile` | url |
| LinkedIn (company) | `/v1/linkedin/company` | url |
| Facebook | `/v1/facebook/profile` | url |
| Twitter/X | `/v1/twitter/profile` | handle |
| Reddit | `/v1/reddit/subreddit/details` | subreddit or url |
| Threads | `/v1/threads/profile` | handle |
| Bluesky | `/v1/bluesky/profile` | handle |
| Pinterest | `/v1/pinterest/user/boards` | handle |
| Truth Social | `/v1/truthsocial/profile` | handle |
| Twitch | `/v1/twitch/profile` | handle |
| Snapchat | `/v1/snapchat/profile` | handle |
### Posts / Content Feeds
| Platform | Endpoint | Primary Param |
|----------|----------|---------------|
| TikTok videos | `/v3/tiktok/profile/videos` | handle |
| Instagram posts | `/v2/instagram/user/posts` | handle |
| Instagram reels | `/v1/instagram/user/reels` | handle or user_id |
| YouTube videos | `/v1/youtube/channel/videos` | handle or channelId |
| YouTube shorts | `/v1/youtube/channel/shorts` | handle or channelId |
| LinkedIn posts | `/v1/linkedin/company/posts` | url |
| Facebook posts | `/v1/facebook/profile/posts` | url or pageId |
| Twitter tweets | `/v1/twitter/user/tweets` | handle |
| Reddit posts | `/v1/reddit/subreddit` | subreddit |
| Threads posts | `/v1/threads/user/posts` | handle |
| Bluesky posts | `/v1/bluesky/user/posts` | handle or user_id |
### Single Post / Video Details
| Platform | Endpoint | Primary Param |
|----------|----------|---------------|
| TikTok | `/v2/tiktok/video` | url |
| Instagram | `/v1/instagram/post` | url or post_id |
| YouTube | `/v1/youtube/video` | url or video_id |
| Twitter | `/v1/twitter/tweet` | url or tweet_id |
### Ad Libraries
| Platform | Endpoint | Primary Param |
|----------|----------|---------------|
| Meta Ad Library | `/v1/facebook/adLibrary/search/ads` | query, country (POST) |
| Google advertiser ads | `/v1/google/company/ads` | company |
For TikTok Ad Library, TikTok Shop, and other platforms, resolve current operations from the official OpenAPI.
## Collection Rules
1. Confirm platform, market, time window, and sample size.
2. Start with a small request and inspect the response shape.
3. Follow the returned cursor until the requested sample is reached or no cursor remains.
4. Keep the raw source URL, creator handle, platform, publication date, and engagement fields with every item.
5. Deduplicate by platform-native content ID or canonical URL.
6. Separate facts returned by the API from conclusions inferred during analysis.
7. Do not use follower count as a proxy for audience fit or post quality.
## Output Contract
Provider calls should return a normalized source set for the parent workflow:
```json
{
"platform": "instagram",
"query": "brand",
"collected_at": "ISO-8601",
"items": [{"id":"...","url":"...","author":"...","published_at":"...","text":"...","metrics":{}}],
"next_cursor": null,
"limitations": []
}
```
This is a provider skill. Do not stop after dumping API output; return control to the research skill that requested the data.