REST Clients¶
The RestClient facade composes nine specialized sub-clients,
one per API domain.
RestClient¶
- class etoropy.RestClient(config, http=None)[source]¶
Bases:
objectFacade that composes all eToro REST sub-clients.
- Variables:
market_data – Instruments, rates, candles, exchanges (8 endpoints).
execution – Open/close/cancel orders (7 endpoints, demo/real routing).
info – Portfolio, PnL, order status, trade history (4 endpoints).
watchlists – CRUD for watchlists (14 endpoints).
feeds – Social feed posts per instrument/user (3 endpoints).
reactions – Comment on posts (1 endpoint).
discovery – Curated lists and recommendations (2 endpoints).
pi_data – Copier public info (1 endpoint).
users_info – User profiles, portfolios, performance (6 endpoints).
- Parameters:
config (
EToroConfig)http (
HttpClient|None(default:None))
MarketDataClient¶
- class etoropy.MarketDataClient(http)[source]¶
Bases:
BaseRestClientREST client for market data endpoints (instruments, rates, candles, exchanges).
Note: the
get_rates()andget_instruments()methods fan out one request per instrument ID usingasyncio.gather(), because the eToro API returns 500 when multiple IDs are comma-separated.- Parameters:
http (
HttpClient)
- async search_instruments(fields=None, *, search_text=None, internal_symbol_full=None, page_size=None, page_number=None, sort=None)[source]¶
Search for instruments by text or exact symbol.
This endpoint is designed for instrument ID resolution — it reliably returns
instrumentIdandinternalSymbolFullbut does not populate display metadata such asdisplayname,exchangeID, orsymbol. For those fields useget_instruments()instead.- Parameters:
fields (
str|None(default:None)) – Optional projection (comma-separated field names).search_text (
str|None(default:None)) – Free-text search query.internal_symbol_full (
str|None(default:None)) – Exact ticker symbol filter (e.g."AAPL").page_size (
int|None(default:None)) – Number of results per page.page_number (
int|None(default:None)) – Page number (0-based).
- Return type:
- async get_instruments(*, instrument_ids=None, exchange_ids=None, stocks_industry_ids=None, instrument_type_ids=None)[source]¶
- async get_candles(instrument_id, direction, interval, candles_count)[source]¶
- Parameters:
instrument_id (
int)direction (
CandleDirection)interval (
CandleInterval)candles_count (
int)
- Return type:
TradingExecutionClient¶
- class etoropy.TradingExecutionClient(http, mode)[source]¶
Bases:
BaseRestClientREST client for order execution (open, close, cancel).
URL routing is mode-aware: demo orders go to
/trading/execution/demo/..., real orders to/trading/execution/....- Parameters:
http (
HttpClient)mode (
Literal['demo','real'])
- async open_market_order_by_amount(params)[source]¶
- Parameters:
params (
MarketOrderByAmountRequest)- Return type:
- async open_market_order_by_units(params)[source]¶
- Parameters:
params (
MarketOrderByUnitsRequest)- Return type:
- async open_limit_order(params)[source]¶
- Parameters:
params (
LimitOrderRequest)- Return type:
- async close_position(position_id, params=None)[source]¶
- Parameters:
position_id (
int)params (
ClosePositionRequest|None(default:None))
- Return type:
TradingInfoClient¶
- class etoropy.TradingInfoClient(http, mode)[source]¶
Bases:
BaseRestClientREST client for trading information (portfolio, PnL, order status, history).
URL routing is mode-aware with asymmetric paths: demo portfolio is at
/trading/info/demo/portfolio, real portfolio at/trading/info/portfolio(norealsegment).- Parameters:
http (
HttpClient)mode (
Literal['demo','real'])
WatchlistsClient¶
- class etoropy.WatchlistsClient(http)[source]¶
Bases:
BaseRestClient- Parameters:
http (
HttpClient)
FeedsClient¶
ReactionsClient¶
DiscoveryClient¶
UsersInfoClient¶
- class etoropy.UsersInfoClient(http)[source]¶
Bases:
BaseRestClient- Parameters:
http (
HttpClient)