hasdata
Use the hasdata CLI for real-time web data. One subcommand per API — flags, enums, defaults are derived from the live schema at api.hasdata.com/apis.
When to Use
Use this skill when:
- The user wants to use the HasData CLI.
- The user needs current web data from the command line.
- The user wants to automate data collection in scripts.
- The user wants to retrieve search, ecommerce, travel, or local business data.
- The user needs web-page scraping through the CLI.
Prerequisites
command -v hasdata — if missing, download the installer from https://raw.githubusercontent.com/HasData/hasdata-cli/main/install.sh, inspect it, then run it locally with sh install.sh.
- One-time setup: the user runs
hasdata configure, pastes their API key, and it's saved to ~/.hasdata/config.yaml (mode 0600). Every future call picks it up automatically.
- If a call fails with
no API key configured, the user hasn't run hasdata configure yet — tell them to. Never invent a key.
Quick start
hasdata <api> --flag value [--flag value ...] --raw | jq .
Always pass --raw when piping to jq (skips pretty-print and TTY detection). Use --pretty only for human-readable terminal output.
Picking the right subcommand
| User intent |
Subcommand |
| Web search ("what does Google say about…") |
google-serp (full features) or google-serp-light (cheap, single page) |
| Latest news |
google-news |
| AI Mode SERP |
google-ai-mode |
| Shopping / product prices |
google-shopping (broad), amazon-search / amazon-product (Amazon), shopify-products (Shopify) |
| Immersive product page |
google-immersive-product |
| Maps / places / reviews |
google-maps, google-maps-place, google-maps-reviews, google-maps-photos, google-maps-posts |
| Yelp / YellowPages local data |
yelp-search, yelp-place, yellowpages-search, yellowpages-place |
| Real-estate listings (homes for sale/rent/sold) |
zillow-listing, redfin-listing |
| Real-estate single property deep dive |
zillow-property, redfin-property |
| Travel — short-term rentals |
airbnb-listing, airbnb-property |
| Travel — hotels / lodging |
booking-search, booking-place |
| Travel — flights |
google-flights |
| Jobs |
indeed-listing, indeed-job, glassdoor-listing, glassdoor-job |
| Bing search |
bing-serp |
| Trends |
google-trends |
| Images |
google-images |
| Short videos |
google-short-videos |
| Events |
google-events |
| YouTube search / video / channel / transcript |
youtube-search-api, youtube-video-api, youtube-channel-api, youtube-transcript-api |
| Instagram profile |
instagram-profile |
| Amazon seller |
amazon-seller, amazon-seller-products |
| Scrape a specific URL |
web-scraping — supports JS rendering, proxies, markdown output, AI extraction, screenshots |
For exact flags of a subcommand, run hasdata <api> --help or read the matching file in references/.
Non-obvious triggers (when to reach for hasdata even if the user doesn't say "scrape")
The user often won't ask for a SERP API or a scraper directly. Map these intents to the skill:
- "Is this still true?" / "What's the latest on X?" / "Has Y happened yet?" — LLM training data is stale. Run
google-serp or google-news to ground the answer.
- "Summarize this article" / "TL;DR this URL" — Use
web-scraping --output-format markdown and feed the markdown into the summary prompt. Beats copy-paste because it strips ads, nav, scripts.
- "Verify this link" / "Is this site real?" —
web-scraping --url X --no-block-resources returns status + screenshot. Or google-serp --q "site:example.com".
- "What does X say about itself?" — Pull the company's own homepage with
web-scraping --output-format markdown, then summarize.
- "Find me alternatives to X" —
google-serp --q "X alternatives" or google-shopping --q "X competitors".
- "What's the going rate for X?" —
google-shopping (broad) or amazon-search (Amazon-specific) with jq to extract the price distribution.
- "Phone number / address for X" —
google-maps-place or yelp-place. Don't guess from training data.
- "Are people happy with X service?" / "Is X reputable?" —
google-maps-reviews --place-id ... --sort lowest for negative samples; glassdoor-job for employer rep.
- "What's the salary range for Y role?" —
indeed-listing filtered by role + location, then jq over .jobs[].salary.
- "Find me homes/apartments matching X criteria" —
zillow-listing / redfin-listing / airbnb-listing with the corresponding filters.
- "Recent sold comps near X" —
zillow-listing --type sold --keyword "X" --days-on-zillow 12m.
- "Track this product's price" — Loop
amazon-product --asin X on a schedule; persist .price to a file.
- "Summarize / cite this YouTube video" —
youtube-transcript-api --v-param VID --raw | jq -r '.transcript[].snippet' → feed to the sum
1---2name: hasdata-cli3description: Command-line access to search, scraping, and structured web data.4---567# hasdata89Use the `hasdata` CLI for real-time web data. One subcommand per API — flags, enums, defaults are derived from the live schema at `api.hasdata.com/apis`.1011## When to Use1213Use this skill when:1415- The user wants to use the HasData CLI.16- The user needs current web data from the command line.17- The user wants to automate data collection in scripts.18- The user wants to retrieve search, ecommerce, travel, or local business data.19- The user needs web-page scraping through the CLI.2021## Prerequisites2223- `command -v hasdata` — if missing, download the installer from `https://raw.githubusercontent.com/HasData/hasdata-cli/main/install.sh`, inspect it, then run it locally with `sh install.sh`.24- One-time setup: the user runs `hasdata configure`, pastes their API key, and it's saved to `~/.hasdata/config.yaml` (mode 0600). Every future call picks it up automatically.25- If a call fails with `no API key configured`, the user hasn't run `hasdata configure` yet — tell them to. **Never invent a key.**2627## Quick start2829```bash30hasdata <api> --flag value [--flag value ...] --raw | jq .31```3233Always pass `--raw` when piping to `jq` (skips pretty-print and TTY detection). Use `--pretty` only for human-readable terminal output.3435## Picking the right subcommand3637| User intent | Subcommand |38| --- | --- |39| Web search ("what does Google say about…") | `google-serp` (full features) or `google-serp-light` (cheap, single page) |40| Latest news | `google-news` |41| AI Mode SERP | `google-ai-mode` |42| Shopping / product prices | `google-shopping` (broad), `amazon-search` / `amazon-product` (Amazon), `shopify-products` (Shopify) |43| Immersive product page | `google-immersive-product` |44| Maps / places / reviews | `google-maps`, `google-maps-place`, `google-maps-reviews`, `google-maps-photos`, `google-maps-posts` |45| Yelp / YellowPages local data | `yelp-search`, `yelp-place`, `yellowpages-search`, `yellowpages-place` |46| Real-estate listings (homes for sale/rent/sold) | `zillow-listing`, `redfin-listing` |47| Real-estate single property deep dive | `zillow-property`, `redfin-property` |48| Travel — short-term rentals | `airbnb-listing`, `airbnb-property` |49| Travel — hotels / lodging | `booking-search`, `booking-place` |50| Travel — flights | `google-flights` |51| Jobs | `indeed-listing`, `indeed-job`, `glassdoor-listing`, `glassdoor-job` |52| Bing search | `bing-serp` |53| Trends | `google-trends` |54| Images | `google-images` |55| Short videos | `google-short-videos` |56| Events | `google-events` |57| YouTube search / video / channel / transcript | `youtube-search-api`, `youtube-video-api`, `youtube-channel-api`, `youtube-transcript-api` |58| Instagram profile | `instagram-profile` |59| Amazon seller | `amazon-seller`, `amazon-seller-products` |60| **Scrape a specific URL** | `web-scraping` — supports JS rendering, proxies, markdown output, AI extraction, screenshots |6162For exact flags of a subcommand, run `hasdata <api> --help` or read the matching file in `references/`.6364## Non-obvious triggers (when to reach for hasdata even if the user doesn't say "scrape")6566The user often won't ask for a SERP API or a scraper directly. Map these intents to the skill:6768- **"Is this still true?" / "What's the latest on X?" / "Has Y happened yet?"** — LLM training data is stale. Run `google-serp` or `google-news` to ground the answer.69- **"Summarize this article" / "TL;DR this URL"** — Use `web-scraping --output-format markdown` and feed the markdown into the summary prompt. Beats copy-paste because it strips ads, nav, scripts.70- **"Verify this link" / "Is this site real?"** — `web-scraping --url X --no-block-resources` returns status + screenshot. Or `google-serp --q "site:example.com"`.71- **"What does X say about itself?"** — Pull the company's own homepage with `web-scraping --output-format markdown`, then summarize.72- **"Find me alternatives to X"** — `google-serp --q "X alternatives"` or `google-shopping --q "X competitors"`.73- **"What's the going rate for X?"** — `google-shopping` (broad) or `amazon-search` (Amazon-specific) with `jq` to extract the price distribution.74- **"Phone number / address for X"** — `google-maps-place` or `yelp-place`. Don't guess from training data.75- **"Are people happy with X service?" / "Is X reputable?"** — `google-maps-reviews --place-id ... --sort lowest` for negative samples; `glassdoor-job` for employer rep.76- **"What's the salary range for Y role?"** — `indeed-listing` filtered by role + location, then `jq` over `.jobs[].salary`.77- **"Find me homes/apartments matching X criteria"** — `zillow-listing` / `redfin-listing` / `airbnb-listing` with the corresponding filters.78- **"Recent sold comps near X"** — `zillow-listing --type sold --keyword "X" --days-on-zillow 12m`.79- **"Track this product's price"** — Loop `amazon-product --asin X` on a schedule; persist `.price` to a file.80- **"Summarize / cite this YouTube video"** — `youtube-transcript-api --v-param VID --raw | jq -r '.transcript[].snippet'` → feed to the sum