I’m working on an app that needs to sync contacts from Google accounts. I can successfully pull basic contact info using the Google Contacts API. However, I’m having trouble accessing some newer contact fields like birthdays and websites.
I found out these additional fields should be available through a specific XML namespace, but I can’t figure out how to actually request and parse them in my code. The standard contact data comes through fine, but these extended properties aren’t showing up in my API responses.
Has anyone worked with these newer contact attributes? What’s the proper way to include them in API calls and extract the data from the response?
yeah, check your authentication scopes first - you’ll need contacts.readonly or contacts depending on what you’re doing. also try adding the max-results parameter. the API sometimes truncates responses and you’ll miss fields. I had the same issue where websites weren’t showing up until I increased the max results limit.
This is probably an API versioning issue with field specification. You need to explicitly request extended contact properties using field mask parameters. For birthdays, use the ‘birthdays’ field in your request - for websites use ‘urls’. The newer People API (v1) handles these way better than the old Contacts API. I switched about a year ago for a similar project and extended fields became much more reliable. Use contacts.people.get or contacts.people.connections.list endpoints with proper field masks like ‘birthdays,urls,metadata’. The JSON response structure is also cleaner than the old XML format.
Had this exact problem six months ago with a CRM integration. Google Contacts API won’t give you extended fields unless you ask for them. Set your projection parameter to ‘full’ instead of the default ‘thin’ - that’s what gets you birthdays, websites, and other extended data. Double-check your API version too since some fields only showed up in newer versions. Heads up: when you parse the response, extended fields come back in different XML structure than basic contact info. You’ll probably need to tweak your parsing logic. Birthday field uses the gContact namespace and shows up as its own XML element.