How to retrieve property IDs from GA4 using Google Analytics Data API

I’m trying to figure out how to get all the available property IDs for GA4 properties using the Google Analytics Data API. I’ve been looking through the documentation but can’t seem to find any specific endpoints that would let me list or enumerate these property IDs.

Is there a way to programmatically fetch all the GA4 property IDs that I have access to? I need this for my application so users can select which property they want to pull data from.

I’ve checked the main API documentation but maybe I’m missing something obvious. Has anyone managed to do this successfully? What’s the correct approach here?

The Analytics Data API doesn’t handle property listing - that’s the Google Analytics Admin API’s job.

Use the Admin API’s accounts.list and properties.list endpoints. Call accounts first to get your account IDs, then grab all properties under each account.

The pain points? Authentication flows, pagination with lots of properties, and filtering for GA4 only (since it returns Universal Analytics properties too).

I hit this same wall building a dashboard that pulled from multiple client properties. Rather than fight with API calls and auth, I built a Latenode automation that handles property enumeration and keeps everything updated automatically.

It runs daily, fetches all properties, filters GA4 only, and stores them ready for my app. Much cleaner than cramming all that API complexity into application code.

You can set up something similar for automatic property discovery: https://latenode.com

definitely use the Admin API for this! it can be confusing at first but trust me, Data API is limited to just metrics. if your OAuth scope is right, accounts.list should get you the property IDs you need. good luck!

You’re hitting a super common misconception here. The Analytics Data API only pulls reports and metrics - it can’t manage properties at all. I ran into this exact same wall building a multi-tenant dashboard last year. Wasted hours in the wrong docs before realizing you need the Analytics Admin API instead. Here’s what actually works: hit accounts.list first to grab account info, then use those IDs to call properties.list for each account. Heads up though - the response dumps GA4 and Universal Analytics properties together. You’ll want to filter by type since UA is getting killed off anyway. Also double-check your service account has Analytics Admin API scope, not just Data API. Once you find the right Admin API docs, it’s actually pretty straightforward. Way better than trying to hack property IDs from random endpoints.

Had this exact issue when building a client reporting tool. The Google Analytics Data API docs are misleading - they focus on data retrieval but property enumeration needs a totally different service. You’ve got to use the Google Analytics Admin API with proper admin scopes instead. Here’s the workflow: hit the Admin API’s accounts endpoint first, then loop through those results to grab properties under each account. One gotcha that tripped me up - you’ll get both GA4 and Universal Analytics properties mixed together in the response, so filter by property type. If you’re working with a big organization that has tons of properties, don’t forget to handle pagination. The Admin API also has different rate limits than the Data API, so watch out if you’re making lots of calls.