The ShopifyAPI library allows Python developers to programmatically access the admin section of stores.
The API is accessed using pyactiveresource in order to provide an interface similar to the ruby Shopify API gem. The data itself is sent as XML over HTTP to communicate with Shopify, which provides a web service that follows the REST principles as much as possible.
All API usage happens through Shopify applications, created by either shop owners for their own shops, or by Shopify Partners for use by other shop owners:
- Shop owners can create applications for themselves through their own admin (under the Apps > Manage Apps).
- Shopify Partners create applications through their admin: http://app.shopify.com/services/partners
For more information and detailed documentation about the API visit http://api.shopify.com
To easily install or upgrade to the latest release, use pip
pip install --upgrade ShopifyAPI
easy_install -U ShopifyAPI
ShopifyAPI uses pyactiveresource to communicate with the REST web service. pyactiveresource has to be configured with a fully authorized URL of a particular store first. To obtain that URL you can follow these steps:
First create a new application in either the partners admin or your store admin and write down your
You will need to supply two parameters to the Session class before you instantiate it:
For application to access a shop via the API, they first need a "access token" specific to the shop, which is obtained from Shopify after the owner has granted the application access to the shop. This can be done by redirecting the shop owner to a permission URL, obtained as follows:
shop_url = "yourshopname.myshopify.com" scope = ["write_products", "read_orders"] permission_url = shopify.Session.create_permission_url(shop_url, scope)
Note: Legacy Auth is assumed if the scope parameter is omitted or None
After visiting this URL, the shop redirects the owner to a custom URL of your application where a
codeparam gets sent to along with other parameters to ensure it was sent by Shopify. The following code will validate that the request came from Shopify, then obtain the permanent access token (with an HTTP request when using OAuth2) which can be used to make API requests for this shop.
session = shopify.Session(shop_url, params)
Activate the session to use the access token for following API requests for the shop it was authorized for.
Start making authorized API requests for that shop. Data is returned as ActiveResource instances:
# Get a list of products products = shopify.Product.find() # Get a specific product product = shopify.Product.find(632910) # Create a new product new_product = shopify.Product() new_product.title = "Burton Custom Freestlye 151" new_product.product_type = "Snowboard" new_product.vendor = "Burton" new_product.save() # Update a product product.handle = "burton-snowboard" product.save()
Follow steps 1-4 from the "Getting Started" section to obtain a session, then save the session's token along with the shop_url.
shop_url = session.url saved_token = session.token
Create and activate a new session using the saved shop_url and token.
session = shopify.Session(shop_url) session.token = saved_token shopify.ShopifyResource.activate_session(session)
This package also includes the
shopify_api.py script to make it easy to
open up an interactive console to use the API with a shop.
Go to https://yourshopname.myshopify.com/admin/api to generate a private application and obtain your API key and password to use with your shop.
shopify_api.pyscript to save the credentials for the shop to quickly login. The script uses PyYAML to save and load connection configurations in the same format as the ruby shopify_api.
shopify_api.py add yourshopname
Follow the prompts for the shop domain, API key and password.
Start the console for the connection.
Enter the following for the full list of the commands.
Using Development Version
bin/shopify_api.py script when running from the source tree.
It will add the lib directory to start of sys.path, so the installed
version won't be used.
The development version can be built using
python setup.py sdist
then the package can be installed using pip
pip install --upgrade dist/ShopifyAPI-*.tar.gz
easy_install -U dist/ShopifyAPI-*.tar.gz
Currently there is no support for:
- python 3
- asynchronous requests
- persistent connections
- json format for API requests
Questions or Problems?
- http://api.shopify.com <= Read the tech docs!
- http://wiki.shopify.com/Developer_Home <= Read the wiki!
- http://stackoverflow.com/questions/tagged/shopify <= Ask questions on Stack Overflow!
Copyright (c) 2012 "Shopify inc.". See LICENSE for details.