PHPackages                             emmanueln-nike/instagram - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. emmanueln-nike/instagram

ActiveLibrary[API Development](/categories/api)

emmanueln-nike/instagram
========================

An easy-to-use PHP Class for laravel for using the Instagram's API.

089PHP

Since Sep 9Pushed 9y agoCompare

[ Source](https://github.com/emmanueln-nike/Instagram-laravel-api)[ Packagist](https://packagist.org/packages/emmanueln-nike/instagram)[ RSS](/packages/emmanueln-nike-instagram/feed)WikiDiscussions master Synced 3w ago

READMEChangelogDependenciesVersions (1)Used By (0)

[![Image](tests/example/assets/instagram.png)](tests/example/assets/instagram.png) Instagram Laravel API
========================================================================================================

[](#-instagram-laravel-api)

> Updated Instagram API for Laravel

A PHP wrapper for the Instagram API. Feedback or bug reports are appreciated.

> [Composer](#installation) package available.
> Supports [Instagram Video](#instagram-videos) and [Signed Header](#signed-header).

Requirements
------------

[](#requirements)

- PHP 5.3 or higher
- cURL
- Registered Instagram App

Get started
-----------

[](#get-started)

To use the Instagram API you have to register yourself as a developer at the [Instagram Developer Platform](http://instagr.am/developer/register/) and create an application. Take a look at the [uri guidelines](#samples-for-redirect-urls) before registering a redirect URI. You will receive your `client_id` and `client_secret`.

---

Please note that Instagram mainly refers to »Clients« instead of »Apps«. So »Client ID« and »Client Secret« are the same as »App Key« and »App Secret«.

---

> A good place to get started is the [example project](tests/example/README.md).

### Installation

[](#installation)

I strongly advice using [Composer](https://getcomposer.org) to keep updates as smooth as possible.

```
$ composer require "emmanueln-nike/instagram:dev-master"

```

Add the service provider to config/app.php in the providers array

```
$ Emmanueln\Instagram\InstagramServiceProvider::class

```

### Configuration

[](#configuration)

Publish the configuration file by running the command

```
$ php artisan vendor:publish --provider="Emmanueln\Instagram\InstagramServiceProvider"

```

This will create a instagram.php file in your config directory. Here you must enter your Instagram Api Key, Api Secret, and Callback URL.

### Initialize the class

[](#initialize-the-class)

```
use Emmanueln\Instagram\Instagram;

$instagram = new Instagram(array(
	'apiKey'      => 'YOUR_APP_KEY',
	'apiSecret'   => 'YOUR_APP_SECRET',
	'apiCallback' => 'YOUR_APP_CALLBACK'
));

echo "Login with Instagram";
```

### Authenticate user (OAuth2)

[](#authenticate-user-oauth2)

```
// grab OAuth callback code
$code = $_GET['code'];
$data = $instagram->getOAuthToken($code);

echo 'Your username is: ' . $data->user->username;
```

### Get user likes

[](#get-user-likes)

```
// set user access token
$instagram->setAccessToken($data);

// get all user likes
$likes = $instagram->getUserLikes();

// take a look at the API response
echo '';
print_r($likes);
echo '';
```

**All methods return the API data `json_decode()` - so you can directly access the data.**

Available methods
-----------------

[](#available-methods)

### Setup Instagram

[](#setup-instagram)

`new Instagram(//);`

`array` if you want to authenticate a user and access its data without using the config/instagram.php:

```
new Instagram(array(
	'apiKey'      => 'YOUR_APP_KEY',
	'apiSecret'   => 'YOUR_APP_SECRET',
	'apiCallback' => 'YOUR_APP_CALLBACK'
));
```

`string` if you *only* want to access public data:

```
new Instagram('YOUR_APP_KEY');
```

`null` if you want to authenticate a user and access its data the config/instagram.php:

```
new Instagram();
```

Note that using the `null`, you must have your configurations setup in the config/instagram.php file

### Get login URL

[](#get-login-url)

`getLoginUrl()`

```
getLoginUrl(array(
	'basic',
	'likes'
));
```

**Optional scope parameters:**

  Scope Legend Methods   `basic` to use all user related methods \[default\] `getUser()`, `getUserFeed()`, `getUserFollower()` etc.   `relationships` to follow and unfollow users `modifyRelationship()`   `likes` to like and unlike items `getMediaLikes()`, `likeMedia()`, `deleteLikedMedia()`   `comments` to create or delete comments `getMediaComments()`, `addMediaComment()`, `deleteMediaComment()` ### Get OAuth token

[](#get-oauth-token)

`getOAuthToken($code, /)`

`true` : Returns only the OAuth token
`false` *\[default\]* : Returns OAuth token and profile data of the authenticated user

### Set / Get access token

[](#set--get-access-token)

- Set the access token, for further method calls: `setAccessToken($token)`
- Get the access token, if you want to store it for later usage: `getAccessToken()`

### User methods

[](#user-methods)

**Public methods**

- `getUser($id)`
- `searchUser($name, )`
- `getUserMedia($id, )`

**Authenticated methods**

- `getUser()`
- `getUserLikes()`
- `getUserFeed()`
- `getUserMedia(, )`
    - if an `$id` isn't defined or equals `'self'`, it returns the media of the logged in user

> [Sample responses of the User Endpoints.](http://instagram.com/developer/endpoints/users/)

### Relationship methods

[](#relationship-methods)

**Authenticated methods**

- `getUserFollows()`
- `getUserFollower()`
- `getUserRelationship($id)`
- `modifyRelationship($action, $user)`
    - `$action` : Action command (follow / unfollow / block / unblock / approve / deny)
    - `$user` : Target user id

```
// Follow the user with the ID 1574083
$instagram->modifyRelationship('follow', 1574083);
```

---

Please note that the `modifyRelationship()` method requires the `relationships` [scope](#get-login-url).

---

> [Sample responses of the Relationship Endpoints.](http://instagram.com/developer/endpoints/relationships/)

### Media methods

[](#media-methods)

**Public methods**

- `getMedia($id)`
    - authenticated users receive the info, whether the queried media is liked
- `getPopularMedia()`
- `searchMedia($lat, $lng, , , )`
    - `$lat` and `$lng` are coordinates and have to be floats like: `48.145441892290336`,`11.568603515625`
    - `$distance` : Radial distance in meter (default is 1km = 1000, max. is 5km = 5000)
    - `$minTimestamp` : All media returned will be taken *later* than this timestamp (default: 5 days ago)
    - `$maxTimestamp` : All media returned will be taken *earlier* than this timestamp (default: now)

> [Sample responses of the Media Endpoints.](http://instagram.com/developer/endpoints/media/)

### Comment methods

[](#comment-methods)

**Public methods**

- `getMediaComments($id)`

**Authenticated methods**

- `addMediaComment($id, $text)`
    - **restricted access:** please email `apidevelopers[at]instagram.com` for access
- `deleteMediaComment($id, $commentID)`
    - the comment must be authored by the authenticated user

---

Please note that the authenticated methods require the `comments` [scope](#get-login-url).

---

> [Sample responses of the Comment Endpoints.](http://instagram.com/developer/endpoints/comments/)

### Tag methods

[](#tag-methods)

**Public methods**

- `getTag($name)`
- `getTagMedia($name)`
- `searchTags($name)`

> [Sample responses of the Tag Endpoints.](http://instagram.com/developer/endpoints/tags/)

### Likes methods

[](#likes-methods)

**Authenticated methods**

- `getMediaLikes($id)`
- `likeMedia($id)`
- `deleteLikedMedia($id)`

> How to like a Media: [Example usage](https://gist.github.com/3287237)[Sample responses of the Likes Endpoints.](http://instagram.com/developer/endpoints/likes/)

All `` parameters are optional. If the limit is undefined, all available results will be returned.

Instagram videos
----------------

[](#instagram-videos)

Instagram entries are marked with a `type` attribute (`image` or `video`), that allows you to identify videos.

An example of how to embed Instagram videos by using [Video.js](http://www.videojs.com), can be found in the `/example` folder.

---

**Please note:** Instagram currently doesn't allow to filter videos.

---

Signed Header
-------------

[](#signed-header)

In order to prevent that your access tokens gets stolen, Instagram recommends to sign your requests with a hash of your API secret, the called endpoint and parameters.

1. Activate ["Enforce Signed Header"](http://instagram.com/developer/clients/manage/) in your Instagram client settings.
2. Enable the signed-header in your Instagram class:

```
$instagram->setSignedHeader(true);
```

3. You are good to go! Now, all your requests will be secured with a signed header.

Go into more detail about how it works in the [Instagram API Docs](http://instagram.com/developer/restrict-api-requests/#enforce-signed-header).

Pagination
----------

[](#pagination)

Each endpoint has a maximum range of results, so increasing the `limit` parameter above the limit won't help (e.g. `getUserMedia()` has a limit of 90).

That's the point where the "pagination" feature comes into play. Simply pass an object into the `pagination()` method and receive your next dataset:

```
$photos = $instagram->getTagMedia('kitten');

$result = $instagram->pagination($photos);
```

Iteration with `do-while` loop.

Samples for redirect URLs
-------------------------

[](#samples-for-redirect-urls)

> Check the instagram docs for samples of redirect uri [Instagram API docs](http://instagram.com/developer/authentication/).

Example App
-----------

[](#example-app)

[![Image](https://camo.githubusercontent.com/08b9e98726e531de07647c9e4059d2ab45c0bf88155417624cb4ff137b7ba1cf/687474703a2f2f636c2e6c792f696d6167652f32323154316733773375324a2f707265766965772e706e67)](https://camo.githubusercontent.com/08b9e98726e531de07647c9e4059d2ab45c0bf88155417624cb4ff137b7ba1cf/687474703a2f2f636c2e6c792f696d6167652f32323154316733773375324a2f707265766965772e706e67)

This example project, located in the `tests/example/` folder, helps you to get started. The code is well documented and takes you through all required steps of the OAuth2 process. Credit for the awesome Instagram icons goes to [Ricardo de Zoete Pro](http://dribbble.com/RZDESIGN).

#### More examples and tutorials:

[](#more-examples-and-tutorials)

- [Laravel Wrapper](https://github.com/vinkla/instagram)

> Let me know if you have to share a code example, too.

Credits
-------

[](#credits)

> Copyright (c) 2016 - Emmanuel Ikechukwu N.

> Credits to Christian Metz (Initial author) -

Released under the [GNU License](LICENSE).

###  Health Score

21

—

LowBetter than 18% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/571f790334fcfd82a08ed9d18b2effd2cd6dfe19dccd0a0e86dc7634d9e44f40?d=identicon)[emmanueln\_nike](/maintainers/emmanueln_nike)

---

Top Contributors

[![emmanuel-nike](https://avatars.githubusercontent.com/u/21238763?v=4)](https://github.com/emmanuel-nike "emmanuel-nike (1 commits)")

### Embed Badge

![Health badge](/badges/emmanueln-nike-instagram/health.svg)

```
[![Health](https://phpackages.com/badges/emmanueln-nike-instagram/health.svg)](https://phpackages.com/packages/emmanueln-nike-instagram)
```

###  Alternatives

[exsyst/swagger

A php library to manipulate Swagger specifications

35816.3M7](/packages/exsyst-swagger)[hubspot/api-client

Hubspot API client

24015.5M18](/packages/hubspot-api-client)[pocketmine/bedrock-protocol

An implementation of the Minecraft: Bedrock Edition protocol in PHP

172437.8k11](/packages/pocketmine-bedrock-protocol)[botman/driver-telegram

Telegram driver for BotMan

94452.6k6](/packages/botman-driver-telegram)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
