# PyMagento
[](https://pypi.org/project/pymagento/) [](https://pypi.org/project/pymagento/)
**PyMagento** is a Python client for the Magento 2 API. Its goal is to provide an easy-to-use Pythonic interface
to the Magento 2 API, while being lightweight and extendable.
* [Read the docs](https://pymagento2.readthedocs.io/)
Features:
* Lightweight: entities are returned as plain dictionaries; there is no custom `Order` or `Product` class
* Easy to extend: subclass `magento.Magento` and add your own methods
* Transparent pagination: functions that make paginated queries return lazy iterables (generators)
* Fully typed: all functions have type hints
* Production-ready: at Bixoto, we use PyMagento in production since 2020
* Python 3.8+ support
* MIT license
Note: PyMagento is not affiliated to nor endorsed by Adobe or the Magento team.
## Install
### Pip
python -m pip install pymagento
### Poetry
poetry add pymagento
## Usage
```python
import magento
client = magento.Magento(base_url="...", token="...", scope="all")
product = client.get_product("SKU123")
print(magento.get_custom_attribute(product, "description"))
# Get orders by status
for order in client.get_orders(status="processing"):
print(order["increment_id"], order["grand_total"])
# Make more complex queries
query = magento.make_search_query([
[("customer_email", "billgates@example.com", "eq")],
[("status", "complete", "eq")],
])
for order in client.get_orders(query=query, limit=10):
print(order["increment_id"], len(order["items"]))
```
For more information, [read the docs](https://pymagento2.readthedocs.io/).
Note: not all endpoints are implemented with dedicated methods. You can call them with
`client.get_json_api("/V1/...")` for `GET` endpoints and `client.post_json_api("/V1/...", json=...)`.
## License
Copyright 2020-2025 [Bixoto](https://bixoto.com/). See the [`LICENSE`](./LICENSE).
## Other projects
* [MyMagento](https://github.com/TDKorn/my-magento): new project started in 2022 but [not actively maintained](https://github.com/TDKorn/my-magento/issues/12#issuecomment-2121701930) as of May 2024.
MyMagento didn’t exist when we started PyMagento. This is a more high-level API that can be a good fit if you’re not familiar with Magento’s API.
See also [OneSila’s fork](https://github.com/OneSila/OneSilaMagento2Api).
* [PyMagento-REST](https://pypi.org/project/PyMagento-REST/) (abandoned)
* [bialecki/pymagento](https://github.com/bialecki/pymagento): Magento 1.x only (abandoned)
* [python-magento](https://github.com/bernieke/python-magento): Magento 1.x only (abandoned)
Raw data
{
"_id": null,
"home_page": "https://github.com/Bixoto/PyMagento",
"name": "pymagento",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.8",
"maintainer_email": null,
"keywords": "magento, magento-api, python-magento, magento-python, pymagento, py-magento, magento-rest-api, magento2, magento-2, magento2-api, magento2-rest-api",
"author": "Bixoto",
"author_email": "tech@bixoto.com",
"download_url": "https://files.pythonhosted.org/packages/4f/ba/a813ad5cbacfefc6aa825325efc305530611d365f24c1273833e6d75071c/pymagento-2.4.1.tar.gz",
"platform": null,
"description": "# PyMagento\n\n[](https://pypi.org/project/pymagento/) [](https://pypi.org/project/pymagento/)\n\n**PyMagento** is a Python client for the Magento 2 API. Its goal is to provide an easy-to-use Pythonic interface\nto the Magento 2 API, while being lightweight and extendable.\n\n* [Read the docs](https://pymagento2.readthedocs.io/)\n\nFeatures:\n* Lightweight: entities are returned as plain dictionaries; there is no custom `Order` or `Product` class\n* Easy to extend: subclass `magento.Magento` and add your own methods\n* Transparent pagination: functions that make paginated queries return lazy iterables (generators)\n* Fully typed: all functions have type hints\n* Production-ready: at Bixoto, we use PyMagento in production since 2020\n* Python 3.8+ support\n* MIT license\n\nNote: PyMagento is not affiliated to nor endorsed by Adobe or the Magento team.\n\n## Install\n\n### Pip\n\n python -m pip install pymagento\n\n### Poetry\n\n poetry add pymagento\n\n## Usage\n\n```python\nimport magento\n\nclient = magento.Magento(base_url=\"...\", token=\"...\", scope=\"all\")\n\nproduct = client.get_product(\"SKU123\")\nprint(magento.get_custom_attribute(product, \"description\"))\n\n# Get orders by status\nfor order in client.get_orders(status=\"processing\"):\n print(order[\"increment_id\"], order[\"grand_total\"])\n\n# Make more complex queries\nquery = magento.make_search_query([\n [(\"customer_email\", \"billgates@example.com\", \"eq\")],\n [(\"status\", \"complete\", \"eq\")],\n])\n\nfor order in client.get_orders(query=query, limit=10):\n print(order[\"increment_id\"], len(order[\"items\"]))\n```\n\nFor more information, [read the docs](https://pymagento2.readthedocs.io/).\n\nNote: not all endpoints are implemented with dedicated methods. You can call them with\n`client.get_json_api(\"/V1/...\")` for `GET` endpoints and `client.post_json_api(\"/V1/...\", json=...)`.\n\n## License\n\nCopyright 2020-2025 [Bixoto](https://bixoto.com/). See the [`LICENSE`](./LICENSE).\n\n## Other projects\n\n* [MyMagento](https://github.com/TDKorn/my-magento): new project started in 2022 but [not actively maintained](https://github.com/TDKorn/my-magento/issues/12#issuecomment-2121701930) as of May 2024.\n MyMagento didn\u2019t exist when we started PyMagento. This is a more high-level API that can be a good fit if you\u2019re not familiar with Magento\u2019s API.\n See also [OneSila\u2019s fork](https://github.com/OneSila/OneSilaMagento2Api).\n* [PyMagento-REST](https://pypi.org/project/PyMagento-REST/) (abandoned)\n* [bialecki/pymagento](https://github.com/bialecki/pymagento): Magento 1.x only (abandoned)\n* [python-magento](https://github.com/bernieke/python-magento): Magento 1.x only (abandoned)\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Python client for the Magento 2 API",
"version": "2.4.1",
"project_urls": {
"Homepage": "https://github.com/Bixoto/PyMagento"
},
"split_keywords": [
"magento",
" magento-api",
" python-magento",
" magento-python",
" pymagento",
" py-magento",
" magento-rest-api",
" magento2",
" magento-2",
" magento2-api",
" magento2-rest-api"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "f17389328d9984df49d9a85a6d55f47949e65138f60cde2c691b031cb01e04e9",
"md5": "b8049ecab21746c0e9001dbd20b5dc8b",
"sha256": "cfc0123942f7fd95d5135f88c544f30325bf27cb839ac5c624a77829fc8536a2"
},
"downloads": -1,
"filename": "pymagento-2.4.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b8049ecab21746c0e9001dbd20b5dc8b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8",
"size": 24525,
"upload_time": "2025-04-09T14:39:49",
"upload_time_iso_8601": "2025-04-09T14:39:49.712740Z",
"url": "https://files.pythonhosted.org/packages/f1/73/89328d9984df49d9a85a6d55f47949e65138f60cde2c691b031cb01e04e9/pymagento-2.4.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4fbaa813ad5cbacfefc6aa825325efc305530611d365f24c1273833e6d75071c",
"md5": "a0b2461ec81acfef85734f00ea62f0f8",
"sha256": "60438b1b38e0589296370fca90af2d138c00d303c3cfa65be59dac6a893d50a2"
},
"downloads": -1,
"filename": "pymagento-2.4.1.tar.gz",
"has_sig": false,
"md5_digest": "a0b2461ec81acfef85734f00ea62f0f8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8",
"size": 22747,
"upload_time": "2025-04-09T14:39:50",
"upload_time_iso_8601": "2025-04-09T14:39:50.676379Z",
"url": "https://files.pythonhosted.org/packages/4f/ba/a813ad5cbacfefc6aa825325efc305530611d365f24c1273833e6d75071c/pymagento-2.4.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-04-09 14:39:50",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Bixoto",
"github_project": "PyMagento",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "pymagento"
}