GET esm.sh HTTP 200192 ms23.5 KB$0.000113 captured Aug 7, 2026
esm.sh, as data
One API turns any esm.sh page into markdown, structured JSON, its link graph or a screenshot, and crawls the whole site the same way. The panel shows the real response we captured.
- Render mode
- Plain HTTP, no browser needed
- Response
- HTTP 200 in 192 ms
- Page size
- 23.5 KB of markdown, 395 lines
- Fields
- Title, Content, Date, Source and 1 more
- Captured
- Aug 7, 2026
Free balance on signup, no card. This esm.sh page cost $0.000113 to fetch.
## **Fast**You can also alias dependencies by adding `?alias=PACKAGE:ALIAS` to the import URL. This is useful when you want to use a different package for a dependency.`import useSWR from "https://esm.sh/swr?alias=react:preact/compat";`import useSWR from "https://esm.sh/swr?alias=react:preact/compat&deps=preact@10.5.14";### Bundling StrategyBy default, esm.sh bundles sub-modules of a package that are not shared by entry modules defined in the `exports` field of `package.json`.Bundling sub-modules can reduce the number of network requests, improving performance. However, it may result in repeated bundling of shared modules. In extreme cases, this can break package side effects or alter the `import.meta.url` semantics. To prevent this, you can disable the default bundling behavior by adding `?bundle=false`:`import "https://esm.sh/svelte?bundle=false";For package authors, it is recommended to define the `exports` field in `package.json`. This specifies the entry modules of the package, allowing esm.sh to accurately analyze the dependency tree and bundle the modules without duplication.Or you can override the bundling strategy by adding the `esm.sh` field to your `package.json`:"bundle": false // disables the default bundling behaviorYou can also add the `?standalone` flag to bundle the module along with all its external dependencies (excluding those in `peerDependencies`) into a single JavaScript file.`import { Button } from "https://esm.sh/antd?standalone";You can disable the default transforming/bundling behavior by adding `?raw` query to the import URL.`import { render } from "https://esm.sh/preact?raw";`> query is useful when you want to import the raw JavaScript source code of a package, as-is, without transformation into ES modules.### Tree ShakingBy default, esm.sh exports a module with all its exported members. However, if you want to import only a specific set of What Spider does on esm.sh
Same key, five endpoints. The numbers under a cell were measured on this page.
Page to markdown
Clean text for RAG and LLM context, boilerplate removed. The lane that runs without a key.
192 ms · $0.000113Page to JSON
Spider reads the page and names the fields. Pass your own schema when you need exact keys.
Rendered capture
Real Chromium, full-page PNG. The same call also returns the rendered HTML.
The call behind the panel
This request produced the response above. Paste it with your key and you get the same bytes.
curl -X POST https://api.spider.cloud/scrape \
-H "Authorization: Bearer $SPIDER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://esm.sh/", "return_format": "markdown"}' from spider import Spider
app = Spider()
params = {"return_format": "markdown"}
page = app.scrape_url("https://esm.sh/", params=params)
print(page[0]["content"]) import { Spider } from "@spider-cloud/spider-client";
const app = new Spider();
const [page] = await app.scrapeUrl("https://esm.sh/", {
return_format: "markdown",
});
console.log(page.content); What esm.sh costs
Multiplied from the measured 23.5 KB page. Estimates round to the cent.
1 GB of transfer costs $1, plus $0.001 per CPU minute, and failed requests cost $0. Crawling daily? The Unlimited plan is a flat monthly rate.
Point this at the rest of esm.sh.
The capture above took 192 ms and cost $0.000113. The same call takes any URL on esm.sh.