# 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/3f/92/80112e4cff33f90ff3dc7536ea655f2b8d2cc76a47b113bd7f5eba7c667d/pymagento-2.8.0.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.8.0",
"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": "faa93401a42265d662cb956d210030822734d8296498975d44749a3d96fc1539",
"md5": "860390dbd7f4473b06a98832777e16fe",
"sha256": "aae47ec640474f505d6c75f531cf1121a053b28a057e01ff53c437318259fd1f"
},
"downloads": -1,
"filename": "pymagento-2.8.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "860390dbd7f4473b06a98832777e16fe",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8",
"size": 26707,
"upload_time": "2025-10-21T08:47:49",
"upload_time_iso_8601": "2025-10-21T08:47:49.897968Z",
"url": "https://files.pythonhosted.org/packages/fa/a9/3401a42265d662cb956d210030822734d8296498975d44749a3d96fc1539/pymagento-2.8.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3f9280112e4cff33f90ff3dc7536ea655f2b8d2cc76a47b113bd7f5eba7c667d",
"md5": "aa92b951c7c8cdb53b574c1d980ced5f",
"sha256": "040f278f76d859bd5f0bb0a56072a0b72cf22da94e726bcded1f538b191f0e20"
},
"downloads": -1,
"filename": "pymagento-2.8.0.tar.gz",
"has_sig": false,
"md5_digest": "aa92b951c7c8cdb53b574c1d980ced5f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8",
"size": 24782,
"upload_time": "2025-10-21T08:47:50",
"upload_time_iso_8601": "2025-10-21T08:47:50.861054Z",
"url": "https://files.pythonhosted.org/packages/3f/92/80112e4cff33f90ff3dc7536ea655f2b8d2cc76a47b113bd7f5eba7c667d/pymagento-2.8.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-21 08:47: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"
}