AFAIK, crux exposes monthly aggregates and 28-day rolling average. Bigquery gives aggregation by origin and one can use the API to get url level.
https://web.dev/chrome-ux-report/#crux-api
The only way I know so far is to instrument page with webvitals JS library and use an analytics tool. This is well depicted here: https://web.dev/vitals-ga4/
Is there another way to fetch url level daily numbers? E.g. passive like bigquery and API?
The only way to passively get CrUX data for an arbitrary day and URL is to query the API on that day and save the results.
There are solutions like using a Google Sheet with Apps Script to automatically query the API on a daily basis for a set of URLs and writing the results to the sheet.
I wrote a walkthrough a few years ago describing the process. It refers to an older version of the PSI API, but I've added an updated version of the script that uses the latest CrUX API to the CrUX repo on GitHub.
2023 update: there's also now a CrUX History API. It returns weekly snapshots of the previous 28-day aggregations going back 6 months.