hasdata — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited hasdata (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.
Cloud platform for extracting public web data. One API key, three execution modes. All endpoints sit under https://api.hasdata.com and authenticate with x-api-key.
curl -G 'https://api.hasdata.com/scrape/google/serp' \
--data-urlencode 'q=coffee' \
-H 'x-api-key: <your-api-key>'401 invalid key, 403 quota exhausted, 429 concurrency cap, 500 server error (retry).
| Mode | Latency | When | Endpoint |
|---|---|---|---|
| Web Scraping API | seconds | Arbitrary URL — JS rendering, CSS/AI extraction, screenshots | POST /scrape/web |
| Scraper APIs (sync) | seconds | Pre-parsed JSON for known platforms (Google, Amazon, Zillow, …) | GET /scrape/<vertical>/<resource> |
| Scraper Jobs (async) | minutes–hours | Bulk extraction, recursive crawling, webhook fan-out | POST /scrapers/<slug>/jobs |
Decision rule. Default to a Scraper API when one exists for the platform (pre-parsed JSON, no selector maintenance). Use Web Scraping for arbitrary URLs not covered by an API. Reach for a Scraper Job only when no API equivalent exists — crawler, contacts, sec-edgar, amazon-bestsellers, amazon-product-reviews — or when async fan-out + webhooks save engineering time over a paginated client loop.
{ "requestMetadata": { "id": "…", "status": "ok", "url": "…" }, "...": "endpoint-specific" }Treat data as valid only if requestMetadata.status === "ok". HTTP 200 alone isn't enough.
q="<Person> <Company> linkedin" → organicResults[0].title + .snippet already carries role + location, no profile-page scrape needed. Same recipe with crunchbase, wikipedia, github, or quoted literals ("[email protected]", "+1 555 …") for reverse lookup./scrape/google/ai-mode for the answer + references → /scrape/web (markdown) on each reference URL → cited RAG context, no vector DB./scrape/google-maps/search returns websites + phones; fan out to /scrape/web with extractEmails: true for full lead rows.crawler Scraper Job with outputFormat: ["markdown"] + includePaths: "/docs/.+" produces an LLM-ready corpus in one submission.knowledgeGraph, localResults, inlineShoppingResults, relatedQuestions carry pre-parsed facts that bypass anti-bot. Always check them before scraping.x-api-key header on every request. Read from HASDATA_API_KEY env. Never hardcode, never log.429 and 5xx only — exponential backoff, jitter. Never retry 4xx (auth, validation).429s.body.id (integer), not `jobId`. Persist it immediately. Poll GET /scrapers/jobs/<id> every 10–30 s with backoff; treat webhooks as best-effort and always pair with polling. On finished the status carries data: {csv, json, xlsx} short-lived URLs — download immediately.See references/code-recipes.md for ready-to-paste Python and TypeScript clients with retry, backoff, bounded concurrency, and the full job lifecycle.
headers["Cookie"]./blog/.+ won't match /Blog/....body.data[i].data; outer wraps with id, jobId, dataId, createdAt, updatedAt.references/web-scraping.md — POST /scrape/web parameters, JS scenarios, AI extraction, cookie auth.references/search.md — Google SERP / Light / AI Mode / News / Shopping / Bing / Trends + pagination.references/ecommerce.md — Amazon (product, search, seller, seller-products) and Shopify.references/real-estate.md — Zillow, Redfin (bracketed filters).references/travel.md — Airbnb, Booking, Google Flights (occupancy rules, token pagination, IATA codes).references/local-business.md — Maps (search/place/reviews/photos/posts), Yelp, YellowPages.references/jobs.md — Indeed and Glassdoor.references/youtube.md — YouTube search / video / channel / transcript.references/scraper-jobs.md — async submit/poll/results, Crawler, Contacts, SEC EDGAR, webhook receiver.references/code-recipes.md — Python / TypeScript clients with retry, backoff, concurrency, polling.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.