ATOM PARSER APIDocs
Документация

Настройка API в боте

Путь в боте

Откройте раздел API в боте

  1. ATOM PARSER BOT
  2. Профиль
  3. Настройки
  4. API
Подключение

Pull API

Pull API позволяет запускать парсинг, проверять статус и забирать результат напрямую через запросы к api.atomparser.io, без своего сервера и входящего webhook.

Webhook

Сервер можно не поднимать

В Pull API webhook URL не указывается. Результаты не приходят входящим POST, пользователь сам забирает их через API.

Pull API

Главный способ получить результат

Парсинг запускается, останавливается и проверяется запросами к api.atomparser.io, а готовый результат доступен через /parse/results.

Доступ

В каждом запросе нужен user_id и secret

Secret берется из API-раздела в боте. Лимит: 6 запросов в минуту на все endpoints API.

Endpoints

Основные endpoints для Pull API:

Запуск: POST https://api.atomparser.io/start_parse
Остановка: POST https://api.atomparser.io/stop_parse
Статус: GET https://api.atomparser.io/parse/status
Результаты: GET https://api.atomparser.io/parse/results
Secret: SECRET
Пример Pull API

Пример запуска парсинга и получения результата через Pull API:

import asyncio
import aiohttp

user_id = "USER_ID"
secret = "SECRET"

async def main():
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.atomparser.io/start_parse",
            json={
                "user_id": user_id,
                "secret": secret
            }
        ) as resp:
            data = await resp.read()
            print(data)

        while True:
            await asyncio.sleep(15)

            async with session.get(
                "https://api.atomparser.io/parse/results",
                params={
                    "user_id": user_id,
                    "secret": secret
                }
            ) as resp:
                data = await resp.read()
                print(data)

asyncio.run(main())
Главная логика: пользователь не поднимает сервер и не принимает входящий webhook. Он запускает парсинг и сам забирает результат через Pull API.
Endpoint

Endpoint для получения JSON

Если пользователю нужен webhook и свой сервер, можно подключить локальный endpoint. В этом режиме Telegram-бот будет отправлять json с результатами парсинга на указанный адрес.

Когда использовать: если нужно принимать результат входящим POST на свой сервер. Для этого нужно поднять локальный endpoint, открыть его через ngrok или Cloudflare Tunnel и вставить URL в поле API endpoint внутри бота.
Шаг

Создайте локальный endpoint

Сервер должен принять входящий запрос от Telegram-бота и сохранить полученный json.

Шаг

Сделайте сервер доступным по публичному URL

После запуска локальный адрес нужно сделать доступным по публичному URL через ngrok или Cloudflare Tunnel, чтобы бот мог отправить запрос.

Шаг

Вставьте URL в бота

Публичный URL туннеля нужно вставить в раздел API внутри бота. После этого бот сможет присылать файл на указанный endpoint.

Пользователь запускает локальный сервер
Вставляет URL туннеля в API бота
Telegram-бот отправляет json
Пример

Пример локального сервера для приёма json

Ниже базовый пример локального endpoint, который принимает POST-запрос от Telegram-бота, сохраняет тело как json и отвечает статусом 200 OK.

01

Установите зависимости

Создайте папку проекта и установите Express.

npm init -y
npm install express
02

Создайте endpoint

Этот маршрут принимает json и сохраняет его как json.

const express = require("express");
const fs = require("fs");

const app = express();
app.use(express.json({ limit: "10mb" }));

app.post("/atom", (req, res) => {
  fs.writeFileSync(
    "json",
    JSON.stringify(req.body, null, 2)
  );

  res.status(200).json({ ok: true });
});

app.listen(3000, () => {
  console.log("Server running on http://localhost:3000/atom");
});
03

Запустите сервер

После запуска локальная точка приёма будет доступна на порту 3000.

node server.js
04

Сделайте локальный сервер доступным по публичному URL через ngrok или Cloudflare Tunnel

Для теста и быстрой настройки подойдут туннель-сервисы. Пользователь получает публичный URL и вставляет его в боте в поле API endpoint.

# Вариант 1: ngrok
ngrok http 3000

# Вариант 2: Cloudflare Tunnel
cloudflared tunnel --url http://localhost:3000

После запуска сервис выдаст публичный адрес. В бота нужно вставить endpoint в таком формате:

https://your-name.ngrok-free.app/atom
https://random-name.trycloudflare.com/atom
Логика для пользователя: запустить локальный сервер, сделать сервер доступным по публичному URL через ngrok или Cloudflare Tunnel, вставить URL в раздел API внутри бота и затем ждать входящий POST с json.
Шаг 3

После сохранения endpoint бот покажет данные для запуска

Когда endpoint уже добавлен, в боте появляется блок с тремя важными значениями: webhook для получения json, endpoint запуска и secret для старта парсинга.

Что увидит пользователь
Отправляем json на
https://webhook.site/your-endpoint
Endpoint для запуска
https://api.atomparser.io/start_parse
Secret для запуска
SECRET
Важно

Secret нужен для каждого запроса запуска

Пользователь копирует secret из этого меню и использует его в теле POST-запроса. Без корректного secret запуск парсинга не пройдет.

Логика

Запуск идет отдельно от webhook

Сначала пользователь задает endpoint для получения результата, затем отдельно отправляет команду на start_parse, чтобы запустить процесс.

Запуск

Команда запуска парсинга

Ниже готовый пример. Пользователь подставляет свой USER_ID и SECRET из меню бота и отправляет запрос на https://api.atomparser.io/start_parse.

cURL

Это основной пример ручного запуска парсинга через API.

curl -X POST "https://api.atomparser.io/start_parse" \
  -H "Content-Type: application/json" \
  -d '{
    "user_id": "USER_ID",
    "secret": "SECRET"
}'
Что заменить: вместо USER_ID подставить ID пользователя, а вместо SECRET секрет из меню, которое бот показывает после добавления endpoint.
ATOM PARSER Developer API - @atom_parser_bot