API Тильды даёт доступ к данным сайта напрямую, без ручного экспорта через интерфейс: списки страниц, содержимое блоков, статический код проекта. На практике использую его для трёх задач: перенос контента при смене хостинга, синхронизация каталога с 1С и настройка вебхуков, чтобы заявки и заказы сразу улетали в CRM или Telegram. Ниже разложил, какие методы API что отдают и куда обычно направляю эти данные на реальных проектах.
По теме статьи
Готовое решение
Массовое изменение цен в каталоге Tilda
Скрипт поднимает или снижает цены товаров и вариантов в каталоге Tilda на заданный процент. Сначала показывает таблицу «было / станет», меняет только после подтверждения.
от1 000 ₽
Кастомный скрипт
Когда стандартных блоков не хватает
Доработка сайтов на Тильде: скрипты для корзины, промокоды, зоны доставки, интеграции с CRM и Telegram. Простой скрипт от 3 000
от3 000 ₽
Что умеет 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, который сам решает, куда какие поля отправить. Второй вариант удобнее, если каналов больше двух-трёх и они периодически меняются.