> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wistx.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Compare Costs

> Compare costs across providers/regions

> Compare costs across providers/regions

### Endpoint

`GET /v1/cost/compare`

<CodeGroup>
  ```bash cURL theme={null}
  curl --request GET \
    --url 'https://api.wistx.ai/v1/cost/compare?service_name=EC2&resource_type=t3.micro&regions=us-east-1&regions=eu-west-1&providers=aws&providers=gcp'
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.wistx.ai/v1/cost/compare"
  response = requests.get(
      url,
      params={
          "service_name": "EC2",
          "resource_type": "t3.micro",
          "regions": ["us-east-1", "eu-west-1"],
          "providers": ["aws", "gcp"]
      }
  )

  data = response.json()
  print(f"Cheapest: {data['cheapest']}")
  ```

  ```javascript JavaScript theme={null}
  const url = "https://api.wistx.ai/v1/cost/compare";
  const params = new URLSearchParams({
    service_name: "EC2",
    resource_type: "t3.micro"
  });
  params.append("regions", "us-east-1");
  params.append("regions", "eu-west-1");
  params.append("providers", "aws");
  params.append("providers", "gcp");

  const response = await fetch(`${url}?${params}`);
  const data = await response.json();
  console.log(`Cheapest: ${JSON.stringify(data.cheapest)}`);
  ```

  ```go Go theme={null}
  package main

  import (
      "encoding/json"
      "fmt"
      "net/http"
      "net/url"
  )

  func main() {
      baseURL := "https://api.wistx.ai/v1/cost/compare"
      params := url.Values{}
      params.Add("service_name", "EC2")
      params.Add("resource_type", "t3.micro")
      params.Add("regions", "us-east-1")
      params.Add("regions", "eu-west-1")
      params.Add("providers", "aws")
      params.Add("providers", "gcp")
      fullURL := baseURL + "?" + params.Encode()

      resp, _ := http.Get(fullURL)
      defer resp.Body.Close()

      var result map[string]interface{}
      json.NewDecoder(resp.Body).Decode(&result)
      fmt.Printf("Cheapest: %v\n", result["cheapest"])
  }
  ```

  ```ruby Ruby theme={null}
  require 'net/http'
  require 'json'
  require 'uri'

  url = URI("https://api.wistx.ai/v1/cost/compare")
  params = {
    service_name: "EC2",
    resource_type: "t3.micro",
    regions: ["us-east-1", "eu-west-1"],
    providers: ["aws", "gcp"]
  }
  url.query = URI.encode_www_form(params)

  response = Net::HTTP.get_response(url)
  data = JSON.parse(response.body)
  puts "Cheapest: #{data['cheapest']}"
  ```

  ```php PHP theme={null}
  <?php

  $url = "https://api.wistx.ai/v1/cost/compare?" . http_build_query([
      "service_name" => "EC2",
      "resource_type" => "t3.micro",
      "regions" => ["us-east-1", "eu-west-1"],
      "providers" => ["aws", "gcp"]
  ]);

  $response = file_get_contents($url);
  $data = json_decode($response, true);
  echo "Cheapest: " . json_encode($data['cheapest']);
  ```

  ```java Java theme={null}
  import java.net.HttpURLConnection;
  import java.net.URL;
  import java.io.BufferedReader;
  import java.io.InputStreamReader;
  import com.google.gson.Gson;
  import com.google.gson.JsonObject;

  public class CompareCosts {
      public static void main(String[] args) throws Exception {
          URL url = new URL("https://api.wistx.ai/v1/cost/compare?service_name=EC2&resource_type=t3.micro&regions=us-east-1&regions=eu-west-1&providers=aws&providers=gcp");
          
          HttpURLConnection conn = (HttpURLConnection) url.openConnection();
          conn.setRequestMethod("GET");
          
          BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
          StringBuilder response = new StringBuilder();
          String responseLine;
          while ((responseLine = br.readLine()) != null) {
              response.append(responseLine.trim());
          }
          
          Gson gson = new Gson();
          JsonObject data = gson.fromJson(response.toString(), JsonObject.class);
          System.out.println("Cheapest: " + data.get("cheapest"));
      }
  }
  ```
</CodeGroup>

### Query Parameters

<ParamField query="service_name" type="string" required>
  Service name to compare (e.g., `EC2`, `RDS`, `S3`).
</ParamField>

<ParamField query="resource_type" type="string">
  Resource type filter (e.g., `t3.micro`, `db.t3.medium`).
</ParamField>

<ParamField query="regions" type="array[string]">
  List of regions to compare (e.g., `["us-east-1", "eu-west-1"]`).
</ParamField>

<ParamField query="providers" type="array[string]">
  List of providers to compare (e.g., `["aws", "gcp", "azure"]`).
</ParamField>

### Response

<ResponseExample>
  ```json 200 Success theme={null}
  {
    "service_name": "EC2",
    "resource_type": "t3.micro",
    "comparison": [
      {
        "provider": "aws",
        "region": "us-east-1",
        "price": 0.0104,
        "currency": "USD",
        "unit": "hour"
      },
      {
        "provider": "aws",
        "region": "eu-west-1",
        "price": 0.0116,
        "currency": "USD",
        "unit": "hour"
      }
    ],
    "cheapest": {
      "provider": "aws",
      "region": "us-east-1",
      "price": 0.0104,
      "currency": "USD",
      "unit": "hour"
    }
  }
  ```

  ```json 400 Bad Request theme={null}
  {
    "detail": "service_name is required"
  }
  ```

  ```json 500 Internal Server Error theme={null}
  {
    "detail": "Comparison failed: Database connection error"
  }
  ```
</ResponseExample>

## Related Endpoints

* [Search Costs](/api-reference/cost-search/search) - Search cost data
* [Get Costs by Provider](/api-reference/cost-search/by-provider) - Get costs by provider
* [Get Optimization Opportunities](/api-reference/cost-search/optimization-opportunities) - Find optimization opportunities


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.