# Wallapop Auto Price Adjuster
Automate price adjustment of your Wallapop sales listings with a safe interactive flow.




[](https://github.com/Alexander-Serov/wallapop-auto-adjust/issues)
[](https://github.com/psf/black)
Quick links: [Why](#why-this-project-exists) • [Quick Start](#quick-start-guide) • [Use](#using-the-tool-after-the-first-start) • [Config](#configuration-details) • [Safety](#safety-features) • [Troubleshoot](#troubleshooting) • [Privacy](#privacy--disclaimer) • [Developers](#for-developers) • [License](#license)
## Why this project exists
Wallapop is a platform that allows us to give a second life to our items.
This is a laudable objective, but it would also be great to sell your items for the right (market) price.
Not too low, so that you lose on the sale, and not too high, so that your listings stay on Wallapop indefinitely.
The right price.
Finding this price, however, is difficult without access to statistics only Wallapop itself has.
In the absence of the statistics, a reasonable approach can be an iterative price adjustment, similar to what Amazon uses to sell its products: you start with a high price and keep lowering it regularly until the buyer grabs your article.
Doing this by hand is feasible for a couple of articles, but can be tedious if you are selling a dozen articles.
This project is aimed at automating it to a significant extent.
A positive byproduct is an extra service to society: more buyers find their products faster, the price is right for both parties, and the market gets more fluid.
Here is what the Tool can do for you:
- Automatically detect your selling portfolio after login
- Let you decide on the price strategy to use for each product (rate of price adjustment)
- Automatically apply consistent adjustments (e.g., “-10%” or keep price) on user confirmation
- Automatically respect a delay between updates (e.g., only update once every 7 days)
- Keeps a minimum price of €1 to keep articles eligible for shipment
- Maintains a local configuration between runs
Here is what the Tool cannot (yet) do:
- Run automatically at regular intervals
- Run fully automatically without user confirmation
The user is required to run it and confirm all price changes.
## Quick Start Guide
In your Python environment, run:
```bash
pip install wallapop-auto-adjust
wallapop-auto-adjust
```
What happens on first run:
- You’ll be prompted to log into Wallapop in your browser (captcha/SMS supported)
- The session is saved locally and reused for ~24 hours
- Your products are discovered and a `products_config.json` file is created/updated for you locally
- You can modify it locally if you wish
- Alternatively, you’ll be asked interactively, product by product, which price change (in percent) to apply to each of the products.
### What it will look like
```text
$ wallapop-auto-adjust
✔ Using saved session (valid)
Found 12 products. delay_days = 7
1) Bicycle — current: €120.00 → new: €108.00 (-10%)
Apply? [y]es / [k]eep / [s]kip: y
✓ Updated to €108.00
2) Helmet — current: €15.00 → new: keep
Apply? [y]es / [k]eep / [s]kip: k
↷ Keeping current price
...
Done. Updated: 5, Kept: 6, Skipped: 1
```
## Using the tool (after the first start)
Run the CLI any time:
```bash
wallapop-auto-adjust
```
- Uses the saved session if still valid (no login needed)
- Shows current vs new price and asks for confirmation
- Respects your configured delay in days before revisiting a product
## Configuration Details
The tool creates and manages a local `products_config.json` in the project folder. It contains:
- products: a map of product IDs to settings
- name: for your reference
- adjustment: a numeric multiplier like 0.9, 1.1, such that the new price is `old_price * multiplier`. For example, to decrease the price by 15% on each run, set it to 0.85. You can also set it to "keep" (default) to maintain the current price.
- last_modified: last time a price change was applied (ISO datetime)
- settings:
- delay_days: minimum days between updates (set 0 to always prompt). Applies to all articles.
Example snippet:
```json
{
"products": {
"12345": { "name": "Bicycle", "adjustment": 0.9, "last_modified": "2025-08-15T10:30:00+02:00" },
"67890": { "name": "Helmet", "adjustment": "keep", "last_modified": null }
},
"settings": { "delay_days": 1 }
}
```
## Safety features
- Minimum price protection: never goes below €1; if a multiplier would drop below €1, the strategy automatically switches to "keep" after applying the €1 update
- Delay between updates: configurable via `delay_days` (0 = always ask)
- Interactive confirmations: you always see current vs new price before applying
- Rounding: prices rounded to 2 decimals
## Troubleshooting
- “No products found”
- Your session may be expired. Re-run and log in again when prompted.
- Check that your Wallapop account has active listings.
- “401/unauthorized” or keeps asking to log in
- Delete the local session file `wallapop_session.json` and re-run.
- “Where are files stored?”
- `products_config.json` and `wallapop_session.json` are stored locally in the project folder.
## Privacy & disclaimer
- The authors are not affiliated with Wallapop and provide the tool free of charge for your convenience. Use responsibly and respect Wallapop’s Terms of Service.
- Tokens and config live only on your machine; no data is ever collected.
- Although we try hard to squash, bugs may still creep through. Remember the responsibility to check all the prices the tool suggests you lies exclusively with you.
## For developers
**All contributions welcome! All PRs will be reviewed!**
In short, make it your project.
If you miss a feature or find a bug, feel free to create an issue in the [issue tracker](https://github.com/Alexander-Serov/wallapop-auto-adjust/issues).
If you feel like tackling any existing issue, feel free to do it. Even if we don't set it as the default behavior, the extra feature you add can be made available through an option in the config.
If you know how, try adding tests for the new functionality within the existing test structure.
See also: [CONTRIBUTING](CONTRIBUTING.md)
Requirements: Python 3.10+ and Poetry
1) Install Poetry and dependencies
```bash
poetry install
```
2) Run tests
```bash
poetry run pytest -q
```
3) Run the CLI during development
```bash
poetry run wallapop-auto-adjust
```
## License
MIT — see `LICENSE`.
Raw data
{
"_id": null,
"home_page": "https://github.com/Alexander-Serov/wallapop-auto-adjust",
"name": "wallapop-auto-adjust",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.10",
"maintainer_email": null,
"keywords": "wallapop, automation, pricing, cli, marketplace",
"author": "Alexander Serov",
"author_email": "asserov@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/ea/aa/ae7ea3039dc94a824beb8c95a129f287ff129d2e1aae7fe79c61c6ac5390/wallapop_auto_adjust-1.0.0.tar.gz",
"platform": null,
"description": "# Wallapop Auto Price Adjuster\n\nAutomate price adjustment of your Wallapop sales listings with a safe interactive flow.\n\n\n\n\n\n[](https://github.com/Alexander-Serov/wallapop-auto-adjust/issues)\n[](https://github.com/psf/black)\n\nQuick links: [Why](#why-this-project-exists) \u2022 [Quick Start](#quick-start-guide) \u2022 [Use](#using-the-tool-after-the-first-start) \u2022 [Config](#configuration-details) \u2022 [Safety](#safety-features) \u2022 [Troubleshoot](#troubleshooting) \u2022 [Privacy](#privacy--disclaimer) \u2022 [Developers](#for-developers) \u2022 [License](#license)\n\n## Why this project exists\n\nWallapop is a platform that allows us to give a second life to our items.\nThis is a laudable objective, but it would also be great to sell your items for the right (market) price.\nNot too low, so that you lose on the sale, and not too high, so that your listings stay on Wallapop indefinitely.\nThe right price.\n\nFinding this price, however, is difficult without access to statistics only Wallapop itself has.\nIn the absence of the statistics, a reasonable approach can be an iterative price adjustment, similar to what Amazon uses to sell its products: you start with a high price and keep lowering it regularly until the buyer grabs your article.\nDoing this by hand is feasible for a couple of articles, but can be tedious if you are selling a dozen articles.\nThis project is aimed at automating it to a significant extent.\nA positive byproduct is an extra service to society: more buyers find their products faster, the price is right for both parties, and the market gets more fluid.\n\nHere is what the Tool can do for you:\n- Automatically detect your selling portfolio after login\n- Let you decide on the price strategy to use for each product (rate of price adjustment)\n- Automatically apply consistent adjustments (e.g., \u201c-10%\u201d or keep price) on user confirmation\n- Automatically respect a delay between updates (e.g., only update once every 7 days)\n- Keeps a minimum price of \u20ac1 to keep articles eligible for shipment\n- Maintains a local configuration between runs\n\nHere is what the Tool cannot (yet) do:\n- Run automatically at regular intervals \n- Run fully automatically without user confirmation\n\nThe user is required to run it and confirm all price changes.\n\n## Quick Start Guide\n\nIn your Python environment, run:\n```bash\npip install wallapop-auto-adjust\nwallapop-auto-adjust\n```\n\nWhat happens on first run:\n- You\u2019ll be prompted to log into Wallapop in your browser (captcha/SMS supported)\n- The session is saved locally and reused for ~24 hours\n- Your products are discovered and a `products_config.json` file is created/updated for you locally\n- You can modify it locally if you wish\n- Alternatively, you\u2019ll be asked interactively, product by product, which price change (in percent) to apply to each of the products.\n\n### What it will look like\n\n```text\n$ wallapop-auto-adjust\n\u2714 Using saved session (valid)\nFound 12 products. delay_days = 7\n\n1) Bicycle \u2014 current: \u20ac120.00 \u2192 new: \u20ac108.00 (-10%)\n Apply? [y]es / [k]eep / [s]kip: y\n \u2713 Updated to \u20ac108.00\n\n2) Helmet \u2014 current: \u20ac15.00 \u2192 new: keep\n Apply? [y]es / [k]eep / [s]kip: k\n \u21b7 Keeping current price\n\n...\nDone. Updated: 5, Kept: 6, Skipped: 1\n```\n\n## Using the tool (after the first start)\n\nRun the CLI any time:\n```bash\nwallapop-auto-adjust\n```\n- Uses the saved session if still valid (no login needed)\n- Shows current vs new price and asks for confirmation\n- Respects your configured delay in days before revisiting a product\n\n## Configuration Details\n\nThe tool creates and manages a local `products_config.json` in the project folder. It contains:\n- products: a map of product IDs to settings\n - name: for your reference\n - adjustment: a numeric multiplier like 0.9, 1.1, such that the new price is `old_price * multiplier`. For example, to decrease the price by 15% on each run, set it to 0.85. You can also set it to \"keep\" (default) to maintain the current price.\n - last_modified: last time a price change was applied (ISO datetime)\n- settings:\n - delay_days: minimum days between updates (set 0 to always prompt). Applies to all articles.\n\nExample snippet:\n```json\n{\n \"products\": {\n \"12345\": { \"name\": \"Bicycle\", \"adjustment\": 0.9, \"last_modified\": \"2025-08-15T10:30:00+02:00\" },\n \"67890\": { \"name\": \"Helmet\", \"adjustment\": \"keep\", \"last_modified\": null }\n },\n \"settings\": { \"delay_days\": 1 }\n}\n```\n\n## Safety features\n- Minimum price protection: never goes below \u20ac1; if a multiplier would drop below \u20ac1, the strategy automatically switches to \"keep\" after applying the \u20ac1 update\n- Delay between updates: configurable via `delay_days` (0 = always ask)\n- Interactive confirmations: you always see current vs new price before applying\n- Rounding: prices rounded to 2 decimals\n\n## Troubleshooting\n- \u201cNo products found\u201d\n - Your session may be expired. Re-run and log in again when prompted.\n - Check that your Wallapop account has active listings.\n- \u201c401/unauthorized\u201d or keeps asking to log in\n - Delete the local session file `wallapop_session.json` and re-run.\n- \u201cWhere are files stored?\u201d\n - `products_config.json` and `wallapop_session.json` are stored locally in the project folder.\n\n## Privacy & disclaimer\n- The authors are not affiliated with Wallapop and provide the tool free of charge for your convenience. Use responsibly and respect Wallapop\u2019s Terms of Service.\n- Tokens and config live only on your machine; no data is ever collected.\n- Although we try hard to squash, bugs may still creep through. Remember the responsibility to check all the prices the tool suggests you lies exclusively with you.\n\n## For developers\n\n**All contributions welcome! All PRs will be reviewed!**\nIn short, make it your project.\nIf you miss a feature or find a bug, feel free to create an issue in the [issue tracker](https://github.com/Alexander-Serov/wallapop-auto-adjust/issues).\nIf you feel like tackling any existing issue, feel free to do it. Even if we don't set it as the default behavior, the extra feature you add can be made available through an option in the config.\nIf you know how, try adding tests for the new functionality within the existing test structure.\n\nSee also: [CONTRIBUTING](CONTRIBUTING.md)\n\nRequirements: Python 3.10+ and Poetry\n\n1) Install Poetry and dependencies\n```bash\npoetry install\n```\n2) Run tests\n```bash\npoetry run pytest -q\n```\n3) Run the CLI during development\n```bash\npoetry run wallapop-auto-adjust\n```\n\n## License\n\nMIT \u2014 see `LICENSE`.",
"bugtrack_url": null,
"license": "MIT",
"summary": "Automatic price adjustment tool for Wallapop sales",
"version": "1.0.0",
"project_urls": {
"Homepage": "https://github.com/Alexander-Serov/wallapop-auto-adjust",
"Issues": "https://github.com/Alexander-Serov/wallapop-auto-adjust/issues",
"Repository": "https://github.com/Alexander-Serov/wallapop-auto-adjust"
},
"split_keywords": [
"wallapop",
" automation",
" pricing",
" cli",
" marketplace"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "25afd8c0d3faf0c8a11c5d363dbd56acb2db2446269f33813b129792ea5fd1b2",
"md5": "d2c0a7123b5d777b6fa793e7aaa9bdc2",
"sha256": "d2a8e8d1f2a14e0092bc9c31390c412f75a0d2e83ef3ef14152707c76867a16e"
},
"downloads": -1,
"filename": "wallapop_auto_adjust-1.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d2c0a7123b5d777b6fa793e7aaa9bdc2",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.10",
"size": 14522,
"upload_time": "2025-08-18T22:28:06",
"upload_time_iso_8601": "2025-08-18T22:28:06.114864Z",
"url": "https://files.pythonhosted.org/packages/25/af/d8c0d3faf0c8a11c5d363dbd56acb2db2446269f33813b129792ea5fd1b2/wallapop_auto_adjust-1.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "eaaaae7ea3039dc94a824beb8c95a129f287ff129d2e1aae7fe79c61c6ac5390",
"md5": "6e394863d8619262b93cdc312ae9976b",
"sha256": "939e20c0d454c60c5f4217a9871d4e20591a0d555c1d6419cacee18e3ec4891e"
},
"downloads": -1,
"filename": "wallapop_auto_adjust-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "6e394863d8619262b93cdc312ae9976b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.10",
"size": 14521,
"upload_time": "2025-08-18T22:28:08",
"upload_time_iso_8601": "2025-08-18T22:28:08.081529Z",
"url": "https://files.pythonhosted.org/packages/ea/aa/ae7ea3039dc94a824beb8c95a129f287ff129d2e1aae7fe79c61c6ac5390/wallapop_auto_adjust-1.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-18 22:28:08",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Alexander-Serov",
"github_project": "wallapop-auto-adjust",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "wallapop-auto-adjust"
}