scraperapi-research-agent — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited scraperapi-research-agent (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
End-to-end autonomous research: ScraperAPI finds and fetches sources → Anthropic Files API ingests them as cited documents → Claude synthesizes a report.
Run it:
# Install dependencies
pip install requests anthropic
# Set env vars
export SCRAPERAPI_API_KEY=your-key
export ANTHROPIC_API_KEY=your-key
# Run
python skills/scraperapi-research-agent/scripts/research_agent.py \
--question "What are the best practices for rate limiting in web APIs?" \
--max-sources 5 \
--output report.mdSee scripts/research_agent.py for the full implementation.
Before starting a research run, establish:
--max-sources (5). Do not loop indefinitely.1. PLAN
↓ Claude decomposes the question into 2–3 targeted search queries
2. DISCOVER
↓ ScraperAPI google/search structured endpoint → list of (url, title, snippet)
3. DEDUPLICATE
↓ Filter to top N unique URLs (default: 5), skipping PDFs and low-quality domains
4. FETCH
↓ ScraperAPI scrape each URL as markdown (output_format=markdown)
↓ Skip pages returning < 200 characters (blocked, error pages)
5. UPLOAD
↓ Upload each scraped page to Anthropic Files API as a text/plain artifact
↓ Store file_id for each source
6. SYNTHESIZE
↓ Claude (claude-opus-4-8, adaptive thinking) reads all document artifacts
↓ Returns structured report with inline citations [1], [2]...
7. CLEAN UP
↓ Delete uploaded file artifacts from Anthropic
↓ Write or print the final report
STOP when: max_sources reached, or all queries exhausted (whichever comes first).The agent stops when any of the following is true:
Without stop conditions, a research loop will keep fetching until credits are gone.
| Flag | Default | Description |
|---|---|---|
--question | (required) | Research question |
--max-sources | 5 | Max pages to scrape (credit budget) |
--output | stdout | Write report to file |
--country | us | ScraperAPI country code for geo-targeted results |
--model | claude-opus-4-8 | Anthropic model for synthesis |
See assets/report_template.md for the report structure.
The report is a markdown document with:
[N] citations| Sources | Scraping credits | Anthropic tokens | Total estimate |
|---|---|---|---|
| 3 | ~3 | ~15K in / ~2K out | Low |
| 5 | ~5 | ~25K in / ~3K out | Medium |
| 10 | ~10 | ~50K in / ~5K out | Higher |
Prompt caching applies to the scraped content on repeated runs for the same question.
GET https://api.scraperapi.com/structured/google/search — finds source URLsGET https://api.scraperapi.com/?output_format=markdown — fetches page contentSee ScraperAPI docs for rate limits and credit costs.
Requires ANTHROPIC_API_KEY with access to claude-opus-4-8 and the Files API beta.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.