web-utilities-research
stars:0
forks:1
watches:0
last updated:2026-08-10 07:51:26
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.
export CRAWLORA_API_KEY=sk_your_key_here- All requests:
x-api-key: $CRAWLORA_API_KEYagainsthttps://api.crawlora.net/api/v1. Missing/invalid key →401.
How it works
- Scrape / extract / tech-stack (
POST) —POST /web/scrapereturns a URL as markdown/HTML/links/metadata ({"url": "...", "formats": ["markdown"]});POST /extractreturns JSON conforming to a schema you supply ({"url": "...", "schema": {...}});POST /web/techstackfingerprints the technologies a site runs ({"url": "..."}). All three take flat top-level fields — despite the tool catalog naming the bodyscrapeOption/extractOption/request, that name is not a JSON wrapper key; pass the fields directly at the top level of the body. - Geocoding —
/geocoding/search(qor structuredstreet/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/countryfor one place's full price breakdown;/numbeo/cost-of-living/rankingsfor a ranked list;/numbeo/indices/*for quality-of-life-style indices (pass anindexname). - 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 '.'
Raw curl fallback:
curl -fsS -H "x-api-key: $CRAWLORA_API_KEY" \
"https://api.crawlora.net/api/v1/geocoding/reverse?lat=37.4224&lon=-122.0842" | jq '.'
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/searchfor a brand, then/importyeti/companyfor 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_KEYonly — never hardcode, query-param, or commit it. /web/scrape,/extract, and/web/techstacktake flat top-level fields, live-verified (url,formatsfor scrape;url,schemafor extract;urlfor techstack) — the tool catalog'sscrapeOption/extractOption/requestnames 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.
