BYTETOOLS

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.

No API key requiredHTTPSFree tier

Endpoint tested and returned HTTP 200 on 21 Aug 2026

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 21 Aug 2026, 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
curl 'https://ec2.shop/?json&filter=t3.micro'
JavaScript (fetch)
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);
Python (requests)
import requests

res = requests.get("https://ec2.shop/?json&filter=t3.micro", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "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

ParameterTypeRequiredDescription
jsonflagOptionalValueless flag that returns JSON. Without it the endpoint returns a formatted plain-text table designed for curl. json
filterstringOptionalSubstring match on the instance type. `t3` matches the whole family, `t3.micro` matches one size. t3.micro
regionstringOptionalAWS 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

Alternatives to EC2.shop API

If EC2.shop does not fit, these developer & testing apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.

APIWhat it doesAuthCORSLast verified
GitHub REST APIGitHub REST API with no key for public data: repository details, users, issues, releases and commits. 60 req/hour unauthenticated, 5,000 with a token.No keyYes19 Aug 2026
JSONPlaceholderFree fake REST API for testing and prototyping. Posts, comments, users and todos with full GET, POST, PUT and DELETE support. No key. Real curl examples.No keyYes19 Aug 2026
Postman EchoPostman Echo reflects your HTTP request back as JSON: headers, body, query params and auth. Free, no key, ideal for debugging clients. Real POST example.No keyNo19 Aug 2026
DummyJSONFree fake REST API with realistic products, users, carts, recipes and auth. Supports search, pagination, sorting and POST. No key. Tested GET and POST examples.No keyYes19 Aug 2026
Zuplo EchoFree HTTP echo API with no key: reflects your request method, headers, query and body back as JSON. Ideal for debugging clients. Tested curl example.No keyNo19 Aug 2026
Ecosyste.msFree Ecosyste.ms API with no key: package metadata, dependencies, repository data and usage statistics across 60+ package registries. Tested curl example.No keyNo20 Aug 2026
All Developer & Testing APIs

EC2.shop is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 21 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.