EC2.shop API
Get on-demand, spot and reserved EC2 prices as JSON with a single URL and no AWS credentials. Filter by instance type or region. Live captured response included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the EC2.shop API?
EC2.shop returns AWS EC2 instance pricing as JSON. `GET https://ec2.shop/?json&filter=t3.micro` gives the hourly on-demand cost, monthly estimate, spot price, reserved prices and hardware specification for matching instance types, with no AWS account or credentials required.
AWS does publish pricing programmatically, through the Price List API and a set of enormous JSON offer files that are awkward to work with and require credentials for the query interface. EC2.shop flattens all of that into one URL that answers in a few hundred bytes, which is why it has become the shortcut of choice when someone asks 'what does an m7g.large actually cost'.
Read the types carefully before doing arithmetic. `Cost` and `MonthlyPrice` are floats, but every spot and reserved price is a string, and `Memory` is a string with its unit attached, as in `"1 GiB"`. There is also a long-standing typo in the field names: reserved convertible pricing arrives as `Reserved1yConveritblePrice`. Match on that exact spelling, because correcting it in your code will silently give you `undefined`.
Quick facts
- Base URL
https://ec2.shop- Authentication
- No AWS credentials, no key, no account. The service maintains its own copy of the public price list.
- Rate limit
- Not published. Prices change rarely, so cache for hours rather than seconds.
- Pricing
- Free.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the EC2.shop API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Look up pricing for a single instance type
GET https://ec2.shop/?json&filter=t3.micro
curl 'https://ec2.shop/?json&filter=t3.micro'const res = await fetch("https://ec2.shop/?json&filter=t3.micro");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://ec2.shop/?json&filter=t3.micro", timeout=20)
res.raise_for_status()
print(res.json()){
"Prices": [
{
"InstanceType": "t3.micro",
"Memory": "1 GiB",
"VCPUS": 2,
"Storage": "EBS only",
"Network": "Up to 5 Gigabit",
"Cost": 0.0104,
"MonthlyPrice": 7.592,
"GPU": null,
"SpotPrice": "0.0043",
"SpotReclaimRate": "15-20%",
"SpotSavingRate": "59%",
"Reserved1yPrice": "0.0065",
"Reserved3yPrice": "0.0045",
"Reserved1yConveritblePrice": "0.0075",
"Reserved3yConveritblePrice": "0.0052"
}
]
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
json | flag | Optional | Valueless flag that returns JSON. Without it the endpoint returns a formatted plain-text table designed for curl. json |
filter | string | Optional | Substring match on the instance type. `t3` matches the whole family, `t3.micro` matches one size. t3.micro |
region | string | Optional | AWS region code. Defaults to `us-east-1`, which is the cheapest region for most families and will understate your real bill. eu-west-1 |
Response fields
Pricesarray- One entry per matching instance type. An empty array means the filter matched nothing, not that pricing is unavailable.
InstanceTypestring- The EC2 instance type, for example `t3.micro`.
Memorystring- Memory including the unit, such as `"1 GiB"`. Strip the suffix before comparing numerically.
VCPUSinteger- vCPU count. One of the few genuinely numeric fields in the response.
Costfloat- On-demand price in USD per hour for the selected region.
MonthlyPricefloat- Convenience figure: the hourly cost times 730 hours. It ignores savings plans, EBS and data transfer, so it is a floor, not a forecast.
SpotPricestring- Current spot price as a string. Spot prices move continuously, so treat any cached value as indicative.
SpotReclaimRate / SpotSavingRatestring- Interruption likelihood and discount, both as human-readable strings such as `"15-20%"` and `"59%"`, not numbers.
Reserved1yPrice / Reserved3yPricestring- Reserved instance hourly rates for one and three year commitments, as strings.
Reserved1yConveritblePricestring- Convertible reserved pricing. Note the misspelling of `Convertible` in the field name; it is part of the contract.
GPUinteger or null- GPU count, `null` for instance families without one.
What you can build with the EC2.shop API
- Estimate the cost of a proposed instance type before opening the AWS console
- Add a live price column to an internal capacity-planning spreadsheet or tool
- Compare on-demand against spot pricing when deciding where to run batch work
- Alert when the spot price for a family you rely on crosses a threshold
- Build a quick cost comparison across regions for a migration proposal
Common errors and how to fix them
Plain text instead of JSON
The `json` flag was dropped by a URL builder that strips valueless parameters.
Fix: Ensure the literal `?json` reaches the server; some clients require you to send it as `json=`.
Empty Prices array
The filter string matched no instance type.
Fix: Filters are substring matches on the type name. Check for typos, and remember the family prefix is case-sensitive.
Prices lower than your bill
You did not pass `region`, so you received `us-east-1` pricing.
Fix: Always send the region you actually deploy to, and remember these figures exclude EBS, data transfer and support.
EC2.shop API — frequently asked questions
Do I need AWS credentials to use EC2.shop?
No. It is a public read-only service with its own copy of AWS public pricing, so no keys, roles or accounts are involved.
How current are the prices?
On-demand and reserved rates change rarely and are accurate in practice. Spot prices move continuously, so treat the spot figure as a recent sample rather than a live quote.
Why is SpotPrice a string but Cost a float?
The upstream data mixes representations and the service passes them through unchanged. Cast every price to a number yourself instead of trusting the JSON types.
Is the field name Reserved1yConveritblePrice really misspelled?
Yes, and it is stable. Match the misspelling exactly; fixing it in your code will just return nothing.
Tools that pair with this API
JSON to CSV Converter
Convert a JSON array of objects to CSV online. Automatic column headers from the union of all keys, delimiter choice and proper quoting — all in-browser.
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
CSV Column Statistics Calculator
Profile a CSV column by column: type, blanks, distinct values, min, max, mean, median, standard deviation and percentiles, plus top values — all in-browser.
JSON Viewer
View JSON as a collapsible interactive tree online. Expand and collapse nodes, search keys and values, and copy the JSONPath of any node privately.
EC2.shop is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.