#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;
$account = Instagram::getAccount('kevin');
/*
Available properties:
$username;
$followsCount;
$followedByCount;
$profilePicUrl;
$id;
$biography;
$fullName;
$mediaCount;
$isPrivate;
$externalUrl;
*/
echo $account->followedByCount;
$account = Instagram::getAccountById(193886659);
echo $account->username;
$users = Instagram::searchAccountsByUsername('durov');
echo '<pre>';
echo json_encode($users);
echo '</pre><br/>';
$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;
$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);
$media = Instagram::getMediaByCode('BDs9iwfL7XA');
$media = Instagram::getMediaByUrl('https://www.instagram.com/p/BDs9iwfL7XA/');
echo $media->owner->username;
$media = Instagram::getMediaById(1042815830884781756);
$medias = Instagram::getMediasByTag('zara', 30);
echo json_encode($medias);
$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);
$medias = Instagram::getTopMediasByTagName('durov');
$media = Instagram::getMediaById(1270593720437182847)
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_
echo 'Media id: ' . Media::getIdFromCode('BGiDkHAgBF_');
// Media id: 1270593720437182847
$comments = Instagram::getMediaCommentsByCode('BG3Iz-No1IZ', 8000);
$comments = Instagram::getMediaCommentsById('1130748710921700586', 10000)
$medias = Instagram::getLocationById(1);
$medias = Instagram::getLocationTopMediasById(1);
$medias = Instagram::getLocationMediasById(1);
$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>';
Java library: https://github.com/postaddictme/instagram-java-scraper