I creted a linkedin dev app with this scope: Member Data Portability API (Member)
Now i am making a request to see all domains it return. Getting this:
LinkedIn Member Snapshot Domain Summary:
CONTACTS: 782 item(s)
COURSES: 8 item(s)
EDUCATION: 5 item(s)
EMAIL_ADDRESSES: 1 item(s)
ENDORSEMENTS: 3204 item(s)
Events: 22 item(s)
INFERENCE_TAKEOUT: 17 item(s)
INSTANT_REPOSTS: 18 item(s)
INVITATIONS: 1382 item(s)
JOB_APPLICANT_SAVED_ANSWERS: 2 item(s)
JOB_APPLICATIONS: 22 item(s)
JOB_POSTINGS: 4 item(s)
JOB_SEEKER_PREFERENCES: 2 item(s)
LANGUAGES: 2 item(s)
LEARNING: 801 item(s)
MEMBER_FOLLOWING: 304 item(s)
MEMBER_HASHTAG: 6 item(s)
MEMBER_POSTS_ABOUT_HASHTAG: 5 item(s)
MEMBER_SHARE_INFO: 256 item(s)
PHONE_NUMBERS: 1 item(s)
POSITIONS: 2 item(s)
PROFILE: 1 item(s)
PROFILE_SUMMARY: 2 item(s)
PROJECTS: 2 item(s)
PUBLICATIONS: 4 item(s)
RECEIPTS: 32 item(s)
RECOMMENDATIONS: 46 item(s)
REGISTRATION: 1 item(s)
SEARCHES: 7719 item(s)
SECURITY_CHALLENGE_PIPE: 32 item(s)
SKILLS: 19 item(s)
TALENT_QUESTION_SAVED_RESPONSE: 8 item(s)
login: 702 item(s)
From this doc (https://learn.microsoft.com/en-us/linkedin/dma/member-data-portability/shared/snapshot-domain?view=li-dma-data-portability-2024-05) it says that i should have access to “INBOX”, which i dont have. Its been 2 weeks now so that should be enough time for it to be available no?
Ran this code and got the result above:
BASE_URL = "https://api.linkedin.com/rest/memberSnapshotData"
def get_member_snapshot_summary():
headers = {
"Authorization": f"Bearer {ACCESS_TOKEN}",
"LinkedIn-Version": "202312"
}
params = {
"q": "criteria",
"start": 0,
"count": 100 # Increased to get more data per request
}
domain_summary = defaultdict(int)
total_elements = 0
while True:
response = requests.get(BASE_URL, headers=headers, params=params)
if response.status_code == 404 and "No data found for this memberId" in response.text:
print("Reached the end of available data.")
break
if response.status_code != 200:
print(f"Error: {response.status_code}")
print(response.text)
break
data = response.json()
for element in data['elements']:
domain = element['snapshotDomain']
domain_summary[domain] += len(element['snapshotData'])
total_elements += len(data['elements'])
# Check for next page
next_link = next((link for link in data['paging']['links'] if link['rel'] == 'next'), None)
if not next_link:
break
# Update start parameter for next page
params['start'] = int(next_link['href'].split('start=')[1])
print(f"Processed page starting at {params['start']}")
return domain_summary, total_elements