Advanced recipes
These workflows combine commands and filters for broader searches, repeatable preferences, and external automation.
Scan subcategories
Broad categories can hide books beyond the catalog page horizon. Scan every resolved subcategory separately to improve coverage:
Combine this with --deep for maximum coverage at the cost of more API calls:
Preview an expensive scan
--dry-run reports the sort orders, pages, and API-call count without fetching catalog data:
For the defaults, a deep scan reports three sort orders, 10 pages per sort, and 30 API calls.
Find a new series by narrator
Find books in a series
deals find --genre sci-fi --series "Bobiverse" --max-price 5
deals search "Brandon Sanderson" --series "Cosmere" --max-price 10
Save profiles for different moods
deals profile save long-cheap \
--max-price 3 --min-hours 15 --sort price-per-hour --deep --skip-owned
deals profile save hidden-gems \
--max-price 5 --min-rating 4.5 --min-ratings 50 --first-in-series
deals profile save binge-series \
--max-price 5 --min-hours 20 --sort price-per-hour
Then reuse a profile with either catalog entry point:
Apply preferences globally
Every later find or search uses those defaults. A profile overrides the global configuration, and an explicit CLI option overrides both.
Search several phrasings
Use | for an OR search. Results are deduplicated automatically:
deals search "WWII | second world war" \
--max-price 5 --on-sale --skip-owned --sort value
deals last --max-price-per-hour 0.25 --show-url
Browse adjacent genres without repeats
--exclude-seen removes ASINs returned by earlier searches:
deals find --genre sci-fi --max-price 5 --skip-owned --sort value
deals find --genre fantasy --max-price 5 --skip-owned --exclude-seen
The seen list accumulates across runs. Clear it with:
Rework results without another API call
deals find --genre mystery --max-price 5
deals last --max-price 8 --sort discount
deals last --min-rating 4.5 -n 5
deals last --clear-filter min-rating
deals last --reset
deals last -o mystery-deals.csv
deals detail @1
deals compare @1 @3
Hunt for historically low prices
# Keep titles in the cheapest quartile of their tracked history
deals find --genre sci-fi --hist-below 25 --require-history
# Require a 30% drop and limit results to recent releases
deals find --min-price-drop 30 --released-after 2024-01-01
Without --require-history, titles without enough data pass through so new catalog discoveries are not hidden.
Fill gaps in series you own
# Group missing books by series
deals series --gaps
# Focus on series where you own at least three books
deals series --min-books 3 --max-price 10 --sort discount
Compare marketplaces
Prices can differ between Audible stores. Authentication and availability rules still apply per marketplace.
Filter JSON with jq
Use --json for criteria not built into the CLI:
deals find --genre sci-fi --max-price 5 --json | \
jq '[.[] | select(.num_ratings > 1000 and .discount_pct > 80)] | sort_by(-.num_ratings)'
deals find --genre thriller --max-price 3 --json | jq -r '.[].asin'
Run a daily genre sweep
#!/bin/bash
for genre in sci-fi thriller mystery romance; do
echo "=== $genre ==="
deals find \
--genre "$genre" --max-price 3 --skip-owned --deep \
-n 5 -q -o "deals-${genre}.csv"
done
Send scheduled alerts with cron
The built-in track scheduler is the simplest option. If you prefer cron:
Open the crontab with crontab -e, then add:
Without --webhook, notify prints JSON for piping into another tool.