{
  "openapi": "3.0.1",
  "info": {
    "title": "EV Charging Stations API with Prices and Status: Eco-Movement",
    "description": "Read global EV charging stations with EVSEs, connectors, power, operators, real-time availability, ad hoc and MSP charging prices and CPO tariffs through the Eco-Movement Data API (OCPI 2.2 or 2.1.1). Full lists, changes since a date, or lookups by location, EVSE or pricing ID. Bring your own key.",
    "version": "0.1",
    "x-build-id": "XA16doHadeyfMWoet"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nabeelbaghoor~ev-charging-stations-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nabeelbaghoor-ev-charging-stations-api",
        "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/nabeelbaghoor~ev-charging-stations-api/runs": {
      "post": {
        "operationId": "runs-sync-nabeelbaghoor-ev-charging-stations-api",
        "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/nabeelbaghoor~ev-charging-stations-api/run-sync": {
      "post": {
        "operationId": "run-sync-nabeelbaghoor-ev-charging-stations-api",
        "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": {
          "mode": {
            "title": "What to read",
            "enum": [
              "locations",
              "locationDetails",
              "evse",
              "prices",
              "priceDetails",
              "connectorPrices",
              "tariffs"
            ],
            "type": "string",
            "description": "Charging locations lists every location your license covers, with EVSEs, connectors, power and real-time status. Location details by ID adds predicted occupancy, roaming partners and derived opening times. Location by EVSE ID finds the location of chosen EVSEs. Charging prices lists ad hoc and MSP prices; prices by pricing ID reads chosen ones. Pricing IDs per connector links every connector to its pricing IDs. CPO tariffs lists the raw OCPI tariffs operators shared.",
            "default": "locations"
          },
          "dateFrom": {
            "title": "Changed since",
            "type": "string",
            "description": "Optional. Only records that changed on or after this moment, as a date (2026-10-01, midnight UTC) or an ISO 8601 date-time such as 2026-10-01T08:00:00Z. Locations, location details, tariffs, prices and prices by ID. Leave empty for the full list."
          },
          "dateTo": {
            "title": "Changed until",
            "type": "string",
            "description": "Optional. Only records that changed before this moment, as a date or an ISO 8601 date-time. Times are UTC."
          },
          "locationIds": {
            "title": "Location IDs",
            "type": "array",
            "description": "Location details mode. One location ID per line, from the id column of the charging locations mode.",
            "items": {
              "type": "string"
            }
          },
          "evseIds": {
            "title": "EVSE IDs",
            "type": "array",
            "description": "Location by EVSE ID mode. One eMI3 EVSE ID per line, such as NL*EVN*E30332*9785 or DEALLEGO0004532.",
            "items": {
              "type": "string"
            }
          },
          "pricingIds": {
            "title": "Pricing IDs",
            "type": "array",
            "description": "Prices by pricing ID mode. One pricing ID per line, from the pricingIds column of the locations or pricing IDs per connector modes.",
            "items": {
              "type": "string"
            }
          },
          "ocpiVersion": {
            "title": "OCPI version",
            "enum": [
              "2.2",
              "2.1.1"
            ],
            "type": "string",
            "description": "Which OCPI version of the locations, EVSE and tariffs routes to read. Use the version your Eco-Movement license was set up for. The pricing routes are the same for both.",
            "default": "2.2"
          },
          "maxResults": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 500000,
            "type": "integer",
            "description": "The most rows this run returns and charges for. A full country can hold tens of thousands of locations, and a full license over 100,000.",
            "default": 100
          },
          "requestsPerMinute": {
            "title": "Requests per minute",
            "minimum": 1,
            "maximum": 300,
            "type": "integer",
            "description": "Pacing for calls to Eco-Movement. The pricing routes are always held to 20 a minute, their documented limit of 1200 an hour per token. Throttled calls are retried after a pause.",
            "default": 60
          },
          "apiKey": {
            "title": "API token",
            "type": "string",
            "description": "Your Eco-Movement Data API token, as Eco-Movement issued it, without the word Token in front. Stored as a secret, sent only in the Authorization header to api.eco-movement.com and never logged. You can instead set the DATA_API_KEY environment secret."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}