PHPackages                             luketowers/php-shopify-api - 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. luketowers/php-shopify-api

ActiveLibrary[API Development](/categories/api)

luketowers/php-shopify-api
==========================

PHP wrapper for Shopify API

v1.1.0(1y ago)3410.1k9MITPHPPHP &gt;=7.0

Since May 17Pushed 1y ago6 watchersCompare

[ Source](https://github.com/LukeTowers/php-shopify-api)[ Packagist](https://packagist.org/packages/luketowers/php-shopify-api)[ Docs](https://github.com/luketowers/php-shopify-api)[ RSS](/packages/luketowers-php-shopify-api/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (2)Dependencies (1)Versions (3)Used By (0)

About
=====

[](#about)

A simple PHP wrapper around the [Shopify API](https://help.shopify.com/api/getting-started).

Installation
------------

[](#installation)

Install via [Composer](https://getcomposer.org/) by running `composer require luketowers/php-shopify-api` in your project directory.

Usage
-----

[](#usage)

In order to use this wrapper library you will need to provide credentials to access Shopify's API.

You will either need an access token for the shop you are trying to access (if using a [public application](https://help.shopify.com/api/getting-started/authentication#public-applications)) or an API Key and Secret for a [private application](https://help.shopify.com/api/getting-started/authentication#private-applications).

Examples
--------

[](#examples)

#### Make an API call

[](#make-an-api-call)

```
use LukeTowers\ShopifyPHP\Shopify;

// Initialize the client
$api = new Shopify('exampleshop.myshopify.com', 'mysupersecrettoken');

// Get all products
$result = $api->call('GET', 'admin/products.json');

// Get the products with ids of '632910392' and '921728736' with only the 'id', 'images', and 'title' fields
$result = $api->call('GET', 'admin/products.json', [
    'ids' => '632910392,921728736',
    'fields' => 'id,images,title',
]);

// Create a new "Burton Custom Freestyle 151" product
$result = $api->call('POST', 'admin/products.json', [
    'product' => [
        "title"        => "Burton Custom Freestyle 151",
        "body_html"    => "Good snowboard!",
        "vendor"       => "Burton",
        "product_type" => "Snowboard",
        "tags"         => 'Barnes & Noble, John's Fav, "Big Air"',
    ],
]);
```

#### Use Private Application API Credentials to authenticate API requests

[](#use-private-application-api-credentials-to-authenticate-api-requests)

```
use LukeTowers\ShopifyPHP\Shopify;

$api = new Shopify($data['shop'], [
    'api_key' => '...',
    'secret'  => '...',
]);
```

#### Use an access token to authenticate API requests

[](#use-an-access-token-to-authenticate-api-requests)

```
use LukeTowers\ShopifyPHP\Shopify;

$storedToken = ''; // Retrieve the stored token for the shop in question
$api = new Shopify('exampleshop.myshopify.com', $storedToken);
```

#### Request an access\_token for a shop

[](#request-an-access_token-for-a-shop)

```
use LukeTowers\ShopifyPHP\Shopify;

function make_authorization_attempt($shop, $scopes)
{
    $api = new Shopify($shop, [
        'api_key' => '...',
        'secret'  => '...',
    ]);

    $nonce = bin2hex(random_bytes(10));

    // Store a record of the shop attempting to authenticate and the nonce provided
    $storedAttempts = file_get_contents('authattempts.json');
    $storedAttempts = $storedAttempts ? json_decode($storedAttempts) : [];
    $storedAttempts[] = ['shop' => $shop, 'nonce' => $nonce, 'scopes' => $scopes];
    file_put_contents('authattempts.json', json_encode($storedAttempts));

    return $api->getAuthorizeUrl($scopes, 'https://example.com/handle/shopify/callback', $nonce);
}

header('Location: ' . make_authorization_attempt('exampleshop.myshopify.com', ['read_product']));
die();
```

#### Handle Shopify's response to the authorization request

[](#handle-shopifys-response-to-the-authorization-request)

```
use LukeTowers\ShopifyPHP\Shopify;

function check_authorization_attempt()
{
    $data = $_GET;

    $api = new Shopify($data['shop'], [
        'api_key' => '...',
        'secret'  => '...',
    ]);

    $storedAttempt = null;
    $attempts = json_decode(file_get_contents('authattempts.json'));
    foreach ($attempts as $attempt) {
        if ($attempt->shop === $data['shop']) {
            $storedAttempt = $attempt;
            break;
        }
    }

    return $api->authorizeApplication($storedAttempt->nonce, $data);
}

$response = check_authorization_attempt();
if ($response) {
    // Store the access token for later use
    $response->access_token;
}
```

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance31

Infrequent updates — may be unmaintained

Popularity36

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 80% 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.

###  Release Activity

Cadence

Every ~1841 days

Total

2

Last Release

716d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/7253840?v=4)[Luke Towers](/maintainers/LukeTowers)[@LukeTowers](https://github.com/LukeTowers)

---

Top Contributors

[![LukeTowers](https://avatars.githubusercontent.com/u/7253840?v=4)](https://github.com/LukeTowers "LukeTowers (4 commits)")[![tpenaranda](https://avatars.githubusercontent.com/u/12966330?v=4)](https://github.com/tpenaranda "tpenaranda (1 commits)")

---

Tags

phpapishopify

### Embed Badge

![Health badge](/badges/luketowers-php-shopify-api/health.svg)

```
[![Health](https://phpackages.com/badges/luketowers-php-shopify-api/health.svg)](https://phpackages.com/packages/luketowers-php-shopify-api)
```

###  Alternatives

[openai-php/laravel

OpenAI PHP for Laravel is a supercharged PHP API client that allows you to interact with the Open AI API

3.7k7.6M74](/packages/openai-php-laravel)[hubspot/api-client

Hubspot API client

23914.2M16](/packages/hubspot-api-client)[theodo-group/llphant

LLPhant is a library to help you build Generative AI applications.

1.5k311.5k5](/packages/theodo-group-llphant)[resend/resend-php

Resend PHP library.

574.7M21](/packages/resend-resend-php)[checkout/checkout-sdk-php

Checkout.com SDK for PHP

553.3M7](/packages/checkout-checkout-sdk-php)[robwittman/shopify-php-sdk

PHP SDK for Shopify API

7098.9k1](/packages/robwittman-shopify-php-sdk)

PHPackages © 2026

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