# MQL5 Search API > Read-only HTTP search for MQL5, MQL4, MetaQuotes, MetaTrader, MQL5 Algo Forge and MetaTrader Markets content. Select content modules, submit keywords or an author filter, receive JSON search hits, and follow source URLs to read and cite the underlying material. The API origin is https://search.mql5.com. Send GET requests directly to https://search.mql5.com/api/query. The origin root serves a human-facing landing page; use the API path for programmatic search. Public queries have been checked without an API key or browser session. Use the language lists and module templates below to select content. The linked OpenAPI description provides the machine-readable HTTP operation and response structure. **Request parameters:** - `keyword`: search keywords. For keyword-only search, provide at least two UTF-16 code units after normalization; shorter input returns an empty result. With a non-empty `author`, `keyword` may be omitted or set to an empty string to search all indexed messages by that author in the selected modules, subject to other filters and pagination. If no keywords resolve in the index but the author resolves, the implementation falls back to author-only results. Search operators and other keyword matching rules are not specified here. - `hl`: query-language code. Specify it explicitly: `ru`, `en`, `zh`, `es`, `pt`, `ja`, `de`, `ko`, `fr`, `it` or `tr`. For modules with a language segment, choose the matching content language. The language-neutral `forge.repo` module name stays unchanged. - `module`: one exact module code, or several codes joined with `|` in a single query parameter. Always provide modules explicitly: omission returns a successful empty response. Expand the templates below with a language from the applicable list. Do not send the placeholder text literally or assume that every domain/section exists in every language. - `from`: zero-based result offset; use `0` for the first page. The default is `0`. Use an integer from `0` to `2147483647`; larger values cannot be represented by the request parser. - `count`: requested page size. Use a positive integer from `1` to `1000`; larger positive values are capped at `1000`. If omitted or set to `0`, the default requested page size is `25`. `10` is a useful starting value for concise responses. The returned page can contain fewer results. - `author`: optional author filter, such as `john`. Omit it to search without an author filter. The server enforces this filter: if a non-empty author is specified, only records indexed for that author are returned. If the specified author is not found in the index, the search returns zero results, including when `keyword` is also supplied. To search all indexed messages by this author in the selected modules, omit `keyword` or set it to an empty string; other filters and pagination still apply. Exact matching rules are not specified here. - `isotime_from`: preferred inclusive lower document-date bound for programmatic and LLM requests, as an ISO 8601 UTC date/time string, e.g. `2026-10-01T00:00:00Z`. Omit unused bounds and omit `unixtime_from` when using this parameter. An empty string leaves this bound unset. - `isotime_to`: preferred upper document-date bound for programmatic and LLM requests, as an ISO 8601 UTC date/time string, e.g. `2026-10-06T23:59:59Z`. Omit unused bounds and omit `unixtime_to` when using this parameter. An empty string leaves this bound unset. This boundary is inclusive when indexed keywords are used and exclusive for author searches without resolved keywords, including fallback from unresolved keywords. - `unixtime_from`: optional inclusive lower document-date bound in Unix epoch seconds (UTC), as an alternative to the preferred `isotime_from` when Unix seconds are already available. `0` disables this bound; omit this parameter when using `isotime_from`. - `unixtime_to`: optional upper document-date bound in Unix epoch seconds (UTC), as an alternative to the preferred `isotime_to` when Unix seconds are already available. `0` disables this bound; omit this parameter when using `isotime_to`. This boundary is inclusive when indexed keywords are used and exclusive for author searches without resolved keywords, including fallback from unresolved keywords. - `method`: optional sorting mode: `0` or `1` sorts by relevance and is the default; `2` sorts by document date, newest first. Prefer `isotime_from` and `isotime_to` for date bounds in programmatic and LLM requests: UTC ISO 8601 strings avoid manual conversion to Unix seconds. Use `unixtime_from` and `unixtime_to` as alternatives when Unix seconds are already available. Use only one date representation per boundary. If both are supplied, `unixtime_from` overrides `isotime_from` and `unixtime_to` overrides `isotime_to`, even when the Unix value is `0`. Omit unused Unix parameters instead of sending default zero values alongside ISO parameters. Unix bounds use seconds, not milliseconds, and must be integers from `0` to `2147483647`. For ISO bounds, use whole-second UTC strings from `1970-01-01T00:00:00Z` through `2038-01-19T03:14:07Z`; the epoch value disables the bound. ISO values are limited to `127` UTF-8 bytes (ASCII ISO strings also have at most `127` characters). Malformed or oversized ISO strings are silently ignored, and dates beyond the supported range can overflow. Validate date values before making the request. The current implementation stores at most `255` UTF-16 code units for `keyword`, `127` for `author`, and `1023` for the complete `module` value, including separators. Longer values are truncated. Keep the joined module list within this limit; split larger selections into separate requests. **Content languages used by the module templates:** - `%language-mql5%`: replace with `en`, `ru`, `zh`, `es`, `pt`, `ja`, `de`, `ko`, `fr`, `it` or `tr`. - `%language-metatrader5%`: replace with `en`, `ru`, `zh`, `es`, `pt`, `ja`, `de` or `fr`. - `%language-metaquotes%`: replace with `en`, `ru` or `zh`. For example, `mql5.com.%language-mql5%.docs` becomes `mql5.com.en.docs`, and `metatrader5.com.%language-metatrader5%.help` becomes `metatrader5.com.en.help`. The API does not perform this substitution. `forge.repo` is a literal, language-neutral module code. **Module templates:** - `forge.repo`: all public repositories of [MQL5 Algo Forge](https://forge.mql5.io) - `forge.%language-mql5%.static`: static pages of [MQL5 Algo Forge](https://forge.mql5.io) - `metaquotes.net.%language-metaquotes%.news`: corporate news of [MetaQuotes Ltd.](https://www.metaquotes.net) - `metaquotes.net.%language-metaquotes%.static`: static pages of [MetaQuotes Ltd.](https://www.metaquotes.net) - `metatrader5.com.%language-metatrader5%.static`: static pages of [MetaTrader 5 Platform](https://www.metatrader5.com) - `metatrader5.com.%language-metatrader5%.news`: corporate news of [MetaTrader 5 Platform](https://www.metatrader5.com) - `metatrader5.com.%language-metatrader5%.help`: help pages of [MetaTrader 5 Platform](https://www.metatrader5.com) - `mql5.com.%language-mql5%.articles`: articles on [MQL5 Algo Trading community](https://www.mql5.com) - `mql5.com.%language-mql5%.blogs`: blogs on [MQL5 Algo Trading community](https://www.mql5.com) - `mql5.com.%language-mql5%.book`: MQL5 Programming for Traders book on [MQL5 Algo Trading community](https://www.mql5.com) - `mql5.com.%language-mql5%.calendar`: economic calendar on [MQL5 Algo Trading community](https://www.mql5.com) - `mql5.com.%language-mql5%.codebase`: MQL4/MQL5 codebase on [MQL5 Algo Trading community](https://www.mql5.com) - `mql5.com.%language-mql5%.docs`: MQL5 documentation on [MQL5 Algo Trading community](https://www.mql5.com) - `mql5.com.%language-mql5%.forum`: public forum on [MQL5 Algo Trading community](https://www.mql5.com) - `mql5.com.%language-mql5%.jobs`: freelance service on [MQL5 Algo Trading community](https://www.mql5.com) - `mql5.com.%language-mql5%.market`: MQL4/MQL5 appstore on [MQL5 Algo Trading community](https://www.mql5.com) - `mql5.com.%language-mql5%.neurobook`: Neural Networks for Algorithmic Trading book on [MQL5 Algo Trading community](https://www.mql5.com) - `mql5.com.%language-mql5%.profiles`: user profiles on [MQL5 Algo Trading community](https://www.mql5.com) - `mql5.com.%language-mql5%.signals`: trading signals on [MQL5 Algo Trading community](https://www.mql5.com) - `mql5.com.%language-mql5%.static`: static pages on [MQL5 Algo Trading community](https://www.mql5.com) - `mql5.com.%language-mql5%.symbols`: market symbols on [MQL5 Algo Trading community](https://www.mql5.com) - `mql4.com.%language-metaquotes%.docs`: MQL4 documentation on [MQL4 community](https://www.mql4.com) - `mt.%language-mql5%.brokers`: list of brokers on [MetaTrader Markets](https://www.metatrader.com) - `mt.%language-mql5%.calendar`: economic calendar on [MetaTrader Markets](https://www.metatrader.com) - `mt.%language-mql5%.ideas`: trading ideas on [MetaTrader Markets](https://www.metatrader.com) - `mt.%language-mql5%.news`: financial news on [MetaTrader Markets](https://www.metatrader.com) - `mt.%language-mql5%.symbols`: market symbols on [MetaTrader Markets](https://www.metatrader.com) For English MQL5 programming reference questions, start with `mql5.com.en.docs|mql5.com.en.book|mql5.com.en.neurobook`. For MetaTrader 5 platform usage, use `metatrader5.com.en.help`; for platform news, use `metatrader5.com.en.news`. For community discussions, use `mql5.com.en.forum`. Use a standard URL encoder for all query values. In particular, encode `|` as `%7C`, spaces and non-ASCII keywords appropriately. **Response handling:** - The JSON object contains `results`, `from`, `count` and `total`. - The response is JSON with `Content-Type: application/json; charset=UTF-8`. - `from`, `count` and `total` are decimal strings in normal search responses, including empty pages, and integers in early empty responses such as an omitted module or too-short keyword-only input. Normalize these three fields to integers. Use `results.length` as the actual number of returned objects. - Each result contains `module`, `id`, `date`, `info` and `text`. Preserve `id` as an opaque string; use `(module, id)` as a client key. `date` is a decimal string of Unix epoch seconds; the underlying document event associated with the timestamp is not specified. - `info.url` and `info.title` identify the source. Author and avatar fields are optional and vary by module. - `text` is required search-result text and may be empty or only an excerpt. Follow `info.url` for source context before making claims that need the full document. Use the source URL for citations and preserve any comment anchor. - To paginate, retain the same filters and advance `from` by the effective requested page size: the explicit positive `count` capped at `1000`, or `25` when `count` is omitted or `0`. A result can be unavailable while the response is built, so `results.length` can be smaller than the number of positions scanned. Stop when the next offset reaches or exceeds the reported `total`. An empty page alone is not an end signal if `total` still indicates remaining positions. Results and totals may change while paging. - Check HTTP status and JSON parsing. A network failure, unsuccessful HTTP response or malformed body is not evidence that no matching documents exist. No error payload contract is asserted here. ## API reference - [OpenAPI description](https://search.mql5.com/openapi.json): Machine-readable GET /api/query operation and result schemas. Use the module templates in this guide for content selection. ## Search examples - [English MQL5 reference search with ISO date bounds](https://search.mql5.com/api/query?hl=en&module=mql5.com.en.docs&keyword=CTrade&isotime_from=2026-10-01T00%3A00%3A00Z&isotime_to=2026-10-06T23%3A59%3A59Z&from=0&count=10): Preferred date-filtered programmatic request using UTC ISO strings. - [English forum messages by 'John' with an empty keyword](https://search.mql5.com/api/query?hl=en&module=mql5.com.en.forum&author=John&keyword=&from=0&count=10&method=2): First page of all indexed forum messages by John, newest first; omit `keyword` for the same author-only search. - [English MQL5 reference search for CTrade](https://search.mql5.com/api/query?hl=en&module=mql5.com.en.docs%7Cmql5.com.en.book%7Cmql5.com.en.neurobook&keyword=CTrade&from=0&count=10): Searches the reference and books; first page of up to 10 requested hits. - [English search for help filtered by MQL5User](https://search.mql5.com/api/query?hl=en&module=mql5.com.en.profiles%7Cmql5.com.en.forum%7Cmql5.com.en.articles%7Cmql5.com.en.codebase%7Cmql5.com.en.docs%7Cmql5.com.en.book%7Cmql5.com.en.neurobook%7Cmql5.com.en.jobs&keyword=help&from=0&count=10&author=MQL5User): Searches the selected English modules for help, filtered by author 'MQL5User'; first page of up to 10 requested hits. - [English MQL5 reference search](https://search.mql5.com/api/query?hl=en&module=mql5.com.en.docs&keyword=MQL5&from=0&count=10): Searches the checked English reference module for MQL5. ## Optional - [Human search interface](https://www.mql5.com/en/search): Interactive search page.