I kept reaching for three separate APIs whenever I needed to enrich a URL: one for link-preview metadata, one to detect a site's tech stack, and one for screenshots. Three keys, three bills, three sets of docs. So I combined them into a single endpoint and put it on RapidAPI. This is a quick walkthrough.
One call, structured output
The core endpoint takes a URL and returns everything it can read from the page and its headers. The landing page exposes this as a no-key live demo, so the example below runs exactly as written — no signup:
curl "https://siteintel.duckdns.org/demo/analyze?url=https://stripe.com"
{
"query": "https://stripe.com",
"final_url": "https://stripe.com/en-ca",
"status": 200,
"title": "Stripe | Financial Infrastructure to Grow Your Revenue",
"description": "...",
"canonical": "https://stripe.com/en-ca",
"lang": "en-CA",
"favicon": "https://images.stripeassets.com/.../favicon.svg",
"open_graph": { "title": "...", "image": "...", "type": "website" },
"detected_tech": ["Next.js"],
"social_links": ["https://github.com/stripe", "..."],
"emails": []
}
You get the metadata and Open Graph tags (the stuff link previews are built from), the favicon, canonical URL, the detected stack, public social profiles, and contact emails when they're listed on the page. The keyed endpoint on RapidAPI (/v1/analyze) returns the same shape.
Screenshots from the same API
The API also renders the page with headless Chromium and returns a PNG via the /v1/screenshot endpoint (with full=true for the entire scrollable page rather than just the viewport). This one runs through your RapidAPI key — the listing page generates a ready-to-run snippet (curl, JS, Python) with the host and key filled in, so grab it there rather than copying a hostname from here.
Why there's no LLM in it
Every field above is deterministic. Metadata lives in <meta> tags. A tech fingerprint comes from script sources, headers, and known markers. Contact links are in the HTML. None of that needs a model, so the response comes back in a few hundred milliseconds and the cost per call stays low. That's the whole reason the pricing can start cheap.
Try it
There's a free tier (50 requests) on RapidAPI, and the landing page runs the real endpoint as a live demo, so you can paste a URL and read the JSON without signing up:
- Live demo: https://siteintel.duckdns.org
- API + free tier: https://rapidapi.com/hidanny0001/api/siteintel
If you build enrichment, monitoring, or link-preview features, I'd like to hear where the tech detection is wrong or what field you'd want added.
Top comments (0)