API v1 · публичные данные

Профиль ВКонтакте одним запросом

Отправьте ID или короткое имя. Сервис вернёт один файл с публичными полями профиля: город, счётчики, статус, дату рождения, аватар. Без токена ВКонтакте и без постраничной выдачи.

60 запросов в минуту ключ в течение дня данные не хранятся

GET vkuserapi.space/download/vk/tokarev 200 · 22 мс
# один запрос, один файл
curl "https://vkuserapi.space/download/vk/tokarev?format=json" \
  -H "Authorization: Bearer k_live_7f3a…"
Ответapplication/json · 0,5 КБ
{
  "id": 242341015,
  "domain": "tokarev",
  "name": "Артём Токарев",
  "sex": 2,
  "city": { "id": 2, "title": "Санкт-Петербург" },
  "bdate": "11.2.1994",
  "photo_200": "https://sun9-14.userapi.com/c514.jpg",
  "status": "Собираю данные по крупицам",
  "verified": 0,
  "followers_count": 4820,
  "counters": { "friends": 312, "photos": 87, "videos": 4 },
  "last_seen": { "platform": 7, "time": 1762251840 },
  "exported_at": "2026-11-04T10:22:41Z"
}
x-ratelimit-limit
60
x-ratelimit-remaining
41
x-ratelimit-reset
38
46 128запросов за сутки
22 мсмедиана, p50
244 мсхвост, p95
99,99 %доступность за 90 дней
Запрос

Профиль отдаётся одним запросом. Пакет — отдельный эндпоинт.

Один GET, и профиль у вас

Идентификатор или короткое имя идёт прямо в путь. Формат, набор полей и язык ответа задаются параметрами. Ключ передаётся заголовком Authorization или параметром key, если так удобнее.

GEThttps://vkuserapi.space/download/vk/{id}
ПараметрГдеПо умолчаниюЧто делает
idпутьобязателенЧисловой ID или короткое имя, например tokarev.
formatqueryjsonjson или csv. Пакетный запрос умеет ещё ndjson.
fieldsqueryвсеСписок полей через запятую. Чем меньше полей, тем быстрее ответ.
langqueryruЯзык названий города и страны.
sepquery;Разделитель для CSV. С точкой с запятой файл открывается в Excel без настроек.
keyquery / header—Ключ доступа. Заголовок приоритетнее параметра.

Без ключа тоже работает: 10 запросов в минуту с одного адреса. Ключ поднимает потолок до 60 в минуту и снимает привязку к адресу.

Поля

Имена совпадают с VK API — код переносится без переименований.

Что приходит в ответе

Имена полей — как в VK API; name и exported_at добавляет сервис. Поле, закрытое настройками приватности, приходит со значением null — набор ключей от этого не меняется.

ПолеТипПримерЧто это
idinteger242341015Постоянный номер профиля. Не меняется при смене короткого имени.
domainstringtokarevАдрес страницы, он же короткое имя.
screen_namestringtokarevТо же, что domain. Оставлено для совместимости.
first_name
last_name
stringАртём
Токарев
Имя и фамилия как в профиле.
namestringАртём ТокаревСклеенные имя и фамилия — удобно для вывода в списке.
is_closedbooleanfalseСтраница закрыта для тех, кто не в друзьях.
sexinteger21 — женский, 2 — мужской, 0 — не указан.
bdatestring11.2.1994Дата рождения, если открыта. Год может отсутствовать.
cityobject{id, title}Город. title — на языке из параметра lang.
countryobject{id, title}Страна.
photo_200string (url)sun9-14…jpgАватар 200 px. Есть также photo_max_orig.
statusstringСобираю данные…Текст статуса. Может быть пустым.
verifiedinteger0Подтверждённая страница: 0 или 1.
followers_countinteger4820Подписчики.
countersobject{friends, photos…}Счётчики: друзья, фотографии, видео, аудио, альбомы.
last_seenobject{platform, time}Последний визит: платформа и время в Unix. Если скрыт — null.
exported_atstring (ISO)2026-11-04T…ZКогда сервис собрал ответ. Наше поле, не из VK.

Сервис не читает переписки, закрытые страницы и данные, скрытые приватностью. Всё, что приходит, доступно любому посетителю профиля в браузере.

Форматы

Один профиль — один файл. Страниц нет, дочитывать нечего.

JSON, CSV и NDJSON

JSON сохраняет вложенность как есть. CSV разворачивает вложенные объекты в колонки — его можно открыть в Excel и в Google Таблицах. NDJSON отдаёт по профилю на строку и работает только в пакетном запросе.

application/json
{
  "id": 242341015,
  "domain": "tokarev",
  "city": { "id": 2, "title": "Санкт-Петербург" },
  "counters": { "friends": 312, "photos": 87 }
}

Пакет до 100 профилей

POST /download/batch принимает массив id и отдаёт NDJSON потоком: первая строка приходит, пока остальные ещё собираются. До 100 профилей на ключе, до 1 000 на договоре.

Без пагинации

Ответ — цельный файл, курсора и следующей страницы нет. Если профиль не менялся, условный запрос с If-None-Match вернёт 304 без тела.

Playground

Тот же запрос, что вы отправите из кода. Формат и набор полей — параметрами.

Проверить запрос

Введите ID или короткое имя. Ответ и заголовки лимита — те же, что вернёт эндпоинт; в демо-режиме они собираются в браузере, без запроса к серверу.

Лимит без ключа — 10 запросов в минуту. Ключ поднимает до 60.

200 OK 22 мс · 0,5 КБ · демо

{
  "id": 242341015,
  "domain": "tokarev",
  "name": "Артём Токарев",
  "sex": 2,
  "city": { "id": 2, "title": "Санкт-Петербург" },
  "bdate": "11.2.1994",
  "photo_200": "https://sun9-14.userapi.com/c514.jpg",
  "status": "Собираю данные по крупицам",
  "verified": 0,
  "followers_count": 4820,
  "counters": { "friends": 312, "photos": 87, "videos": 4 },
  "last_seen": { "platform": 7, "time": 1762251840 },
  "exported_at": "2026-11-04T10:22:41Z"
}
x-ratelimit-limit
10
x-ratelimit-remaining
9
x-ratelimit-reset
60
Лимиты

Считаются по ключу и по адресу. Окно — минута, скользящее.

Сколько можно запрашивать

Каждый ответ несёт три заголовка: сколько разрешено, сколько осталось и через сколько секунд окно сбросится. Условный запрос с If-None-Match тоже расходует лимит, но тело не передаётся.

ДоступЗапросов в минутуПакетКому
Без ключа10—Проверить перед покупкой, разовые задачи.
Ключ60100 профилейСкрипты, боты, выгрузки по расписанию.
Договорот 600до 1 000Сервисы с постоянным потоком. Выделенный узел.

Заголовки ответа

x-ratelimit-limit — потолок; x-ratelimit-remaining — остаток; x-ratelimit-reset — секунды до сброса. В браузере они видны благодаря Access-Control-Expose-Headers.

Когда лимит исчерпан

Приходит 429 и заголовок Retry-After. Подождите указанное число секунд, потом повторяйте. Очередь не растёт.

Статус

Проверки каждые 30 секунд с трёх точек. Данные — из внутреннего монитора.

Доступность за 90 дней

99,99 % успешных ответов. Один инцидент за квартал: двенадцать минут из-за переполнения очереди на узле выгрузки.

07.08.2026 04.11.2026

28.09 — 12 минут деградации

  • Двенадцать минут деградации. Очередь на узле выгрузки переполнилась: часть запросов отдавала 503, p95 вырос до 1,4 с. Узел перезапущен, очередь разведена по двум воркерам.
  • Плановые работы. Переезд на новый узел выгрузки, 11 минут. Запросы в это время обслуживал резервный.

История инцидентов ведётся с августа 2026 года. Сообщения о сбоях принимаются на status@vkuserapi.space.

Ошибки

Тело ошибки — всегда JSON с полями code, message и request_id.

Коды ответа

Ошибки приходят в одном формате, поэтому их можно разбирать одним обработчиком. В request_id — идентификатор конкретного запроса, его стоит указывать в письме.

КодКогдаЧто делать
200Профиль найден и собран.Читать тело.
304Профиль не менялся с прошлого запроса, совпал ETag.Взять свою копию, тело пустое.
400Не разобрали id, формат или список полей.Проверить параметры, читать message.
401Ключ отозван или указан с опечаткой.Сверить ключ, выпустить новый.
404Профиля нет: удалён, заблокирован или не существует.Не повторять: ответ не изменится.
429Лимит исчерпан.Ждать Retry-After секунд.
503Узел перегружен или идёт обновление.Повторить с паузой 1 → 2 → 4 с.
application/json · 429
{
  "code": "rate_limited",
  "message": "Лимит 10 запросов в минуту исчерпан",
  "retry_after": 38,
  "request_id": "req_9f2a4c81"
}
Вопросы

Коротко о том, что спрашивают чаще всего.

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

Нужен ли токен ВКонтакте?

Нет. Сервис собирает только то, что видно на публичной странице. Своего токена не требуется, доступ к аккаунту вы не выдаёте.

Вы храните данные профилей?

Нет. Ответ собирается в момент запроса и уходит в HTTP-ответ. В логах остаются идентификатор запроса, время и код ответа — без содержимого профиля.

Что придёт, если профиль закрыт?

Публичные поля с null там, где значение скрыто. Если страница удалена или заблокирована, вернётся 404.

Можно забрать тысячу профилей за раз?

Одним запросом — до 100 в POST /download/batch. Больше — несколькими пакетами с паузой между ними, иначе сработает лимит.

Как получить ключ?

Напишите на keys@vkuserapi.space: откуда будут запросы и сколько примерно в сутки. Ключ выдают вручную, обычно в течение дня.

Нужен ключ?

Напишите, откуда пойдут запросы и сколько их ожидается в сутки. Ответим в течение дня и пришлём ключ с лимитом 60 запросов в минуту.

keys@vkuserapi.space