Web intelligence utilities
A grab-bag of general-purpose lookups that don't belong to one platform:
raw URL scraping/extraction, tech-stack fingerprinting, geocoding, cost-of-
living comparisons, import/export trade records, site traffic, and brand
resolution — all as normalized JSON from the Crawlora API.
When to use this skill
- "Scrape this URL and give me clean markdown/HTML."
- "Pull structured data (a schema) out of this page."
- "What is this website built with?" (tech-stack fingerprint)
- "What's the address/coordinates for X?" (geocoding, forward or reverse)
- "How much more expensive is living in vs ?" (Numbeo)
- "What does this company import, and from whom?" (ImportYeti — US customs records)
- "How much traffic does this site get?" (SimilarWeb)
- "Resolve this domain to a brand name/logo."
Setup (one-time)
- Get a free Crawlora API key (2,000 credits/mo, no card) at https://crawlora.net.
- Set
CRAWLORA_API_KEY in the environment before running the helper.
- The helper reads
CRAWLORA_API_KEY from the environment and sends requests to https://api.crawlora.net/api/v1. Missing/invalid key → 401.
How it works
- Scrape / extract / tech-stack (
POST) — POST /web/scrape returns a
URL as markdown/HTML/links/metadata ({"url": "...", "formats": ["markdown"]});
POST /extract returns JSON conforming to a schema you supply
({"url": "...", "schema": {...}}); POST /web/techstack fingerprints
the technologies a site runs ({"url": "..."}). All three take flat
top-level fields — despite the tool catalog naming the body
scrapeOption/extractOption/request, that name is not a JSON
wrapper key; pass the fields directly at the top level of the body.
- Geocoding —
/geocoding/search (q or structured street/city/
country) for forward geocoding; /geocoding/reverse (lat+lon)
for reverse; /geocoding/lookup (osm_ids) for a known OpenStreetMap id.
- Numbeo (cost of living) —
/numbeo/cost-of-living/city/{slug} or
/country for one place's full price breakdown;
/numbeo/cost-of-living/rankings for a ranked list;
/numbeo/indices/* for quality-of-life-style indices (pass an index name).
- ImportYeti —
/importyeti/search (q) to find a company, then
/importyeti/company (slug) for its US customs import/export record summary.
- SimilarWeb —
/similarweb/web/{domain} for a site's traffic
overview; /similarweb/search (q) to resolve a name to a domain.
- Brand —
/brand/retrieve (domain) resolves a domain to brand
metadata (name, logo, colors).
Full endpoint list, methods, and params: reference/endpoints.md.
Calling the API
# Scrape a URL to markdown (POST, flat body):
scripts/crawlora.sh -X POST /web/scrape '{"url":"https://example.com","formats":["markdown"]}' | jq '.'
# Tech-stack fingerprint:
scripts/crawlora.sh -X POST /web/techstack '{"url":"https://example.com"}' | jq '.'
# Geocoding:
scripts/crawlora.sh /geocoding/search q="1600 Amphitheatre Parkway, Mountain View, CA" | jq '.'
# Cost of living:
scripts/crawlora.sh /numbeo/cost-of-living/city/Lisbon | jq '.'
# Site traffic + brand:
scripts/crawlora.sh /similarweb/web/example.com | jq '.'
scripts/crawlora.sh /brand/retrieve domain=example.com | jq '.'
Use scripts/crawlora.sh for all requests; it keeps the API key out of command-line arguments.
Endpoint reference
See reference/endpoints.md for the Web,
Geocoding, Numbeo, ImportYeti, SimilarWeb, and Brand endpoints this skill uses.
Examples
- Site research bundle:
/web/scrape (content) + /web/techstack
(what it's built with) + /similarweb/web/{domain} (traffic) for a
competitor's website in one pass.
- Relocation cost check:
/numbeo/cost-of-living/city/{slug} for two
cities, diff rent/groceries/transport line items.
- Supplier research:
/importyeti/search for a brand, then
/importyeti/company for their shipment history and known suppliers.
Notes & limits
- Credits / pay-on-success: billed only on
2xx; free tier 2,000 credits/mo.
Key at https://crawlora.net.
- Public data only — only public, robots-permitting pages are scraped;
respect each site's terms of use.
- Security: key lives in
CRAWLORA_API_KEY only — never hardcode, query-param, or commit it.
/web/scrape, /extract, and /web/techstack take flat top-level
fields, live-verified (url, formats for scrape; url, schema for
extract; url for techstack) — the tool catalog's scrapeOption/
extractOption/request names describe the body's purpose, not a
wrapper key to nest under. Less-common fields (render, only_main_content,
a full JSON Schema for /extract) aren't listed in the tool schema either —
confirm those at crawlora.net/docs
or the playground before relying on them.
- ImportYeti and SimilarWeb data reflect each provider's own refresh cadence, not real-time.
1---2name: web-utilities-research3description: General-purpose web-intelligence utilities via the Crawlora API — scrape any URL to clean markdown/HTML, extract schema-conforming JSON from a page, fingerprint a site's tech stack, geocode addresses, compare cost of living between cities/countries (Numbeo), look up a company's import/export trade records (ImportYeti), check a domain's traffic (SimilarWeb), or resolve a brand's identity from its domain. Use for one-off utility lookups that don't fit a specific platform skill.4---56# Web intelligence utilities78A grab-bag of general-purpose lookups that don't belong to one platform:9raw URL scraping/extraction, tech-stack fingerprinting, geocoding, cost-of-10living comparisons, import/export trade records, site traffic, and brand11resolution — all as normalized JSON from the Crawlora API.1213## When to use this skill1415- "Scrape this URL and give me clean markdown/HTML."16- "Pull structured data (a schema) out of this page."17- "What is this website built with?" (tech-stack fingerprint)18- "What's the address/coordinates for X?" (geocoding, forward or reverse)19- "How much more expensive is living in <city A> vs <city B>?" (Numbeo)20- "What does this company import, and from whom?" (ImportYeti — US customs records)21- "How much traffic does this site get?" (SimilarWeb)22- "Resolve this domain to a brand name/logo."2324## Setup (one-time)2526- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).27- Set `CRAWLORA_API_KEY` in the environment before running the helper.28- The helper reads `CRAWLORA_API_KEY` from the environment and sends requests to `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.2930## How it works31321. **Scrape / extract / tech-stack (`POST`)** — `POST /web/scrape` returns a33 URL as markdown/HTML/links/metadata (`{"url": "...", "formats": ["markdown"]}`);34 `POST /extract` returns JSON conforming to a schema you supply35 (`{"url": "...", "schema": {...}}`); `POST /web/techstack` fingerprints36 the technologies a site runs (`{"url": "..."}`). **All three take flat37 top-level fields** — despite the tool catalog naming the body38 `scrapeOption`/`extractOption`/`request`, that name is not a JSON39 wrapper key; pass the fields directly at the top level of the body.402. **Geocoding** — `/geocoding/search` (`q` or structured `street`/`city`/41 `country`) for forward geocoding; `/geocoding/reverse` (`lat`+`lon`)42 for reverse; `/geocoding/lookup` (`osm_ids`) for a known OpenStreetMap id.433. **Numbeo (cost of living)** — `/numbeo/cost-of-living/city/{slug}` or44 `/country` for one place's full price breakdown;45 `/numbeo/cost-of-living/rankings` for a ranked list;46 `/numbeo/indices/*` for quality-of-life-style indices (pass an `index` name).474. **ImportYeti** — `/importyeti/search` (`q`) to find a company, then48 `/importyeti/company` (`slug`) for its US customs import/export record summary.495. **SimilarWeb** — `/similarweb/web/{domain}` for a site's traffic50 overview; `/similarweb/search` (`q`) to resolve a name to a domain.516. **Brand** — `/brand/retrieve` (`domain`) resolves a domain to brand52 metadata (name, logo, colors).5354Full endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).5556## Calling the API5758```sh59# Scrape a URL to markdown (POST, flat body):60scripts/crawlora.sh -X POST /web/scrape '{"url":"https://example.com","formats":["markdown"]}' | jq '.'6162# Tech-stack fingerprint:63scripts/crawlora.sh -X POST /web/techstack '{"url":"https://example.com"}' | jq '.'6465# Geocoding:66scripts/crawlora.sh /geocoding/search q="1600 Amphitheatre Parkway, Mountain View, CA" | jq '.'6768# Cost of living:69scripts/crawlora.sh /numbeo/cost-of-living/city/Lisbon | jq '.'7071# Site traffic + brand:72scripts/crawlora.sh /similarweb/web/example.com | jq '.'73scripts/crawlora.sh /brand/retrieve domain=example.com | jq '.'74```7576Use `scripts/crawlora.sh` for all requests; it keeps the API key out of command-line arguments.777879## Endpoint reference8081See [`reference/endpoints.md`](reference/endpoints.md) for the Web,82Geocoding, Numbeo, ImportYeti, SimilarWeb, and Brand endpoints this skill uses.8384## Examples8586- **Site research bundle:** `/web/scrape` (content) + `/web/techstack`87 (what it's built with) + `/similarweb/web/{domain}` (traffic) for a88 competitor's website in one pass.89- **Relocation cost check:** `/numbeo/cost-of-living/city/{slug}` for two90 cities, diff rent/groceries/transport line items.91- **Supplier research:** `/importyeti/search` for a brand, then92 `/importyeti/company` for their shipment history and known suppliers.9394## Notes & limits9596- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.97 Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).98- **Public data only** — only public, robots-permitting pages are scraped;99 respect each site's terms of use.100- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.101- **`/web/scrape`, `/extract`, and `/web/techstack` take flat top-level102 fields**, live-verified (`url`, `formats` for scrape; `url`, `schema` for103 extract; `url` for techstack) — the tool catalog's `scrapeOption`/104 `extractOption`/`request` names describe the body's *purpose*, not a105 wrapper key to nest under. Less-common fields (`render`, `only_main_content`,106 a full JSON Schema for `/extract`) aren't listed in the tool schema either —107 confirm those at [crawlora.net/docs](https://crawlora.net/docs?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills)108 or the [playground](https://crawlora.net/playground?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills) before relying on them.109- ImportYeti and SimilarWeb data reflect each provider's own refresh cadence, not real-time.