CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

apify-ultimate-scraper

Universal AI-powered web scraper for any platform. Scrape data from Instagram, Facebook, TikTok, YouTube, LinkedIn, X/Twitter, Google Maps, Google Search, Google Trends, Reddit, Airbnb, Yelp, and 15+ more platforms. Use for lead generation, brand monitoring, competitor analysis, influencer discovery, trend research, content analytics, audience analysis, review analysis, SEO intelligence, recruitment, or any data extraction task.

Quality

88%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

SKILL.md
Quality
Evals
Security

Quality

Content

93%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

This is a well-engineered skill body: a lean, copy-paste-ready CLI workflow with useful non-obvious rules (stderr redirection, telemetry user-agent), dynamic fallbacks (actors search when the index has no match), and an exemplary progressive-disclosure structure — every referenced file exists, is substantive, and is one level deep. The only gap is a missing explicit failure-recovery loop (what to do on FAILED runs), which keeps workflow clarity at 4 rather than 5.

DimensionReasoningScore

Conciseness

The body is lean and operational: three terse global rules ('--json', user-agent telemetry, '2>/dev/null' because 'stderr contains progress messages that break JSON parsers'), copy-paste commands, and output-field mappings ('.id', '.defaultDatasetId', '.stats.durationMillis') — it never explains concepts Claude already knows (no 'what is an Actor', no library background). Every token earns its place, matching the anchor-5 example's bare heading-plus-command pattern; not 4, since I found no padded or over-explanatory passage to trim.

5 / 5

Actionability

Fully executable copy-paste commands throughout: 'apify actors call "ACTOR_ID" --input-file input.json --user-agent ... --json 2>/dev/null', with guidance on inline vs file inputs, result fetching ('apify datasets get-items DATASET_ID --format csv'), non-blocking runs with polling ('apify runs info RUN_ID ... check .status for SUCCEEDED'), and delivery conventions (filename format 'YYYY-MM-DD_descriptive-name.csv', console links). Only placeholders like ACTOR_ID are left to the reader, which is appropriate; matches anchor 5's 'copy-paste ready... covers the common cases'.

5 / 5

Workflow Clarity

A clear four-step sequence (select Actor -> fetch schema + check gotchas -> configure/run -> deliver), with checkpoints: gotchas review before PPE runs, 'Skip user preferences for simple lookups', and status polling ('check .status for SUCCEEDED') before fetching results. It falls short of anchor 5 because there is no explicit error-recovery feedback loop — e.g. what to do when a run's status is FAILED or TIMED-OUT beyond the Troubleshooting pointer to gotchas.md; clearly above anchor 3, whose 'test the output' step is implicit, since status verification and pre-run cost checks are explicit.

4 / 5

Progressive Disclosure

The body is a clean overview that delegates all detail through well-signaled, one-level-deep references, all verified to exist and be substantive: 'references/actor-index.md' for Actor selection, 'references/gotchas.md' for pitfalls, and a task-keyword routing table of 14 'references/workflows/*.md' guides (lead-generation.md, competitive-intel.md, etc.). This is the anchor-5 pattern exactly (concise overview + clearly signaled reference files with easy navigation); nothing is inlined that belongs in a separate file, and no reference nests deeper than one level.

5 / 5

Total

19

/

20

Passed

Description

78%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong description with an explicit 'what' and 'when', concrete platform enumeration, and abundant natural trigger terms. Its weaknesses are a thin action vocabulary ('scrape data' does all the work while use cases substitute for distinct actions), the buzzword 'AI-powered', and a broad 'any data extraction task' catch-all that inflates scope and raises conflict risk with other extraction skills.

Suggestions

Replace the catch-all 'or any data extraction task' with one or two additional concrete actions (e.g. 'extract followers, comments, and post engagement') so the action list is specific rather than exhaustive-sounding.

Drop the 'AI-powered' qualifier and add natural phrasings users actually type — 'get followers', 'extract comments', 'pull posts', 'scrape reviews' — to round out trigger coverage.

Trim 'Universal... for any platform' to the supported platform count (e.g. 'for 27+ platforms') to reduce over-claiming and conflict with other scraping skills.

DimensionReasoningScore

Specificity

The description names its domain ('Universal AI-powered web scraper') and one concrete action ('Scrape data from Instagram, Facebook, TikTok...') plus a concrete platform list, but the action vocabulary never expands beyond 'scrape data' — the 11 use cases ('lead generation, brand monitoring, competitor analysis...') describe applications rather than distinct actions, so coverage is not comprehensive. It sits at anchor 3 ('domain and 1-2 concrete actions'); not 4 because it lacks the 'several specific actions' of the anchor-4 example ('extracts text, fills forms, converts pages'), and not 2 because the platform enumeration is far more concrete than a bare 'Processes PDF files'.

3 / 5

Completeness

Both halves are explicit: the 'what' is 'Universal AI-powered web scraper... Scrape data from [12 named platforms] and 15+ more', and the 'when' is an explicit trigger clause ('Use for lead generation, brand monitoring, competitor analysis, influencer discovery, trend research... or any data extraction task') with 11 concrete trigger phrases. This matches anchor 5's pattern of an explicit what-and-when with concrete triggers; not 4, where the 'when' is present but generic ('Use when working with PDF files').

5 / 5

Trigger Term Quality

Strong natural keyword coverage: 12 platform names users would literally say (Instagram, TikTok, YouTube, LinkedIn, X/Twitter, Google Maps, Reddit, Yelp...) plus natural use-case phrases ('lead generation', 'competitor analysis', 'influencer discovery', 'review analysis', 'SEO intelligence', 'recruitment', 'data extraction'). Not 5 because common phrasings users actually use — e.g. 'get followers', 'extract comments', 'pull posts', 'pricing data' — are absent and no synonyms beyond 'scrape'/'data extraction' appear; clearly above 3's 'missing common variations'.

4 / 5

Distinctiveness Conflict Risk

The named platforms (Instagram, TikTok, Airbnb, Google Maps) and use cases give it a distinct trigger footprint unlikely to fire for unrelated skills. It falls short of 5 because the trailing catch-all 'or any data extraction task' and 'for any platform' invite overlap with any other scraping/extraction skill; still clearly above 3, since the dominant triggers are platform-specific rather than the generic 'Works with document files' pattern.

4 / 5

Total

16

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

referenced_paths_exist

Referenced path issues: 14 deeper-than-1-level

Warning

Total

15

/

16

Passed

Repository

apify/agent-skills

Path

skills/apify-ultimate-scraper/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.