Skip to content

Instagram PHP Scraper. Get account information, photos, videos and comments without any authorization

Notifications You must be signed in to change notification settings

adam-szabo/instagram-php-scraper

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

instagram-php-scraper

Usage

#v0.5.0 Important update:

First of all thank you guys for your suggestions and support. This is not final fix for getting medias by tags and locations.

if you need to get medias by tags or locations:

$instagram = Instagram::withCredentials('username', 'password');
$instagram->login();
// And then you will be able to query instagram with newly updated methods. (Notice that these methods are not static anymore)

$user = $instagram->getAccountById(3);
$medias $instagram->getLocationTopMediasById(1)
$medias = $instagram->getLocationMediasById(1);
$location $instagram->getLocationById(1);
$medias = $instagram->getTopMediasByTagName('hello');

Be carefull with login method. I am planning to implement session caching soon

composer require raiym/instagram-php-scraper

use InstagramScraper\Instagram;

Get account info

$account = Instagram::getAccount('kevin');
/*
Available properties: 
    $username;
    $followsCount;
    $followedByCount;
    $profilePicUrl;
    $id;
    $biography;
    $fullName;
    $mediaCount;
    $isPrivate;
    $externalUrl;
*/
echo $account->followedByCount;

Get account info by userId

$account = Instagram::getAccountById(193886659);
echo $account->username;

Search users by username

$users = Instagram::searchAccountsByUsername('durov');
echo '<pre>';
echo json_encode($users);
echo '</pre><br/>';

Get account medias

$medias = Instagram::getMedias('kevin', 150);

/*
Available properties: 
    $id;
    $createdTime;
    $type;
    $link;
    $imageLowResolutionUrl;
    $imageThumbnailUrl;
    $imageStandardResolutionUrl;
    $imageHighResolutionUrl;
    $caption;
    $captionIsEdited;
    $isAd;
    $videoLowResolutionUrl;
    $videoStandardResolutionUrl;
    $videoLowBandwidthUrl;
    $videoViews;
    $code;
    $owner;
    $ownerId;
    $likesCount;
    $locationId;
    $locationName;
    $commentsCount;
    
*/
echo $medias[0]->imageHighResolutionUrl;
echo $medias[0]->caption;

Paginate medias

$result = Instagram::getPaginateMedias('kevin');
$medias = $result['medias']

if($result['hasNextPage'] === true) {
    $result = Instagram::getPaginateMedias('kevin', $result['maxId']);
    $medias = array_merge($medias, $result['medias']);
}

echo json_encode($medias);

Get media by code

$media = Instagram::getMediaByCode('BDs9iwfL7XA');

Get media by url

$media = Instagram::getMediaByUrl('https://www.instagram.com/p/BDs9iwfL7XA/');
echo $media->owner->username;

Get media by id

$media = Instagram::getMediaById(1042815830884781756);

Search medias by tag name

$medias = Instagram::getMediasByTag('zara', 30);
echo json_encode($medias);

Paginate medias by tag name

$result = Instagram::getPaginateMediasByTag('zara');
$medias = $result['medias']

if($result['hasNextPage'] === true) {
    $result = Instagram::getPaginateMediasByTag('zara', $result['maxId']);
    $medias = array_merge($medias, $result['medias']);
}

echo json_encode($medias);

Get top medias by tag name

$medias = Instagram::getTopMediasByTagName('durov');

Get media by id

$media = Instagram::getMediaById(1270593720437182847)

Convert media id to shortcode

echo 'CODE: ' . Media::getCodeFromId('1270593720437182847_3');
// OR
echo 'CODE: ' . Media::getCodeFromId('1270593720437182847');
// OR
echo 'CODE: ' . Media::getCodeFromId(1270593720437182847);
// CODE: BGiDkHAgBF_
// So you can do like this: instagram.com/p/BGiDkHAgBF_

Convert shortcode to media id

echo 'Media id: ' . Media::getIdFromCode('BGiDkHAgBF_');
// Media id: 1270593720437182847

Get media comments by shortcode

$comments = Instagram::getMediaCommentsByCode('BG3Iz-No1IZ', 8000);

Get media comments by id

$comments = Instagram::getMediaCommentsById('1130748710921700586', 10000)

Get location id

$medias = Instagram::getLocationById(1);

Get location top medias by location id

$medias = Instagram::getLocationTopMediasById(1);

Get location medias by location id

$medias = Instagram::getLocationMediasById(1);

Get followers of an account

$username = 'kevin';
$followers = [];
$instagram = Instagram::withCredentials('your_username', 'hunter2');
$instagram->login();
sleep(2); // Delay to mimic browser
$account = Instagram::getAccount($username);
sleep(1);
$followers = $instagram->getFollowers($account->getId(), 1000, 100, true); // Get 1000 followers of 'kevin', 100 a time with random delay between requests
echo '<pre>' . json_encode($followers, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . '</pre>';

Other

Java library: https://github.com/postaddictme/instagram-java-scraper

About

Instagram PHP Scraper. Get account information, photos, videos and comments without any authorization

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%