curl --request GET \
--url https://public-api.etoro.com/api/v1/price-alerts \
--header 'x-api-key: <api-key>' \
--header 'x-request-id: <x-request-id>' \
--header 'x-user-key: <api-key>'import requests
url = "https://public-api.etoro.com/api/v1/price-alerts"
headers = {
"x-request-id": "<x-request-id>",
"x-api-key": "<api-key>",
"x-user-key": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'x-request-id': '<x-request-id>',
'x-api-key': '<api-key>',
'x-user-key': '<api-key>'
}
};
fetch('https://public-api.etoro.com/api/v1/price-alerts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://public-api.etoro.com/api/v1/price-alerts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>",
"x-request-id: <x-request-id>",
"x-user-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://public-api.etoro.com/api/v1/price-alerts"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-request-id", "<x-request-id>")
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("x-user-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://public-api.etoro.com/api/v1/price-alerts")
.header("x-request-id", "<x-request-id>")
.header("x-api-key", "<api-key>")
.header("x-user-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.etoro.com/api/v1/price-alerts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-request-id"] = '<x-request-id>'
request["x-api-key"] = '<api-key>'
request["x-user-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"results": [
{
"alertId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"instrumentId": 1001,
"symbol": "AAPL",
"targetPrice": 185.5,
"currentPrice": 182.3,
"createdAt": "2026-04-20T10:00:00Z",
"updatedAt": "2026-04-25T14:30:00Z"
},
{
"alertId": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"instrumentId": 1002,
"symbol": "TSLA",
"targetPrice": 250,
"currentPrice": 265.1,
"createdAt": "2026-04-22T08:15:00Z",
"updatedAt": "2026-04-22T08:15:00Z"
}
]
}{
"success": false,
"error": {
"code": "INVALID_PARAMETER",
"message": "Invalid request parameters",
"details": "alertIds must be valid UUIDs"
}
}{
"errorCode": "Unauthorized",
"errorMessage": "Unauthorized"
}{
"errorCode": "InsufficientPermissions",
"errorMessage": "Insufficient permissions to access this resource"
}{
"errorCode": "TooManyRequests",
"errorMessage": "Too many requests"
}{
"errorCode": "UnhandledException",
"errorMessage": "Global Error"
}Get price alerts
Rate limit: 60 requests per 60 seconds. This is the default shared quota — it is shared with every other endpoint that has no dedicated limit, so requests across those endpoints all draw from the same budget.
Returns all active price alerts for the authenticated user. Supports optional filtering by alertIds, instrumentIds, or symbols. The instrumentIds and symbols filters refer to the same dimension and are OR-combined with each other. The resulting instrument filter is AND-combined with alertIds. When no filters are provided, returns all active alerts.
curl --request GET \
--url https://public-api.etoro.com/api/v1/price-alerts \
--header 'x-api-key: <api-key>' \
--header 'x-request-id: <x-request-id>' \
--header 'x-user-key: <api-key>'import requests
url = "https://public-api.etoro.com/api/v1/price-alerts"
headers = {
"x-request-id": "<x-request-id>",
"x-api-key": "<api-key>",
"x-user-key": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'x-request-id': '<x-request-id>',
'x-api-key': '<api-key>',
'x-user-key': '<api-key>'
}
};
fetch('https://public-api.etoro.com/api/v1/price-alerts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://public-api.etoro.com/api/v1/price-alerts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>",
"x-request-id: <x-request-id>",
"x-user-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://public-api.etoro.com/api/v1/price-alerts"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-request-id", "<x-request-id>")
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("x-user-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://public-api.etoro.com/api/v1/price-alerts")
.header("x-request-id", "<x-request-id>")
.header("x-api-key", "<api-key>")
.header("x-user-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.etoro.com/api/v1/price-alerts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-request-id"] = '<x-request-id>'
request["x-api-key"] = '<api-key>'
request["x-user-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"results": [
{
"alertId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"instrumentId": 1001,
"symbol": "AAPL",
"targetPrice": 185.5,
"currentPrice": 182.3,
"createdAt": "2026-04-20T10:00:00Z",
"updatedAt": "2026-04-25T14:30:00Z"
},
{
"alertId": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"instrumentId": 1002,
"symbol": "TSLA",
"targetPrice": 250,
"currentPrice": 265.1,
"createdAt": "2026-04-22T08:15:00Z",
"updatedAt": "2026-04-22T08:15:00Z"
}
]
}{
"success": false,
"error": {
"code": "INVALID_PARAMETER",
"message": "Invalid request parameters",
"details": "alertIds must be valid UUIDs"
}
}{
"errorCode": "Unauthorized",
"errorMessage": "Unauthorized"
}{
"errorCode": "InsufficientPermissions",
"errorMessage": "Insufficient permissions to access this resource"
}{
"errorCode": "TooManyRequests",
"errorMessage": "Too many requests"
}{
"errorCode": "UnhandledException",
"errorMessage": "Global Error"
}Authorizations
API key of the application. Only valid together with the x-user-key header — the pair is an alternative to OAuth bearer authentication, never sent alongside it. The pair is granted the same permissions the operation's OAuth scopes describe.
Demo credential for trying the API from these docs: lhgfaslk21490FAScVPkdsb53F9dNkfHG4faZSG5vfjndfcfgdssdgsdHF4663
User-specific authentication key. Only valid together with the x-api-key header — the pair is an alternative to OAuth bearer authentication, never sent alongside it.
Demo credential for trying the API from these docs: eyJlYW4iOiJVbnJlZ2lzdGVyZWRBcHBsaWNhdGlvbiIsImVrIjoiOE5sZ2cwcW5EUVdROUFNWGpXT2lmOWktZnpidG5KcUlqWGJ3WHJZZkpZcldrbG90ZEhvLVBjSWhQaU8xU1ZtMW84aU1WZGZqN2xWNzFjLXFxLmcybXE1dnh4Q1hUT25xaWRUaTFlcEhmVk1fIn0_
Headers
A unique request identifier.
"329956a0-ccb2-455e-b309-80ca58cbce4e"
Query Parameters
Comma-separated list of alert IDs to filter by. AND-combined with the instrument filter when both are present.
Comma-separated list of instrument IDs to filter by. Treated as the same dimension as symbols — results matching either instrumentIds or symbols are returned.
Comma-separated list of trading symbols to filter by. Treated as the same dimension as instrumentIds — results matching either symbols or instrumentIds are returned.
Response
Successfully retrieved price alerts
Collection of price alerts for the authenticated user
List of price alerts matching the query criteria
Show child attributes
Show child attributes