Tilda · 6 мин чтения

API Тильды: какие данные можно забрать и куда передать

API Тильды даёт доступ к данным сайта напрямую, без ручного экспорта через интерфейс: списки страниц, содержимое блоков, статический код проекта. На практике использую его для трёх задач: перенос контента при смене хостинга, синхронизация каталога с 1С и настройка вебхуков, чтобы заявки и заказы сразу улетали в CRM или Telegram. Ниже разложил, какие методы API что отдают и куда обычно направляю эти данные на реальных проектах.

Что умеет API Тильды и где взять ключи

Ключи для API, publickey и secretkey, выдаются в настройках сайта, на вкладке «Экспорт». Без них ни один запрос не пройдёт, Тильда сверяет пару ключей на каждый вызов. Сам API устроен просто: это набор GET-запросов на адрес https://api.tildacdn.info/v1/, каждый метод возвращает JSON, включая методы экспорта: у них в ответе поле html с кодом страницы и поле filename с именем файла, архивов API не отдаёт. Есть и лимит: 150 запросов в час.
Взаимодействие по API доступно только на тарифе Business, это я всегда проверяю в личном кабинете клиента ещё до того, как обещать сроки по интеграции.
Работать с API можно и без бэкенда: curl из терминала или Postman покажет, что метод в принципе отвечает. Но для регулярной синхронизации данные всё равно нужно куда-то складывать, и тут уже требуется свой обработчик на сервере.

Экспорт страниц и проекта: что реально можно забрать

Для переноса контента и структуры сайта в API Тильды есть отдельная группа методов. Обращаюсь к ним, когда клиент уходит с Тильды на WordPress или собственный движок, но не готов вручную копировать текст из каждого блока.

Метод Что возвращает Когда использую
getpageslist Список страниц проекта с id и url Чтобы понять, с какими pageid работать дальше
getpagefull JSON-структура страницы: блоки, тексты, настройки При переносе контента в другую систему или анализе структуры
getpageexport Готовый HTML, CSS и JS одной страницы Когда нужна статическая копия без хостинга на Тильде
getpagefullexport JSON с полным html-кодом страницы и локальными ссылками на файлы При полном переезде с Тильды на другой движок, страницы забираются по одной
getprojectslist, getprojectinfo Список проектов и их параметры Когда под одними ключами держу несколько сайтов клиента

Например, чтобы получить JSON-структуру конкретной страницы со всеми блоками и текстами, запрос выглядит так:

curl "https://api.tildacdn.info/v1/getpagefull/?publickey=XXXX&secretkey=YYYY&pageid=123456"

В ответе приходит вложенный JSON с массивом блоков. Оттуда вытаскиваю тексты и ссылки на картинки, если нужно перенести контент в другую CMS без ручной сборки каждого блока заново. Если задача не перенести контент, а снять статичную копию сайта как есть, использую getpageexport или getpagefullexport: метода на проект целиком в API нет, страницы забираются по одной по списку из getpageslist.

Бесплатный материал

🎁 Полезный скрипт в подарок

Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.

Без спама. Отписка в 1 клик.

Заказы и формы: куда уходят заявки

Экспорт страниц закрывает разовые задачи, а для заявок и заказов важнее непрерывный поток. Здесь Тильда не заставляет разбирать HTML форм самостоятельно, в настройках блока формы уже есть готовые интеграции.

Канал передачи Где настраивается Формат данных
Webhook в форме или магазине Настройки сайта → Формы → Webhook, затем в меню «Контент» блока с формой отмечается приёмщик Webhook POST-запрос с полями формы, в PHP они приходят в массиве $_POST
CRM-интеграции (Bitrix24, amoCRM и другие) Настройки сайта → Формы, там подключается приёмщик, а в блоке он отмечается в меню «Контент» Поля формы напрямую в карточку сделки CRM
1С через CommerceML Раздел «Товары» на Тильде, кнопка «Синхронизация через CommerceML» Обмен запускает 1С: отправляет import.xml и offers.xml, забирает заказы
Яндекс Доставка Настройки магазина, раздел «Доставка», поле токена Расчёт и передача заказа без стороннего кода
Платёжные системы, включая Робокассу Настройки магазина, платёжные системы Статус оплаты по заказу

Webhook самый гибкий вариант, потому что данные принимает любой мой обработчик, а не только сервис из готового списка. Тильда отправляет POST-запрос на указанный URL при каждой отправке формы, но не в формате JSON: данные приходят обычными полями формы, в PHP их читают из массива $_POST. Скрипт должен отвечать в течение пяти секунд, иначе данные не отправятся, а система сделает ещё две попытки, каждую через минуту.
Для приёма оплаты можно подключить Робокассу прямо в настройках платёжных систем магазина, без своего кода на стороне Тильды, статус оплаты потом приходит через тот же вебхук или уходит в CRM вместе с остальными данными заказа.

Синхронизация каталога через 1С и доставку

Отдельный канал обмена работает не через тот же REST API, а через CommerceML, встроенный обмен с 1С. Настраивается с двух сторон. На Тильде в разделе «Товары» нажимают «Синхронизация через CommerceML» и копируют значения полей «Ссылка на коннектор», «Имя пользователя» и «Пароль», в 1С их вставляют в настройки обмена с сайтом. Дальше обмен инициирует сама 1С: авторизуется на коннекторе, отправляет файлы import.xml и offers.xml и запускает импорт товаров и остатков, а заказы забирает во вкладке «Обмен заказами» по кнопке «Выполнить обмен». По расписанию Тильда ничего не забирает.
Для доставки в Тильде есть встроенный калькулятор СДЭК по тарифам и зонам оператора, и отдельно поле для токена Яндекс Доставки в настройках магазина. Если нужны нестандартные зоны, например свои районы города с фиксированной ценой, а не тариф курьерской службы, это уже другая логика, и под неё пишу кастомный скрипт под конкретный блок.

Как принимать данные на своей стороне

На своей стороне вебхук обычно принимаю обычным PHP-обработчиком на том же хостинге, где крутится сайт: беру поля из массива $_POST, прогоняю значения через urldecode, потому что часть символов Тильда экранирует перед передачей, и сразу сохраняю в MySQL подготовленным запросом. Отдельный сервер тут не нужен, обычного shared-хостинга с PHP и MySQL достаточно, так делаю и для заявок с Тильды, и для форм на WordPress.
Если нужно продублировать заявку в Telegram, из того же обработчика отправляю curl-запросом сообщение через Telegram Bot API, без очередей и лишней инфраструктуры:

curl -X POST "https://api.telegram.org/bot<TOKEN>/sendMessage" \
  -d "chat_id=<CHAT_ID>&text=Новая заявка с сайта"

Автоматизация и кастомные сценарии

Когда точек назначения больше одной и данные с Тильды должны попасть сразу в таблицу, мессенджер и внутренний сервис, вручную писать обработчик под каждый канал невыгодно. Для таких цепочек беру автоматизацию сценариев на n8n: вебхук от Тильды принимает один нод, а дальше сценарий сам раскладывает данные по CRM, таблице или Telegram в зависимости от типа заявки.
Если нужен не разовый алерт, а бот с логикой, подтверждение заказа кнопками, статусы доставки, беру Python и aiogram, потому что боту нужно хранить состояние диалога, а простой отправкой текста тут не обойтись.
Обратный поток тоже встречается: подтянуть на странице курс валют или показать нестандартный расчёт доставки прямо в Zero Block. Такие задачи закрываю кастомным скриптом под конкретный блок, а не переделкой всей логики магазина.

Условия и возможности Тильды меняются, поэтому перед запуском я уточняю их у самого сервиса.

Частые вопросы

Нужен ли программист, чтобы получить данные через API Тильды?

Для разового запроса вроде выгрузки одной страницы можно обойтись curl и без разработчика. А регулярный приём вебхуков, сохранение в базу и рассылка по нескольким каналам обычно требует своего обработчика на сервере, потому что Тильда отправляет данные один раз и не хранит историю запросов.

На всех ли тарифах Тильды доступен API?

Нет, взаимодействие по API и ключи publickey и secretkey доступны только на тарифе Business. Перед тем как обещать интеграцию, всегда прошу клиента проверить это в личном кабинете, потому что условия периодически меняются.

Можно ли получать заказы из Тильды в реальном времени?

Да, через вебхук в настройках магазина или формы: Тильда отправляет POST-запрос сразу при создании заказа или отправке формы. Скорость дальнейшей обработки зависит уже от того, как быстро отвечает ваш обработчик.

Что делать, если данные из Тильды нужны сразу в нескольких системах?

Вебхук Тильды бьёт в один URL, поэтому либо дублирую логику рассылки в своём PHP-обработчике, либо завожу сценарий в n8n, который сам решает, куда какие поля отправить. Второй вариант удобнее, если каналов больше двух-трёх и они периодически меняются.

Есть задача?

Обсудим в мессенджере

Расскажите, что нужно сделать — отвечу в течение 4 часов в рабочее время. Первая консультация бесплатно.

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов куки) с использованием Yandex.Metrika.
Понятно