I tried to read the shipping and returns pages of 24 big German online shops by machine: 7 wouldn't let me, 1 had shipping markup A developer's automated extractor tested 24 large German online shops on 5 November 2026 using plain HTTP requests and found that 7 (29%) blocked or returned unreadable pages without a full browser, leaving AI shopping agents with no shipping or returns information. Among the 17 readable shops, standard shipping ranged from €2.99 to €6.95 (median €4.95), free-shipping thresholds had a median of €59, and only 4 of 17 published a schema.org hasMerchantReturnPolicy while just 1 published shippingDetails, meaning most expose delivery terms only as prose. When an AI shopping assistant compares two shops, the questions that decide the order are boring ones: What does delivery cost? When does it arrive? Can I send it back? A human finds the answers on the shipping and returns pages. A machine has to find those pages first, read them and turn prose into numbers. On 5 November 2026 I ran that exact job against 24 large German online shops: marketplaces, fashion, electronics, DIY, drugstores, pharmacies, pets, outdoor and food. Disclosure: I built the extractor used here, the Shop Shipping & Returns Extractor https://apify.com/fast data asap/shop-shipping-returns-extractor on Apify. A first run on this sample exposed several extraction errors; the numbers below are from the improved version, and the method and limits are at the end. Each shop was visited with plain HTTP requests, no browser, the way many crawlers and agents work. | Outcome | Shops | |---|---| | Policy pages found and parsed | 17 | | Blocked or unreadable without a browser | 7 | The seven fall into three groups: So for 29% of this sample, an agent that does not run a full browser, or that the shop's firewall does not trust, learns nothing about shipping or returns. Among them are some of the largest shops in the country. All values below were extracted automatically from the shops' own shipping, returns and withdrawal pages, with plausibility rules for example, standard shipping between €0.50 and €50, delivery within 30 days, return windows between 7 and 365 days . Treat individual values as indicative; the patterns are what matters. Shipping costs. 13 of 17 pages stated a standard shipping price that could be extracted. The range was €2.99 to €6.95 , the median €4.95 . Free shipping threshold. 9 of 17 stated a minimum order value for free delivery: €29, €29, €39, €49, €59, €59.95, €60, €99 and €250. Median: €59. The other eight either do not offer one, or phrase it in a way the extractor could not pin to a number for example, "free for members" . Delivery time. 9 shops stated standard delivery times in days. Eight of them promise between 1 and 3 working days . Carriers. DHL is named on 11 of 17 pages, freight forwarding "Spedition" for bulky goods on 9, Hermes on 4, DPD on 3. Returns. 10 shops stated a return window in days: three said 14 days the statutory withdrawal period , six said 30 days and one said 100 days. 10 said returns are free of charge. Note that the 14-day withdrawal right applies to every distance sale in the EU; a longer voluntary return window is a commercial promise, and the two are easy to confuse, both for humans and for machines. Prose is hard to parse reliably. The clean way to publish shipping and returns is structured data: shippingDetails and hasMerchantReturnPolicy in schema.org JSON-LD, which Google merchant listings and AI shopping agents read directly. I checked the home page and one product page of each readable shop: hasMerchantReturnPolicy found on 4 of 17 shippingDetails found on 1 of 17 Everyone else publishes their shipping and returns terms only as text on a service page. That is enough for a human and for a careful parser, but it is exactly the kind of information an AI agent may skip or misread. This matches what I saw earlier on international Shopify brands: product markup almost always has the price and availability, and almost never says what delivery costs. If you want to check your own shop or a list of competitors: curl -X POST "https://api.apify.com/v2/acts/fast data asap~shop-shipping-returns-extractor/run-sync-get-dataset-items?token=YOUR APIFY TOKEN" \ -H "Content-Type: application/json" \ -d '{"shops": "your-shop.de", "competitor.de" , "language": "de"}' It costs $0.003 per shop where a policy page was found and parsed; blocked or unreachable shops are free. Data: 24 German online shops, one automated pass on 5 November 2026. Shop names are deliberately not listed next to values; the aim is the overall picture, not a ranking.