Это API давно сломано, и, похоже, никому не нужно.
Если оно вам понадобилось, напишите в обратную связь.

С помощью API поиска вы сможете искать на 2ch.hk и получать ответ в json-формате.

Запрос

Минимальный запрос выглядит так:
http(s)://m2ch.hk/board/search?q=запрос&out=json

board
Адрес доски, замените на нужный.

q
Запрос. Можно в utf-8 или win-1251. Ответ в любом случае будет в utf-8.

out
Формат ответа. Пока доступен только json и html.
При html будет выведена обычная страница в стиле сайта.
По умолчанию — html.

Необязательные параметры

mode
Где искать. Доступно:
scommsubj — везде;
searchsubj — в любых заголовках;
searchcomm — в любых сообщениях;
tscommsubj — в ОП-постах;
tsearchsubj — в заголовках ОП-постов;
tsearchcomm — в сообщениях ОП-постов.
По умолчанию — везде.

nocheck
Отключает проверку очепяток и косяков в раскладке клавиатуры. Нет значений.
По умолчанию — вкл.

Ответ

API-ответы всегда приходят со статусом 200 OK.
Кроме того, вы можете проверить наличие заголовка Content-Type: application/json;charset=utf-8.
Это предохранит вас от неожиданностей, типа ошибок сервера с кодом 5xx или внезапной выдачи html (ну вдруг).
Если доска не существует, статус будет 404 Not Found.
503 Service Unavailable означает временные работы на сайте.

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

query
Это мы искали.

posts
Массив найденных сообщений.
Нет, если есть error_code и error_text.

Необязательные значения

old_query
Ваш старый запрос, если он был починен.
В query тогда будет лежать починеный.
Предложите юзеру поискать с параметром nocheck, если он считает, что система ошиблась. Но ошибается редко.

double_search
Мы поискали и query, и old_query, но ничего не нашлось.
Если есть, всегда true.

error_code
error_text
Поиск не состоялся, случилась ошибка.
В error_text — строка, пояснение на русском без знака препинания в конце.
0 — Ничего не найдено
1 — Вакаба лежит
2 — Введите чего-нибудь
3 — Один символ - маловато. Хотя бы два

warning_code
warning_text
Поиск состоялся, но есть замечания.
Массивы, так как предупреждений может быть несколько.
0 — Слишком длинный запрос. Ищу первые 32 байта
1 — Показаны случайные 50 постов
Все это — ограничения вакабы. Можете для 1 предложить поискать только в ОП-постах, а для 0 — сократить запрос.

Могут быть добавлены новые коды ошибок и предупреждений.
Поэтому неизвестные коды тоже полезно обрабатывать.

Сообщения

Если значение отсутствует — оно не указано.

Внимание, прикрепленные видео вакабой не показываются. Пишите в /d/.

num
Номер поста.

subject
Его заголовок.

mail
E-mail и сажа.

postername
Имя. Могут быть html-теги — иконки в /po/ и принудительные трипкоды.

tripcode
Трипкод. Содержит html-тег <span class="(tripcode|mod|adm)">.

date
Дата и время поста, отформатированные вакабой.

parent
Номер ОП-поста. 0, если этот пост и есть ОП.

image
Ссылка на прикрепленный файл. Вместе с доской на всякий случай.

filename
Имя файла.

size
Размер файла в килобайтах.

width
height
Ширина и высота файла, если это картинка.

thumbnail
Ссылка на превью файла вместе с доской. Всегда картинка.
Если есть image, но нет thumbnail, то это случай, когда «Нет картинки».

tn_width
tn_height
Ширина и высота превью.

comment
Сообщение. Этот ключ есть всегда, даже если значение пустое.


Вопросы, предложения, баги? Пишите!