You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Implement or remove the unused Request.skip_navigation flag #2311
CrawleeRequestData.skip_navigation (_request.py) is declared, persisted and serialized as skipNavigation, but nothing in src/crawlee reads it. Setting it has no effect.
Either implement it or remove it in 2.0. JS v4 implements it: the crawler skips opening the page and navigating, runs the handler, and accessing navigation-only context members (the response, the loaded URL) raises a NavigationSkippedError.
Implement it. It isn't breaking. Because it's not possible to make it type-safe, we made accessing context properties that are only present after navigation throw on runtime so that you don't have to handle undefined fields in the 99% use cases where you don't use skipNavigation.
Picking this up per janbuchar's direction — PR incoming.
Approach mirrors JS SDK v4 (apify/crawlee#3107, #3381): BasicCrawler routes skip_navigation requests around the context pipeline and calls the router directly; navigation-only request.loaded_url raises a new public NavigationSkippedError; other attribute reads/writes pass through so router state updates still work. The existing skipNavigation serialization is unchanged.
Activity
janbuchar commentedon Oct 14, 2026
Implement it. It isn't breaking. Because it's not possible to make it type-safe, we made accessing context properties that are only present after navigation throw on runtime so that you don't have to handle
undefinedfields in the 99% use cases where you don't useskipNavigation.enriquealonso01 commentedon Oct 16, 2026
Picking this up per janbuchar's direction — PR incoming.
Approach mirrors JS SDK v4 (apify/crawlee#3107, #3381):
BasicCrawlerroutesskip_navigationrequests around the context pipeline and calls the router directly; navigation-onlyrequest.loaded_urlraises a new publicNavigationSkippedError; other attribute reads/writes pass through so router state updates still work. The existingskipNavigationserialization is unchanged.