Odoo Apps Store Scraper — Modules and Prices
Pricing
$5.00 / 1,000 successful module results
Odoo Apps Store Scraper — Modules and Prices
Scrape apps.odoo.com: module name, technical name, vendor, price and currency, supported Odoo versions, license, rating, purchases or downloads, dependencies and short description. Filter by Odoo version, category, vendor or search term. No login, no proxy. Pay per result — see the Pricing tab.
Pricing
$5.00 / 1,000 successful module results
Rating
0.0
(0)
Developer
Atesen Software
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Scrape the Odoo Apps Store: module names, technical names, vendors, prices, supported Odoo versions, licenses, ratings and downloads. No login needed.
Odoo Apps Store Scraper (modules, prices, versions)
Point it at apps.odoo.com with search terms, category or vendor listings, or single module pages, and get one row per module: name, technical name, URL, vendor, price and currency, supported Odoo versions, license, rating, purchases or downloads, dependencies, last release-note date and short description. It reads the public store pages only, one page per second, and obeys the store's robots.txt. No API key, no browser, no proxy, no login.
- Filter by Odoo version: 17.0, 18.0, 19.0 and so on. Searches and listings are run once per version; a module URL is read for each version you list.
- Three ways in: search terms, listing URLs (a category or a vendor), and module URLs. Mix them in one run.
- Fast list mode: turn off "Read each module page" and get 20 modules per request with name, vendor, price, votes, purchases or downloads and summary.
- Never crashes on a missing page: a module that does not exist for a version, a blocked URL or an unsupported link gives one free
statusrow that says why. - No personal data fields: only the vendor name printed in the store is saved. Reviewer names, comments, support e-mail addresses, phone numbers and vendor websites are not read as fields; e-mail addresses are also removed from names and summaries. A summary is kept as the vendor wrote it.
Use cases
- Competitor research for Odoo partners and module developers: who sells a Shopify, WhatsApp or POS connector, for which versions, under which license.
- Pricing research: compare list prices across vendors for the same job, free against paid, and how many sales a module has had in total and last month.
- Version coverage checks: which modules already support Odoo 19.0 or 20.0, and which still stop at 17.0.
- Dependency mapping: which standard Odoo apps and bundled community modules a module needs.
Input
| Field | Description |
|---|---|
searchTerms | Words such as shopify or pos restaurant. A module matches when all words appear in its name, technical name, vendor or summary. |
startUrls | Optional. Listing URLs (.../apps/modules/category/Accounting/browse, .../apps/modules/browse?author=VentorTech) and module URLs (.../apps/modules/18.0/integration_shopify). A listing URL that already has ?series= keeps that version. |
odooVersions | Optional. For example 17.0, 18.0. Empty = all versions for searches, the URL's own version for module URLs. |
maxItems | Total module rows for the whole run. Default 50. 0 = no limit. |
maxListingPages | Listing pages read per term, listing and version. Default 10; a page holds 20 modules. |
includeDetails | Default on. Reads each module page for versions, license, rating, dependencies and more. Off = fast list mode. |
includeSourceInfo | Default on. One free source row per term, listing or module URL. |
{"searchTerms": ["shopify"],"odooVersions": ["18.0"],"maxItems": 5,"maxListingPages": 10}
How search works. Odoo's own search URL (?search=) is closed to robots in robots.txt, so this Actor never calls it. Search terms are matched against the store's normal listing pages, which come in the store's default ranking (popular modules first). The source row tells you how many pages and entries were scanned and whether the whole listing was read (complete). For a deeper search, raise maxListingPages or add a category URL.
Output
One row per module and Odoo version. odooVersion is the store URL/listing series (for example 18.0); the detail-only softwareVersion is the module release (for example 18.0.1.0.0), or null when missing. Long text is cut at 300 characters with "…".
{"type": "module","name": "Odoo Shopify Connector PRO","technicalName": "integration_shopify","url": "https://apps.odoo.com/apps/modules/18.0/integration_shopify","odooVersion": "18.0","vendor": "VentorTech","price": 499,"currency": "EUR","priceText": "499.00 €","isFree": false,"category": "Sales","priceModuleOnly": 449,"license": "OPL-1","supportedVersions": ["13.0", "14.0", "15.0", "16.0", "17.0", "18.0", "19.0", "20.0"],"ratingValue": 5,"ratingVotes": 22,"reviewCount": 55,"purchases": 259,"purchasesLastMonth": 8,"downloads": null,"downloadsLastMonth": null,"lastUpdate": "2026-09-29","shortDescription": "Export products and your current stock from Odoo to Shopify, and seamlessly import orders from your Shopify store into Odoo. Update order status and provide tracking numbers to your customers automatically and instantly! This Shopify connector simplifies multi-channel e-commerce by automating data…","depends": ["mrp", "account", "mail", "stock"],"dependsCommunity": ["integration", "queue_job"],"linesOfCode": 4329,"odooOnline": false,"odooSh": true,"onPremise": true,"input": "shopify","scrapedAt": "2026-10-24T00:41:50.131Z"}
Field notes:
priceis the price the store shows. When a module bundles community modules, that price includes them;priceModuleOnlyis then the module's own price. Free modules haveprice: 0,currency: null,isFree: true. If the price block cannot be read (the store changed its page),price,currency,priceTextandisFreeare allnull: an unknown price is never reported as 0 or free.currencyis an ISO code read from the symbol the store prints for the visitor's region (EURin the runs shown here). The same module can show another currency from another region.purchasescounts sales of a paid module anddownloadscounts downloads of a free one. The "last month" figures come from the listing, so they arenullfor a module read from its URL alone. The same holds forshortDescription.lastUpdateis the newest full date (YYYY-MM-DD) found in the release notes on the module's documentation tab. The store prints no update date of its own, so it isnullfor modules whose vendor writes none.ratingValue,ratingVotesandreviewCountarenullfor modules without ratings.ratingValueandreviewCountcome from the module page, so they are missing in fast list mode.reviewCountis the figure from the page's metadata and can be higher than the votes of this version.dependslists the standard Odoo apps a module needs (technical names);dependsCommunitylists bundled community modules. Both arenullwhen the page shows none.- In fast list mode a row holds only the fields the listing shows: name, technical name, URL, version, vendor, price, votes, purchases or downloads (with last month), summary and
input.
Free helper rows share the same dataset:
type: "source":input,kind(search,listingormodule),odooVersion,listingPagesRead,entriesScanned,entriesMatched,entriesInListing(size of the whole listing),itemsSaved,complete. A module saved for an earlier input in the same run is not saved twice, soitemsSavedcan be lower thanentriesMatched. A module URL that cannot be read gives a status row and no source row.type: "status":status,input,url,httpStatus,message.
Status values you may see: module_not_found (HTTP 404 for that version), blocked_by_robots, not_found, access_denied, fetch_failed, detail_failed, listing_parse_failed (the store counted apps but no module card could be read, so the listing is not marked complete), no_results, unsupported_url, invalid_url, invalid_input.
When "Read each module page" is on and one module page cannot be read, the module is still saved from its listing entry (without the page fields) and a free detail_failed, fetch_failed or similar status row names the module.
{"type": "status","status": "blocked_by_robots","input": "https://apps.odoo.com/apps/modules/browse?search=shopify","message": "The store's robots.txt does not allow reading https://apps.odoo.com/apps/modules/browse?search=shopify&series=17.0. Skipped to stay polite. Odoo disallows its own search and sorting URLs, so use \"Search terms\" instead of a search URL. Not charged.","url": "https://apps.odoo.com/apps/modules/browse?search=shopify&series=17.0","httpStatus": null,"scrapedAt": "2026-10-24T00:43:04.027Z"}
Limits
- Only modules on apps.odoo.com. Themes, the Odoo Enterprise apps pages and anything behind a login are not read.
- Search is a scan of the listing, not the store's search engine (see above). It finds the active modules first and may miss rarely sold ones unless you read more pages.
- Prices are list prices as shown to a visitor. Discounts, taxes and the maintenance price per 100 lines of code are not collected.
- One request per second, with retries and back-off. A full run over thousands of modules is slow by design.
- The store changes its pages now and then. If a page no longer looks like a module page you get a
detail_failedstatus row instead of a wrong row.
FAQ
Is it allowed to read the Odoo Apps Store? The Actor reads public pages only and checks https://apps.odoo.com/robots.txt first. On 24 October 2026 that file closed the search, sort and ?page= URLs but left category, vendor and version listings and module pages open, which are the only URLs this Actor uses. Odoo's published legal pages (subscription agreement, cloud acceptable-use policy, sales conditions) contain no rule about reading public store pages, but the cloud policy bans crawling that hurts availability, which is why the Actor stays at one request per second. You remain responsible for how you reuse the data.
Why does a search find fewer modules than the store's search box? The store's search URL is disallowed for robots, so the Actor scans listing pages and filters them locally. Raise maxListingPages for more depth, or give a category URL to narrow the area first. The complete flag in the source row shows whether the whole listing was read.
Why is price sometimes higher than priceModuleOnly? Some modules bundle the community modules they need, and the store shows one price for the bundle. priceModuleOnly is the part for the module itself.
Does it collect personal data? No contact details, reviews or reviewer names are read. The vendor is the publisher name printed in the store, which for a few modules is a developer's own name; check the laws that apply to you before you reuse it.
Which Odoo versions are covered? Every version the store lists, today 5.0 to 20.0. supportedVersions shows which versions a module exists for.
Pricing
Pay per result — see the Pricing tab.
Each saved module row is one result. Source rows and status rows are free. The run stops when it reaches the maximum cost per run that you set.
Support and disclaimers
Questions and feature requests belong on the Issues tab of this Actor's page on Apify. This Actor is an independent tool and is not affiliated with Odoo S.A. or any module vendor. It reads only what the Odoo Apps Store publishes to visitors; how you may use that data depends on the store's terms and the applicable law.