В сети много разнообразных парсеров и сервисов, сделанных для сбора данных Инстаграм, в частности подписчиков и подписок.
Сегодня я расскажу Вам про один парсер для Инстаграм, при чем он абсолютно бесплатный и умеет собирать пользователей, а точнее как подписчиков, так и подписок.
Этот скрипт не мой, я нашел его на просторах интернет, когда нужно было быстро собрать подписчиков инстаграм на одном из аккаунтов.
Вот оригинал скрипта, его автор leoneed.pro.
Оригинал скрипта сейчас не обновляется, поэтому ниже представлена исправленная версия, которая в данный момент работает.
Инструкция по пользованию
- Авторизуемся в Инстаграм с вашего браузера
- Находим нужный Вам аккаунт с подписчиками или подписками
- Нажимаем на нужный Вам вариант, чтобы открылось окошко со списком
- Далее нам в браузере нужно открыть консоль из инструменты разработчика, для этого нажимаем сочетание клавиш (CTRL-SHIFT-J , по умолчанию в браузере Google Chrome)
- В консоль браузера, вставляем код приведенный под этой инструкцией и нажимаем ENTER
- По завершению работы скрипта, Вы увидите список подписчиков
- Далее просто копируйте список подписчиков и распоряжайтесь по Вашему усмотрению.
Для продвинутых пользователей
- Теперь можно задавать кол-во аккаунтов для сбора (строка кода 26). Ставим свое, по умолчанию 700;
- Возможность собирать помимо логинов, ещё и имена аккаунтов (строка кода 30). Меняем false/ true.
- Возможность изменять скорость сбора (строка кода 20). Ставьте значение в мс.
Код скрипта
Можно скопировать ниже или скачать.
// ============================================================================
// ПАРСЕР ПОДПИСЧИКОВ И ПОДПИСОК INSTAGRAM (обновлённая версия 2026)
// Оригинал: Леонид Залюбовский, 2021 | https://github.com/leoneedpro/instagram-parser
// ============================================================================
console.log('%c||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||', 'color: #13a555; font-size:16px;');
console.log('%cПАРСЕР ПОДПИСЧИКОВ И ПОДПИСОК INSTAGRAM (ver 2026)', 'color: #1d6ba3; font-size:24px;');
console.log('%c||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||', 'color: #13a555; font-size:16px;');
(function () {
try {
// --------------------------------------------------------------
// НАСТРОЙКИ
// --------------------------------------------------------------
var speed_scrolling = 1000; // мс между прокрутками
var user_count = 100; // 0 = собрать всех
var user_name = false; // true = собирать ещё и отображаемое имя
// --------------------------------------------------------------
// ПОИСК ДИАЛОГА СПИСКА ПОДПИСЧИКОВ/ПОДПИСОК
// --------------------------------------------------------------
var dialog = document.querySelector('div[role="dialog"]');
if (!dialog) {
throw new Error('Диалог со списком не найден. Откройте список подписчиков или подписок.');
}
var headingEl = dialog.querySelector('[role="heading"]');
var title = headingEl ? headingEl.textContent.trim() : '';
var isFollowers = (title === 'Подписчики' || title === 'Followers');
var isFollowing = (title === 'Подписки' || title === 'Following');
if (!isFollowers && !isFollowing) {
throw new Error('Не удалось распознать заголовок диалога ("' + title + '"). Убедитесь, что открыт именно список подписчиков/подписок.');
}
// --------------------------------------------------------------
// ПРОКРУЧИВАЕМЫЙ КОНТЕЙНЕР СПИСКА
// Ищем элемент со style="overflow: hidden auto" (или auto/scroll)
// внутри диалога — он же содержит реальный scrollHeight списка.
// --------------------------------------------------------------
function findScrollContainer(root) {
var all = root.querySelectorAll('div, section');
var candidates = [];
for (var i = 0; i < all.length; i++) {
var el = all[i];
var computed = window.getComputedStyle(el);
var ovY = computed.overflowY;
var ovShort = el.getAttribute('style') || '';
var looksScrollable =
ovY === 'auto' || ovY === 'scroll' ||
/overflow(-y)?:\s*(hidden\s+)?(auto|scroll)/.test(ovShort);
if (looksScrollable) {
candidates.push(el);
}
}
if (candidates.length === 0) return null;
// Предпочитаем кандидата, где реально есть прокрутка ИЛИ который
// содержит больше всего ссылок role="link" (сам список аккаунтов).
var best = null;
var bestScore = -1;
for (var j = 0; j < candidates.length; j++) {
var c = candidates[j];
var linksInside = c.querySelectorAll('a[role="link"]').length;
var scrollable = c.scrollHeight > c.clientHeight ? 1 : 0;
var score = linksInside * 10 + scrollable;
if (score > bestScore) {
bestScore = score;
best = c;
}
}
return best;
}
var scrollContainer = findScrollContainer(dialog);
// Фолбэк: если ничего не нашли по стилям — пробуем ближайшего
// прокручиваемого родителя первой ссылки role="link" в списке.
if (!scrollContainer) {
var firstLink = dialog.querySelector('a[role="link"][href^="/"]');
if (firstLink) {
var node = firstLink.parentElement;
while (node && node !== dialog) {
if (node.scrollHeight > node.clientHeight) {
scrollContainer = node;
break;
}
node = node.parentElement;
}
}
}
if (!scrollContainer) {
scrollContainer = dialog; // последний рубеж — скроллим сам диалог
console.log('%cНе удалось точно определить контейнер списка, использую сам диалог как запасной вариант.', 'color: #d99a1c; font-size:14px;');
} else {
console.log('%cКонтейнер списка найден.', 'color: #13a555; font-size:14px;');
}
// --------------------------------------------------------------
// ПОЛУЧЕНИЕ ОБЩЕГО КОЛИЧЕСТВА (по возможности, необязательно)
// Пытаемся найти число рядом со словом "подписчиков"/"подписок"
// в шапке профиля. Если не находим — просто не показываем total.
// --------------------------------------------------------------
var total_count = null;
try {
var headerLinks = document.querySelectorAll('a[href*="/followers/"], a[href*="/following/"], header a, section a');
for (var j = 0; j < headerLinks.length; j++) {
var t = headerLinks[j].textContent || '';
if (isFollowers && /подписчик|follower/i.test(t)) {
var m1 = t.match(/[\d.,\s]+/);
if (m1) { total_count = m1[0].trim(); break; }
}
if (isFollowing && /подписк|following/i.test(t)) {
var m2 = t.match(/[\d.,\s]+/);
if (m2) { total_count = m2[0].trim(); break; }
}
}
} catch (e) { /* не критично */ }
if (total_count) {
console.log('%cОбщее кол-во аккаунтов (примерно): ' + total_count, 'color: #13a555; font-size:16px;');
}
if (user_count !== 0) {
console.log('%cКол-во заданное пользователем: ' + user_count + ' шт.', 'color: #13a555; font-size:16px;');
}
console.log('%cНачался сбор данных, дождитесь выполнения...', 'color: #13a555; font-size:16px;');
// --------------------------------------------------------------
// СБОР НИКОВ/ИМЁН ИЗ ТЕКУЩЕГО DOM
// Каждая строка — <a href="/username/" role="link"> со span внутри.
// --------------------------------------------------------------
function collectAccounts() {
var result = []; // [{nick, name}]
var seen = {};
var links = dialog.querySelectorAll('a[role="link"][href^="/"]');
for (var i = 0; i < links.length; i++) {
var href = links[i].getAttribute('href') || '';
var match = href.match(/^\/([a-zA-Z0-9._]+)\/?$/);
if (!match) continue;
var nick = match[1];
// отсекаем служебные ссылки (explore, reels и т.п.)
if (['explore', 'reels', 'p', 'stories', 'direct'].indexOf(nick) !== -1) continue;
if (seen[nick]) continue;
var span = links[i].querySelector('span');
if (!span || !span.textContent.trim()) continue; // ссылка-аватарка без текста — пропускаем
seen[nick] = true;
var name = '';
if (user_name) {
// Реальная структура строки в Instagram (2026):
// <span class="..."> <- "обёртка ника" (W)
// <div><a href="/nick/">...<span>nick</span></a></div>
// </span>
// <span dir="auto"> <- сосед обёртки (N), содержит имя
// <span>Имя</span>
// </span>
//
// То есть нужный span с именем — это nextElementSibling
// того предка ссылки, который сам обёрнут в span и у
// которого вообще есть соседний элемент. Поднимаемся от
// <a> вверх максимум на 5 уровней и на каждом шаге
// проверяем nextElementSibling.
var node = links[i];
for (var up = 0; up < 5 && node && node !== dialog; up++) {
var sib = node.nextElementSibling;
if (sib) {
var txt = sib.textContent.trim();
if (txt && txt !== nick) {
name = txt;
break;
}
}
node = node.parentElement;
}
}
result.push({ nick: nick, name: name });
}
return result;
}
function printResults(accounts) {
var sliced = accounts.slice(0, user_count > 0 ? user_count : accounts.length);
if (user_name) {
var lines = sliced.map(function (a) { return a.nick + ' : ' + (a.name || ''); });
console.log(lines.join('\n'));
} else {
var nicks = sliced.map(function (a) { return a.nick; });
console.log(nicks.join('\n'));
}
console.log('%cАккаунтов собрано: ' + sliced.length + ' шт.', 'color: #13a555; font-size:18px;');
console.log('%cВыделите собранные имена аккаунтов выше и нажмите CTRL-C, чтобы скопировать.', 'color: #13a555; font-size:16px;');
}
// --------------------------------------------------------------
// СКРОЛЛИНГ С ОПРЕДЕЛЕНИЕМ ОСТАНОВКИ
// Останавливаемся, когда:
// - набрали нужное количество аккаунтов (user_count), или
// - scrollHeight контейнера перестал расти 3 прокрутки подряд
// (значит список догружен полностью / Instagram перестал отдавать).
// --------------------------------------------------------------
var stableCounter = 0;
var lastHeight = -1;
var maxStableChecks = 3;
function runScrolling() {
var currentAccounts = collectAccounts();
var currentHeight = scrollContainer.scrollHeight;
var enoughCollected = user_count !== 0 && currentAccounts.length >= user_count;
if (currentHeight === lastHeight) {
stableCounter++;
} else {
stableCounter = 0;
lastHeight = currentHeight;
}
var listExhausted = stableCounter >= maxStableChecks;
if (enoughCollected || listExhausted) {
printResults(currentAccounts);
return;
}
scrollContainer.scrollBy(0, 600);
setTimeout(runScrolling, speed_scrolling);
}
runScrolling();
} catch (e) {
console.log('%cОшибка: ' + e.message, 'color: #a22e1c; font-size:18px;');
console.log('%cУбедитесь, что на странице Instagram открыт список "Подписчики" или "Подписки" (клик на счётчик в профиле), и запустите скрипт заново.', 'color: #a22e1c; font-size:16px;');
}
})();
Также вот оригинальное видео автора по использованию.
В общем, с этим скриптом сбор подписчиков в инстаграме теперь не составит труда, и самое главное не нужны никакие сервисы и программы. Нужен только Ваш браузер и следовать инструкции.

не работает
Я не автор скрипта, я сделал мелкие правки для прокрутки, но видимо уже не рабоатет.
Проверил, да, если вставить скрипт и запустить то не работает.
Нужно после открытия списка подписчиков самому прокрутить до пераой загрузки подписчиков и уже потом запустить скрипт по инструкции, тогда начнет собирать.
Аккаунтов собрано: 61 шт.
VM88:42 Странно, но 2254 шт. не определились, ну и ладно=)
Эффективность впечатляет -))), ну и ладно -).
Почитайте мой ответ в прошлом коменте
открыла, прокрутила, запустила скрипт - не работает. эх
Только что проверил - работает. Открывайте подписчиков группы, прокручивайте, пока не увидите, что следующая партия подписчиков подгрузилась. Потом открывайте консоль и вставляйте код.
Добрый день. Спасибо за скрипт. Как его прервать, чтобы увидеть уже собранные результаты?
Посмотрите тут способы остановки скриптов из консоли
Спасибо жа метод. Уже сутки парсит. Сколько по времени занимает Парсинг сотен тясяч участников? У меня 250.000 чел.
Я сомневаюсь, что это скрипт потянет такой объем, т.к он использует ресурсы браузера. Если Вы видите, что визуально данные собираются, то Вам повезло )
Сколько займет не известно, чем дольше он будет работать, том медленнее будет сбор.
добрый день подскажи что делать если он максимум загружает 2000т человек потом инстаграм начинает парить перестает погружать подписчиков начинает крутить колесо загрузки в подписчиках и дальше все
Ответ я давал выше, Вы в случае с таким парсером ничего не сделаете.
Все работает! Спасибо!
Друзья я не знаю что у вас у меня все работает !!! вот бы еще такой скрипт создали что бы смс в директ по списку можно было отправлять !!!))))))
У меня тоже не работает,пишет как будто подписчиков не открыла
Обновлен код скрипта, проверено, все работает
Спасибо работает!
А где список должен появиться. У меня инстаграм блочит парсер, но то что спарсилось где лежит
Все отображается там же, в консоли.
да, спасибо все работает после поправок Автора
блин..не получается
Код обновлен, проверено, все работает.
Не работает парсер
Код обновлен, проверено, все работает.
Есть недостаток - если встречается в подписках человек с голубой галочкой, то под его ником на следующей строке будет надпись "Подтвержденный". И сколько всего будет галочек - столько ников снизу списка не будет обработано.
В эксель вставляешь всех спарсеных. Нажимаешь ctrl + F. Пишешь подтвержденный . Находишь. Нажимаешь ctrl +A и все выделятся. Правой кнопокой мыши - Удалить. Потом выбираешь удалить строку. и у тебя чистый список
Можете дать пример, откуда собирали
Работает на УРА. Вопрос: как спарсить более 700 подписчиков? Если указываю 0- выдаёт ошибку, у меня 1900шт
Для этого поменяйте
на 1900, хотя и с 0 не должно быть проблем.
Можете, пожалуйста, подсказать, почему вместо некоторых аккаунтов отображается "Подтвержденный"?
Выше, Арсений писал. Напишите мне пример, откуда собирали, посмотрю.
Попробуйте любой аккаунт, у которого есть подписка на личность с галочкой "Подтвержденный" аккаунт
У меня почему-то собирает не более 2441 аккаунтов,у разных пытался.
Подскажите возможно начать выполение скрипта с 2442 подписчика?
В данном виде скрипта нет. Т.к сначала нужно туда прокрутить.
То, что не собирает, может быть лимит от самого Инстаграм. Обычно при лимите выдает ошибку 429
вот ее и выдало мне как исправить
Спасибо большое за рабочий скрипт! Аналогичная проблема с 2412 аккаунтами, есть какой-то способ обойти лимиты инстаграма?
А у меня собирает только 392 из 1623, прокручивала список подписчиков до конца списка, запустила скрипт, ставила сначала 0 потом новый запукала с цифрой1623.... все равно 392 в списке выдает при копировании.
Это простой скрипт для сбора данных, он не всесилен. У каждого могут быть свои ограничения. Вас может блокировать сам инстаграм.
у меня все работает, включайте мозги
Это великолепно!
700 аккаунтов за 2 минуты.
Мое почтение.
Большое спасибо за такую ценную информацию! Работает на ура! Но куда дальше суваться с напарсенными аккаунтами? Таргет же на них не запустишь... Подскажите пожалуйста ?
Здравствуйте!Подскажите пожалуйста очень надо,у меня выгружаются только 2400 больше не грузит,в чем проблема мне нужно 4000 выгрузить и больше
Все ответы выше. Решения Вы не найдете. Блокировка инстаграм, ресурс браузера ... все что угодно.
Попробуйте увеличить таймаут прокрутки
Скрипт работает. Спасибо автору статьи и создателю скрипта.
Только возник вопрос, при указании количества сборка аккаунтов 11000, факт собран 1440 аккаунтов.
В чем загвоздка?
В блокировке инстаграм, в ресурсе браузера ...
Попробуйте увеличить таймаут в скрипте
Не работает(
Вы хоть напишите, что именно.
Только что проверил - все собирает. Проблема может быть только в большом объеме, но скрипт рабочий.
А лайки он собирать не умеет?)
Этот нет, но у автора есть другой парсер для лайков, ссылка есть тут на него https://github.com/leoneedpro/instagram-parser
y меня парсит только тех на КОГО акк подписан а не тех КТО на акк подписан
что нyжно поменять в скрипте?
Таких нет настроек. Попробуйте еще раз, может Вы не тот список открыли.
все работает, спасибо большое! вопрос в следующем, есть ли возможно того что бы результат был отображен как ссылки?
Не понятен вопрос. Это как "отображен как ссылки". Результат ведь выводится в консоль.
В условиях впн, он перестал работать? Год пользовалась ок было((
ВПН вы включаете на своем компьютере, думаю не должно быть проблем. Т.к. запрос идет от вас.
Все офигенно работает! Сразу поставила 0 вместо 700 в значении количества подписчиков. И в скорости поставила 700. Почти во всех случаях выгребает всех фолловеров. СПАСИБО!
Отличный парсер! Спасибо автору. Хорошо собирает большое количество данных.
Главное ставить время обработки от 500. И по количестве все при показателе "0" не дает, нужно указывать максимально известное. Т.Е.: если подписчиков 150К, то ставьте 149 999 и будет вам счастье.
Спасибо большое за код !!!
У меня работает в Хроме, а в Яндекс браузере не работает
Парсер обновлен и протестирован. Все работает!