{
  "openapi": "3.0.1",
  "info": {
    "title": "EV Charging Prices Netherlands: Find the Cheapest Charger",
    "description": "Charging prices for every public EV charge point in the Netherlands, cheapest first, with an estimated session cost. From official AFIR open data: per kWh, per minute, session and idle fees. Filter by city, operator or power; get price alerts.",
    "version": "0.1",
    "x-build-id": "3RhA4K7qxm1rEyw9h"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/subtleasianmerch~ev-charging-prices/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-subtleasianmerch-ev-charging-prices",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/subtleasianmerch~ev-charging-prices/runs": {
      "post": {
        "operationId": "runs-sync-subtleasianmerch-ev-charging-prices",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/subtleasianmerch~ev-charging-prices/run-sync": {
      "post": {
        "operationId": "run-sync-subtleasianmerch-ev-charging-prices",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "locations": {
            "title": "Cities or postal codes",
            "type": "array",
            "description": "One per line, e.g. Amsterdam, Utrecht, Den Haag, 3511 or 1012 AB. A shorter postal code covers an area: 10 is central Amsterdam. A city also matches its districts (\"Amsterdam\" includes \"Amsterdam Zuidoost\"). Leave empty, with no point below, for the whole country.",
            "items": {
              "type": "string"
            }
          },
          "latitude": {
            "title": "Latitude of a point (optional)",
            "minimum": -90,
            "maximum": 90,
            "type": "number",
            "description": "With longitude and radius: charge points within the radius of this point, e.g. 52.3676 for central Amsterdam. Combined with the cities above, a charge point is kept when it matches either."
          },
          "longitude": {
            "title": "Longitude of the point (optional)",
            "minimum": -180,
            "maximum": 180,
            "type": "number",
            "description": "E.g. 4.9041 for central Amsterdam."
          },
          "radiusKm": {
            "title": "Radius around the point (km)",
            "minimum": 0.1,
            "maximum": 300,
            "type": "number",
            "description": "Used only with a latitude and longitude. Each charge point gets its distance from the point (distanceKm).",
            "default": 5
          },
          "operators": {
            "title": "Operators (optional)",
            "type": "array",
            "description": "Only these charge point operators, by name or 3-letter party ID, e.g. Fastned, Allego, Shell Recharge, Vattenfall, TSL. A name matches part of the operator's, owner's or sub-operator's name.",
            "items": {
              "type": "string"
            }
          },
          "minPowerKw": {
            "title": "Minimum power (kW, optional)",
            "minimum": 0,
            "maximum": 2000,
            "type": "number",
            "description": "Only charge points whose fastest connector reaches this power, e.g. 50 for fast chargers or 150 for high-power chargers."
          },
          "connectorTypes": {
            "title": "Connector types (optional)",
            "type": "array",
            "description": "Only charge points with at least one of these connectors. Leave empty for every type.",
            "items": {
              "type": "string",
              "enum": [
                "type2",
                "ccs",
                "chademo",
                "type1",
                "ccs1",
                "tesla",
                "nacs",
                "domestic",
                "type3",
                "gbt",
                "chaoji",
                "mcs",
                "other"
              ],
              "enumTitles": [
                "Type 2 (IEC 62196-2)",
                "CCS (Combo 2)",
                "CHAdeMO",
                "Type 1 (J1772)",
                "CCS (Combo 1)",
                "Tesla (proprietary)",
                "NACS (SAE J3400)",
                "Domestic and industrial sockets (Schuko, CEE)",
                "Type 3",
                "GB/T",
                "ChaoJi",
                "MCS (Megawatt)",
                "Other"
              ]
            }
          },
          "onlyWithPrice": {
            "title": "Only charge points with a published price",
            "type": "boolean",
            "description": "On: charge points whose operator published no tariff to the national access point are left out, free. Off: they're delivered too, without prices, at the lower no-price rate.",
            "default": true
          },
          "adHocOnly": {
            "title": "Only tariffs that apply to ad hoc payment",
            "type": "boolean",
            "description": "On: only tariffs typed AD_HOC_PAYMENT or untyped (valid for every session) count as a price; tariffs typed REGULAR (charge-card sessions, used by Vattenfall and others as their only tariff) don't. Off: the best published tariff is used, and tariffType says which.",
            "default": false
          },
          "includeFree": {
            "title": "Include free (all-zero) tariffs",
            "type": "boolean",
            "description": "Off: charge points whose published tariff prices everything at zero (free charging, or a placeholder some operators publish) are left out, free, so they don't crowd the top of a cheapest-first list. On: they're delivered, marked isFree.",
            "default": false
          },
          "sessionKwh": {
            "title": "Estimate: energy per session (kWh)",
            "minimum": 1,
            "maximum": 500,
            "type": "number",
            "description": "The estimated session cost on every row is for this much energy, starting now. 20 kWh is roughly 100-130 km in a typical EV.",
            "default": 20
          },
          "sessionMinutes": {
            "title": "Estimate: session length (minutes)",
            "minimum": 1,
            "maximum": 1440,
            "type": "integer",
            "description": "How long the session lasts. When a charge point can't deliver the energy in this time at its maximum power, the estimate uses the longer time it needs (e.g. 55 minutes for 20 kWh at 22 kW).",
            "default": 30
          },
          "sortBy": {
            "title": "Order",
            "enum": [
              "cheapest",
              "nearest",
              "none"
            ],
            "type": "string",
            "description": "Cheapest first (by the estimated session cost, including VAT where the operator states the rate), nearest first (needs a point), or as the source lists them. With a limit below, the order decides which charge points are kept.",
            "default": "cheapest"
          },
          "maxChargePoints": {
            "title": "Most charge points (optional)",
            "minimum": 1,
            "maximum": 300000,
            "type": "integer",
            "description": "E.g. 20 for the 20 cheapest charge points in your area. Leave empty for every matching charge point. Each charge point delivered is charged."
          },
          "monitorId": {
            "title": "Monitor ID (for scheduled runs)",
            "type": "string",
            "description": "Any name, e.g. \"utrecht-fast\". Runs with the same ID remember each charge point's tariff, so a schedule can report new charge points and price changes, with the previous prices."
          },
          "onlyChanges": {
            "title": "Output only new charge points and price changes",
            "type": "boolean",
            "description": "With a monitor ID: on, only charge points that are new or whose tariff changed since the last run (unchanged ones are free); off, every charge point, with changes marked.",
            "default": true
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}