### Install proxycurl-py with Concurrency Models Source: https://github.com/nubelaco/proxycurl-py-linkedin-profile-scraper/blob/main/README.md Installs the proxycurl-py library with support for different concurrency models like asyncio, gevent, or twisted. Choose the appropriate command based on your project's concurrency needs. ```bash pip install 'proxycurl-py[asyncio]' pip install 'proxycurl-py[gevent]' pip install 'proxycurl-py[twisted]' ``` -------------------------------- ### GET /account/balance Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Checks the current API credit balance. ```APIDOC ## GET /account/balance ### Description Returns the current remaining credit balance for the account. ### Method GET ### Endpoint /account/balance ### Response #### Success Response (200) - **credit_balance** (integer) - Current available credits. ### Response Example { "credit_balance": 500 } ``` -------------------------------- ### Event-Driven Concurrency with Twisted Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt This example demonstrates using the Twisted framework for asynchronous, event-driven LinkedIn profile scraping. It fetches both person and company profiles using the `proxycurl.twisted` module. The `defer.inlineCallbacks` decorator simplifies asynchronous code, and the Twisted reactor manages the event loop. ```python from twisted.internet import reactor, defer from proxycurl.twisted import Proxycurl proxycurl = Proxycurl() @defer.inlineCallbacks def main(): # Get person profile person = yield proxycurl.linkedin.person.get( linkedin_profile_url='https://www.linkedin.com/in/williamhgates/' ) print(f"Person: {person['full_name']}") # Get company profile company = yield proxycurl.linkedin.company.get( url='https://www.linkedin.com/company/microsoft' ) print(f"Company: {company['name']}") reactor.stop() reactor.callWhenRunning(main) reactor.run() ``` -------------------------------- ### Enrich LinkedIn Person Profile using asyncio Source: https://github.com/nubelaco/proxycurl-py-linkedin-profile-scraper/blob/main/README.md Example of enriching a LinkedIn person's profile using the proxycurl-py library with the asyncio concurrency model. It takes a LinkedIn profile URL as input and returns the profile data in a structured format. ```python from proxycurl.asyncio import Proxycurl, do_bulk import asyncio import csv proxycurl = Proxycurl() person = asyncio.run(proxycurl.linkedin.person.get( linkedin_profile_url='https://www.linkedin.com/in/williamhgates/' )) print('Person Result:', person) ``` -------------------------------- ### GET /linkedin/job Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Retrieves structured data from a LinkedIn job posting. ```APIDOC ## GET /linkedin/job ### Description Fetches detailed metadata for a specific job posting. ### Method GET ### Endpoint /linkedin/job ### Parameters #### Query Parameters - **url** (string) - Required - The LinkedIn URL of the job posting. ### Response #### Success Response (200) - **title** (string) - Job title. - **company** (object) - Company details. - **location** (object) - City and country. - **seniority_level** (string) - Seniority level. ### Response Example { "title": "Software Engineer", "company": {"name": "Tech Corp"}, "location": {"city": "San Francisco", "country": "USA"} } ``` -------------------------------- ### Search for Companies via Proxycurl Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Provides methods to filter companies based on industry, funding, size, and location. Includes examples for both basic search and enriched company profile data. ```python import asyncio from proxycurl.asyncio import Proxycurl proxycurl = Proxycurl() # Search for Series A startups in fintech companies = asyncio.run(proxycurl.linkedin.company.search( industry='(?i)financial services|fintech', employee_count_min='50', employee_count_max='500', funding_amount_min='1000000', funding_amount_max='10000000', founded_after_year='2018', country='US', page_size='50' )) print(f"Found {companies.get('total_result_count')} companies") for company in companies.get('results', []): print(f"Company: {company['linkedin_profile_url']}") # With enrichment companies_enriched = asyncio.run(proxycurl.linkedin.company.search( type='PRIVATELY_HELD', follower_count_min='10000', region='(?i)california', enrich_profiles='enrich', page_size='10' )) ``` -------------------------------- ### GET /linkedin/company/employee_count Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Get the total number of employees associated with a company profile. ```APIDOC ## GET /linkedin/company/employee_count ### Description Get the total number of employees at a company. ### Method GET ### Endpoint /linkedin/company/employee_count ### Parameters #### Query Parameters - **url** (string) - Required - LinkedIn company profile URL - **employment_status** (string) - Optional - 'current', 'past', or 'all' ### Request Example { "url": "https://www.linkedin.com/company/apple" } ### Response #### Success Response (200) - **total_employee** (integer) - Total count - **linkdb_employee_count** (integer) - Count from LinkDB #### Response Example { "total_employee": 150000, "linkdb_employee_count": 148000 } ``` -------------------------------- ### GET /linkedin/school Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Retrieves structured data from a LinkedIn school profile. ```APIDOC ## GET /linkedin/school ### Description Fetches detailed information about a specific educational institution using its LinkedIn URL. ### Method GET ### Endpoint /linkedin/school ### Parameters #### Query Parameters - **url** (string) - Required - The LinkedIn URL of the school. ### Response #### Success Response (200) - **name** (string) - Name of the school. - **description** (string) - School description. - **website** (string) - Official website URL. - **follower_count** (integer) - Number of followers. ### Response Example { "name": "Stanford University", "description": "Stanford University is a private research university...", "website": "http://www.stanford.edu", "follower_count": 1200000 } ``` -------------------------------- ### GET /linkedin/company/role_lookup Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Find a person who matches a specific role at a company. ```APIDOC ## GET /linkedin/company/role_lookup ### Description Find a person who matches a specific role at a company. Returns the closest match. ### Method GET ### Endpoint /linkedin/company/role_lookup ### Parameters #### Query Parameters - **company_name** (string) - Required - Name of the company - **role** (string) - Required - Job title to search - **enrich_profile** (string) - Optional - Set to 'enrich' to include full profile ### Request Example { "company_name": "Apple", "role": "CTO" } ### Response #### Success Response (200) - **linkedin_profile_url** (string) - URL of the matched profile #### Response Example { "linkedin_profile_url": "https://linkedin.com/in/cto-example" } ``` -------------------------------- ### GET /linkedin/school/student_list Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Retrieves a list of students associated with a specific school. ```APIDOC ## GET /linkedin/school/student_list ### Description Retrieves a list of students from a university with optional filtering by status, major, and sorting. ### Method GET ### Endpoint /linkedin/school/student_list ### Parameters #### Query Parameters - **linkedin_school_url** (string) - Required - The LinkedIn URL of the school. - **student_status** (string) - Optional - 'current', 'past', or 'all'. - **search_keyword** (string) - Optional - Filter by major or keyword. - **page_size** (integer) - Optional - Number of results per page. ### Response #### Success Response (200) - **students** (array) - List of student profile objects. ### Response Example { "students": [{"profile_url": "https://www.linkedin.com/in/example"}] } ``` -------------------------------- ### GET /linkedin/company/employee_list Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Retrieve a list of employees for a specific company profile URL. ```APIDOC ## GET /linkedin/company/employee_list ### Description Get a list of employees at a company. Powered by LinkDB dataset. ### Method GET ### Endpoint /linkedin/company/employee_list ### Parameters #### Query Parameters - **url** (string) - Required - LinkedIn company profile URL - **employment_status** (string) - Optional - 'current', 'past', or 'all' - **role_search** (string) - Optional - Regex for role filtering ### Request Example { "url": "https://www.linkedin.com/company/microsoft", "employment_status": "current" } ### Response #### Success Response (200) - **employees** (array) - List of employee profile objects #### Response Example { "employees": [{"profile_url": "https://linkedin.com/in/emp1"}] } ``` -------------------------------- ### GET /linkedin/company/search Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Search for companies matching specific criteria such as industry, headcount, funding, and location. ```APIDOC ## GET /linkedin/company/search ### Description Search for companies matching specific criteria. Returns up to 10,000 results per search. ### Method GET ### Endpoint /linkedin/company/search ### Parameters #### Query Parameters - **industry** (string) - Optional - Industry filter - **employee_count_min** (integer) - Optional - Minimum headcount - **funding_amount_min** (integer) - Optional - Minimum funding amount - **enrich_profiles** (string) - Optional - Set to 'enrich' to include full profile data ### Request Example { "industry": "fintech", "employee_count_min": 50 } ### Response #### Success Response (200) - **total_result_count** (integer) - Total number of companies found - **results** (array) - List of company objects #### Response Example { "total_result_count": 5, "results": [{"linkedin_profile_url": "https://linkedin.com/company/example"}] } ``` -------------------------------- ### GET /linkedin/person/search Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Search for people matching specific criteria from the LinkDB dataset. Supports filtering by role, industry, location, and education. ```APIDOC ## GET /linkedin/person/search ### Description Search for people matching specific criteria from the LinkDB dataset. Returns up to 10,000 results per search. ### Method GET ### Endpoint /linkedin/person/search ### Parameters #### Query Parameters - **current_role_title** (string) - Optional - Regex pattern for job title - **current_company_industry** (string) - Optional - Regex pattern for industry - **city** (string) - Optional - City name - **country** (string) - Optional - Country code - **enrich_profiles** (string) - Optional - Set to 'enrich' to include full profile data - **page_size** (integer) - Optional - Number of results per page ### Request Example { "current_role_title": "(?i)CTO", "city": "San Francisco" } ### Response #### Success Response (200) - **total_result_count** (integer) - Total number of matches - **results** (array) - List of matching profiles #### Response Example { "total_result_count": 150, "results": [{"linkedin_profile_url": "https://linkedin.com/in/example"}] } ``` -------------------------------- ### Initialize proxycurl-py Client with API Key Source: https://github.com/nubelaco/proxycurl-py-linkedin-profile-scraper/blob/main/README.md Demonstrates how to initialize the Proxycurl client using an API key. The API key can be set via the PROXYCURL_API_KEY environment variable or injected directly. ```python from proxycurl.asyncio import Proxycurl import asyncio proxycurl = Proxycurl() ``` -------------------------------- ### Configure Proxycurl API Key Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Demonstrates how to set the Proxycurl API key, either by using an environment variable or by passing it directly when initializing the Proxycurl client. Ensure your API key is kept secure. ```python import os os.environ['PROXYCURL_API_KEY'] = 'your-api-key-here' # Or pass directly to the client from proxycurl.asyncio import Proxycurl proxycurl = Proxycurl(api_key='your-api-key-here') ``` -------------------------------- ### Implement Gevent Concurrency Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Demonstrates how to use the gevent library for greenlet-based concurrency with Proxycurl. ```python from gevent import monkey monkey.patch_all() import gevent from gevent.pool import Pool from proxycurl.gevent import Proxycurl proxycurl = Proxycurl() def get_profile(url): return proxycurl.linkedin.person.get(linkedin_profile_url=url) urls = [ 'https://www.linkedin.com/in/williamhgates/', 'https://www.linkedin.com/in/satyanadella/', 'https://www.linkedin.com/in/jeffweiner08/' ] ``` -------------------------------- ### Search for People via Proxycurl Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Demonstrates how to search for individuals using specific filters like role, industry, and education. Supports optional profile enrichment to retrieve full data for search results. ```python import asyncio from proxycurl.asyncio import Proxycurl proxycurl = Proxycurl() # Search for CTOs at tech companies in San Francisco search_results = asyncio.run(proxycurl.linkedin.person.search( current_role_title='(?i)CTO|Chief Technology Officer', current_company_industry='(?i)technology|software', city='(?i)San Francisco', country='US', current_company_employee_count_min='100', current_company_employee_count_max='1000', page_size='25' )) print(f"Total results: {search_results.get('total_result_count')}") for result in search_results.get('results', []): print(f"Profile: {result['linkedin_profile_url']}") # With profile enrichment search_enriched = asyncio.run(proxycurl.linkedin.person.search( education_school_name='(?i)Stanford|MIT|Harvard', current_role_title='(?i)founder|CEO', skills='(?i)machine learning|artificial intelligence', enrich_profiles='enrich', # Include full profile data page_size='10' # Max 10 when enriching )) for result in search_enriched.get('results', []): if result.get('profile'): profile = result['profile'] print(f"{profile['full_name']} - {profile['headline']}") ``` -------------------------------- ### Check API Credit Balance Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Queries the current remaining credit balance for the authenticated API account. This request is free of charge. ```python import asyncio from proxycurl.asyncio import Proxycurl proxycurl = Proxycurl() balance = asyncio.run(proxycurl.get_balance()) print(f"Credit balance: {balance['credit_balance']}") ``` -------------------------------- ### Asyncio Error Handling for LinkedIn Profile Lookups Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt This snippet illustrates how to handle potential errors when fetching LinkedIn profiles using asyncio. It wraps the `proxycurl.linkedin.person.get` call in a try-except block to catch `ProxycurlException`. Specific HTTP status codes like 404 (Not Found), 401 (Unauthorized), and 403 (Forbidden) are checked to provide user-friendly error messages. ```python import asyncio from proxycurl.asyncio import Proxycurl from proxycurl.asyncio.base import ProxycurlException proxycurl = Proxycurl() async def safe_lookup(): try: person = await proxycurl.linkedin.person.get( linkedin_profile_url='https://www.linkedin.com/in/invalid-profile/' ) return person except ProxycurlException as e: # Handle specific error codes error_msg = str(e) if '404' in error_msg: print("Profile not found") elif '401' in error_msg: print("Invalid API key") elif '403' in error_msg: print("Insufficient credits") else: print(f"API error: {error_msg}") return None result = asyncio.run(safe_lookup()) ``` -------------------------------- ### List Corporate Customers Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Identifies probable corporate customers of a target company. Costs 10 credits per result returned. ```python import asyncio from proxycurl.asyncio import Proxycurl proxycurl = Proxycurl() # Get customers of a company customers = asyncio.run(proxycurl.linkedin.customers.listing( linkedin_company_profile_url='https://www.linkedin.com/company/stripe', page_size=25 )) for customer in customers.get('companies', []): print(f"Customer: {customer['linkedin_company_profile_url']}") print(f"Email: {customer.get('email')}") ``` -------------------------------- ### Retrieve LinkedIn Person Profile Data with Proxycurl Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Fetches structured data for a LinkedIn person profile using the proxycurl-py library. It shows basic retrieval and advanced options for including extra enrichment data like skills, personal email, and inferred salary. Costs 1 credit per request. ```python import asyncio from proxycurl.asyncio import Proxycurl proxycurl = Proxycurl() # Basic person profile lookup person = asyncio.run(proxycurl.linkedin.person.get( linkedin_profile_url='https://www.linkedin.com/in/williamhgates/' )) print(f"Name: {person['full_name']}") print(f"Headline: {person['headline']}") print(f"Location: {person['city']}, {person['country']}") print(f"Connections: {person['connections']}") # With extra enrichment (additional credits apply) person_enriched = asyncio.run(proxycurl.linkedin.person.get( linkedin_profile_url='https://www.linkedin.com/in/williamhgates/', extra='include', # Gender, birth date, industry, interests skills='include', # Skills data personal_email='include', # Personal email addresses inferred_salary='include', # Salary range estimate use_cache='if-recent' # Fresh profile (max 29 days old) )) # Access experience data for exp in person_enriched.get('experiences', []): print(f"Role: {exp['title']} at {exp['company']}") ``` -------------------------------- ### Enrich a Person Profile Source: https://github.com/nubelaco/proxycurl-py-linkedin-profile-scraper/blob/main/README.md Demonstrates how to enrich a LinkedIn person profile using their URL with the proxycurl-py library. ```APIDOC ## POST /linkedin/v2/person ### Description Enriches a LinkedIn person profile using their URL to retrieve structured data. ### Method POST ### Endpoint /linkedin/v2/person ### Parameters #### Query Parameters - **linkedin_profile_url** (string) - Required - The URL of the LinkedIn profile to enrich. - **fallback_to_proxycurl_search** (boolean) - Optional - If true, falls back to Proxycurl's search if the profile is not found directly. - **cache_expire** (integer) - Optional - Duration in seconds to cache the result. ### Request Body This endpoint does not typically require a request body for basic enrichment. ### Request Example ```json { "linkedin_profile_url": "https://www.linkedin.com/in/williamhgates/" } ``` ### Response #### Success Response (200) - **profile_data** (object) - Contains the enriched profile information. #### Response Example ```json { "profile_data": { "public_identifier": "williamhgates", "first_name": "Bill", "last_name": "Gates", "occupation": "Co-founder at Bill & Melinda Gates Foundation", "linkedin_url": "https://www.linkedin.com/in/williamhgates/", "mail": "william.gates@example.com", "phone": "+1-XXX-XXX-XXXX", "country": "United States", "city": "Medina, Washington", "state": "Washington", "zip_code": "98033", "street_address": "123 Main St", "company": { "name": "Bill & Melinda Gates Foundation", "linkedin_url": "https://www.linkedin.com/company/bill-and-melinda-gates-foundation/" }, "education": [ { "school_name": "Harvard University", "degree_name": "Bachelor of Arts", "field_of_study": "Computer Science" } ], "skills": [ "Philanthropy", "Technology", "Business Strategy" ] } } ``` ``` -------------------------------- ### Execute Bulk API Requests Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Processes multiple API calls concurrently using the do_bulk utility. Supports custom worker counts for high-throughput operations. ```python import asyncio import csv from proxycurl.asyncio import Proxycurl, do_bulk proxycurl = Proxycurl() # Load LinkedIn URLs from CSV bulk_operations = [] with open('profiles.csv', 'r') as file: reader = csv.reader(file) next(reader) for row in reader: bulk_operations.append( (proxycurl.linkedin.person.get, {'linkedin_profile_url': row[0]}) ) # Process all profiles concurrently (default 10 workers) results = asyncio.run(do_bulk(bulk_operations)) # Process results for i, result in enumerate(results): if result.success: profile = result.value print(f"Success: {profile['full_name']}") else: print(f"Error: {result.error}") # Custom worker count for higher throughput results = asyncio.run(do_bulk(bulk_operations, max_workers=20)) ``` -------------------------------- ### Retrieve Employee Lists and Counts Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Retrieves lists of employees for a specific company URL and calculates total employee counts. Supports filtering by role, country, and employment status. ```python import asyncio from proxycurl.asyncio import Proxycurl proxycurl = Proxycurl() # Get employees from a company employees = asyncio.run(proxycurl.linkedin.company.employee_list( url='https://www.linkedin.com/company/microsoft', page_size='20', employment_status='current' # 'current', 'past', or 'all' )) for emp in employees.get('employees', []): print(f"Employee: {emp['profile_url']}") # Search for specific roles engineers = asyncio.run(proxycurl.linkedin.company.employee_list( url='https://www.linkedin.com/company/google', role_search='(?i)engineer|developer', country='us', sort_by='recently-joined', enrich_profiles='enrich', page_size='10' )) # Get employee count count = asyncio.run(proxycurl.linkedin.company.employee_count( url='https://www.linkedin.com/company/apple', employment_status='current', linkedin_employee_count='include' )) print(f"Total employees: {count['total_employee']}") ``` -------------------------------- ### List Students from a University Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Retrieves a list of students associated with a specific university. Supports filtering by status, major, and sorting; costs 3 credits per student returned. ```python import asyncio from proxycurl.asyncio import Proxycurl proxycurl = Proxycurl() # Get students from a university students = asyncio.run(proxycurl.linkedin.school.student_list( linkedin_school_url='https://www.linkedin.com/school/stanford-university/', student_status='current', search_keyword='(?i)computer science', page_size='20', sort_by='recently-matriculated' )) for student in students.get('students', []): print(f"Student: {student['profile_url']}") ``` -------------------------------- ### Perform Role Lookup at Company Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Finds a specific person matching a job title within a company. Returns the most relevant profile match, with optional enrichment. ```python import asyncio from proxycurl.asyncio import Proxycurl proxycurl = Proxycurl() # Find the CTO of Apple cto = asyncio.run(proxycurl.linkedin.company.role_lookup( company_name='Apple', role='CTO' )) if cto and cto.get('linkedin_profile_url'): print(f"CTO Profile: {cto['linkedin_profile_url']}") # With profile enrichment vp_sales = asyncio.run(proxycurl.linkedin.company.role_lookup( company_name='Salesforce', role='VP of Sales', enrich_profile='enrich' )) if vp_sales and vp_sales.get('profile'): profile = vp_sales['profile'] print(f"Found: {profile['full_name']}") print(f"Title: {profile['occupation']}") ``` -------------------------------- ### Bulk Enrich LinkedIn Profiles from CSV Source: https://github.com/nubelaco/proxycurl-py-linkedin-profile-scraper/blob/main/README.md Processes a CSV file containing a list of LinkedIn profile URLs to enrich them in bulk. It iterates through the file and executes requests asynchronously. ```python # PROCESS BULK WITH CSV bulk_linkedin_person_data = [] with open('sample.csv', 'r') as file: reader = csv.reader(file) next(reader, None) for row in reader: bulk_linkedin_person_data.append( (proxycurl.linkedin.person.get, {'url': row[0]}) ) results = asyncio.run(do_bulk(bulk_linkedin_person_data)) print('Bulk:', results) ``` -------------------------------- ### Concurrent Profile Processing with Greenlet Pool Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt This snippet shows how to process a list of LinkedIn profile URLs concurrently using a greenlet pool. It maps the `get_profile` function to a list of URLs and then iterates through the results, printing the full name of each profile. This approach is suitable for I/O-bound tasks where many operations can run in parallel. ```python from proxycurl.greenlet import Pool # Assuming 'get_profile' is a function that fetches a profile and 'urls' is a list of URLs pool = Pool(10) results = pool.map(get_profile, urls) for result in results: print(f"Profile: {result['full_name']}") ``` -------------------------------- ### Retrieve LinkedIn Job Posting Details Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Extracts structured data from a specific LinkedIn job posting URL. Consumes 2 credits per successful request. ```python import asyncio from proxycurl.asyncio import Proxycurl proxycurl = Proxycurl() # Get job details job = asyncio.run(proxycurl.linkedin.job.get( url='https://www.linkedin.com/jobs/view/123456789' )) print(f"Title: {job['title']}") print(f"Company: {job['company']['name']}") print(f"Location: {job['location']['city']}, {job['location']['country']}") print(f"Description: {job['job_description'][:200]}...") print(f"Seniority: {job.get('seniority_level')}") print(f"Employment type: {job.get('employment_type')}") ``` -------------------------------- ### Retrieve LinkedIn Company Profile Data with Proxycurl Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Retrieves structured data for a LinkedIn company profile. This function provides company details such as name, industry, description, website, and size. Advanced options allow for including categories, funding data, and more. Costs 1 credit per request. ```python import asyncio from proxycurl.asyncio import Proxycurl proxycurl = Proxycurl() # Basic company profile lookup company = asyncio.run(proxycurl.linkedin.company.get( url='https://www.linkedin.com/company/tesla-motors' )) print(f"Company: {company['name']}") print(f"Industry: {company['industry']}") print(f"Description: {company['description']}") print(f"Website: {company['website']}") print(f"Employee Range: {company['company_size']}") # With extra enrichment options company_enriched = asyncio.run(proxycurl.linkedin.company.get( url='https://www.linkedin.com/company/microsoft', categories='include', # Company categories funding_data='include', # Funding rounds extra='include', # Crunchbase data, social accounts, IPO info exit_data='include', # Investment portfolio exits acquisitions='include', # Acquisition data use_cache='if-recent' )) # Access headquarters location if company_enriched.get('hq'): hq = company_enriched['hq'] print(f"HQ: {hq.get('city')}, {hq.get('country')}") ``` -------------------------------- ### Search LinkedIn Jobs Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Performs a search for job postings based on keywords, location, and flexibility filters. Costs 2 credits per successful request. ```python import asyncio from proxycurl.asyncio import Proxycurl proxycurl = Proxycurl() # Search for remote engineering jobs jobs = asyncio.run(proxycurl.linkedin.company.find_job( keyword='software engineer', job_type='full-time', experience_level='mid_senior_level', flexibility='remote', when='past-week', geo_id='92000000' )) for job in jobs.get('job', []): print(f"Job: {job['job_title']} at {job['company']}") print(f"URL: {job['job_url']}") print(f"Location: {job['location']}") print(f"Posted: {job['list_date']}") ``` -------------------------------- ### Retrieve LinkedIn School Profile Data Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Fetches structured information about a specific school or university from LinkedIn. Requires a valid school URL and consumes 1 credit per request. ```python import asyncio from proxycurl.asyncio import Proxycurl proxycurl = Proxycurl() # Get school profile school = asyncio.run(proxycurl.linkedin.school.get( url='https://www.linkedin.com/school/stanford-university/' )) print(f"School: {school['name']}") print(f"Description: {school['description']}") print(f"Website: {school['website']}") print(f"Follower count: {school.get('follower_count')}") ``` -------------------------------- ### Lookup Person LinkedIn Profile URL with Proxycurl Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Finds a person's LinkedIn profile URL by using their name and company domain. This endpoint is useful for cases where only partial information is available. It can optionally filter by job title and location. Costs 2 credits per request. ```python import asyncio from proxycurl.asyncio import Proxycurl proxycurl = Proxycurl() # Lookup person by name and company lookup_result = asyncio.run(proxycurl.linkedin.person.resolve( first_name='bill', last_name='gates', company_domain='microsoft.com', title='Co-founder', # Optional: filter by job title location='Seattle' # Optional: filter by location )) if lookup_result and lookup_result.get('url'): print(f"Found profile: {lookup_result['url']}") print(f"Similarity score: {lookup_result.get('name_similarity_score')}") ``` -------------------------------- ### Lookup Personal Email Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Retrieves personal email addresses linked to social media profiles. Includes options for email validation levels and result pagination. ```python import asyncio from proxycurl.asyncio import Proxycurl proxycurl = Proxycurl() emails = asyncio.run(proxycurl.linkedin.person.personal_email( linkedin_profile_url='https://www.linkedin.com/in/williamhgates/', email_validation='fast', page_size=5 )) ``` -------------------------------- ### Lookup Company Source: https://github.com/nubelaco/proxycurl-py-linkedin-profile-scraper/blob/main/README.md Resolves company information based on a provided company name or domain. It uses the Company Lookup API endpoint. ```python company_lookup_results = asyncio.run(proxycurl.linkedin.company.resolve(company_name="microsoft", company_domain="microsoft.com")) print('Company Lookup Result:', company_lookup_results) ``` -------------------------------- ### Lookup Person Source: https://github.com/nubelaco/proxycurl-py-linkedin-profile-scraper/blob/main/README.md Searches for a person's profile using their name and company information. This utilizes the Person Lookup API endpoint. ```python lookup_results = asyncio.run(proxycurl.linkedin.person.resolve(first_name="bill", last_name="gates", company_domain="microsoft")) print('Person Lookup Result:', lookup_results) ``` -------------------------------- ### Company Lookup API Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Resolve a company's LinkedIn profile URL or fetch its profile data using its name or domain. This endpoint costs credits per successful request. ```APIDOC ## POST /linkedin/company/resolve ### Description Resolves a LinkedIn company profile URL or fetches company data based on its name or domain. ### Method POST ### Endpoint /linkedin/company/resolve ### Parameters #### Query Parameters - **company_domain** (string) - Optional - The domain of the company (e.g., 'microsoft.com'). - **company_name** (string) - Optional - The name of the company (e.g., 'Apple'). - **company_location** (string) - Optional - The ISO 3166-1 alpha-2 code for the company's location (e.g., 'US'). - **enrich_profile** (string) - Optional - Set to 'enrich' to include full company profile data. Costs additional credits. ### Request Example ```json { "example": "{\"company_domain\": \"microsoft.com\"}" } ``` ### Response #### Success Response (200) - **url** (string) - The LinkedIn profile URL of the company. - **profile** (object) - Contains the company's profile data if `enrich_profile` is set to 'enrich'. #### Response Example ```json { "example": "{\"url\": \"https://www.linkedin.com/company/microsoft/\", \"profile\": {\"name\": \"Microsoft\", \"industry\": \"Computer Software\"}}" } ``` ``` -------------------------------- ### Profile Enrichment API Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Lookup and enrich a LinkedIn person's profile with detailed information. This endpoint costs credits based on the enrichment level. ```APIDOC ## POST /linkedin/person/resolve ### Description Resolves a LinkedIn profile URL or fetches profile data based on provided identifiers and enriches it with full profile details. ### Method POST ### Endpoint /linkedin/person/resolve ### Parameters #### Query Parameters - **first_name** (string) - Required - The first name of the person. - **last_name** (string) - Required - The last name of the person. - **company_domain** (string) - Optional - The domain of the person's current company. - **enrich_profile** (string) - Optional - Set to 'enrich' to include full profile data. Costs additional credits. - **similarity_checks** (string) - Optional - Set to 'include' to perform similarity checks for result validation. ### Request Example ```json { "example": "{\"first_name\": \"satya\", \"last_name\": \"nadella\", \"company_domain\": \"microsoft.com\", \"enrich_profile\": \"enrich\", \"similarity_checks\": \"include\"}" } ``` ### Response #### Success Response (200) - **profile** (object) - Contains the enriched profile data including full name, headline, etc. #### Response Example ```json { "example": "{\"profile\": {\"full_name\": \"Satya Nadella\", \"headline\": \"Chairman and CEO at Microsoft\"}}" } ``` ``` -------------------------------- ### Lookup Personal Contact Number Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Fetches personal phone numbers associated with LinkedIn or Facebook profiles. Allows limiting the number of results returned per request. ```python import asyncio from proxycurl.asyncio import Proxycurl proxycurl = Proxycurl() contacts = asyncio.run(proxycurl.linkedin.person.personal_contact( linkedin_profile_url='https://www.linkedin.com/in/williamhgates/', page_size=3 )) ``` -------------------------------- ### Work Email Lookup API Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Extract verified work email addresses from a LinkedIn profile. This endpoint guarantees high deliverability and costs credits per request. ```APIDOC ## POST /linkedin/person/lookup_email ### Description Extracts work email addresses associated with a given LinkedIn profile URL. ### Method POST ### Endpoint /linkedin/person/lookup_email ### Parameters #### Query Parameters - **linkedin_profile_url** (string) - Required - The LinkedIn profile URL. - **callback_url** (string) - Optional - A webhook URL to receive the result asynchronously. ### Request Example ```json { "example": "{\"linkedin_profile_url\": \"https://www.linkedin.com/in/williamhgates/\"}" } ``` ### Response #### Success Response (200) - **email_queue_count** (integer) - The number of emails currently in the queue for processing. #### Response Example ```json { "example": "{\"email_queue_count\": 5}" } ``` ``` -------------------------------- ### Reverse Email Lookup Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Finds social media profiles associated with a given email address. Supports both work and personal emails with adjustable lookup depth and enrichment options. ```python import asyncio from proxycurl.asyncio import Proxycurl proxycurl = Proxycurl() result = asyncio.run(proxycurl.linkedin.person.resolve_by_email( email='satya.nadella@microsoft.com', lookup_depth='deep' )) ``` -------------------------------- ### Enrich Company Profile Source: https://github.com/nubelaco/proxycurl-py-linkedin-profile-scraper/blob/main/README.md Retrieves full company profile data using a LinkedIn Company Profile URL. It uses the Proxycurl Company Profile API endpoint. ```python company = asyncio.run(proxycurl.linkedin.company.get( url='https://www.linkedin.com/company/tesla-motors' )) print('Company Result:', company) ``` -------------------------------- ### Lookup LinkedIn Profile from Work Email Source: https://github.com/nubelaco/proxycurl-py-linkedin-profile-scraper/blob/main/README.md Finds a LinkedIn profile URL associated with a specific work email address. This uses the Reverse Work Email Lookup endpoint. ```python lookup_results = asyncio.run(proxycurl.linkedin.person.resolve_by_email(work_email="anthony.tan@grab.com")) print('Reverse Work Email Lookup Result:', lookup_results) ``` -------------------------------- ### Personal Contact Number Lookup API Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Retrieve personal phone numbers associated with a social media profile. Costs credits per number returned. ```APIDOC ## POST /linkedin/person/personal_contact ### Description Finds personal phone numbers associated with a social media profile. ### Method POST ### Endpoint /linkedin/person/personal_contact ### Parameters #### Query Parameters - **linkedin_profile_url** (string) - Optional - The LinkedIn profile URL. - **facebook_profile_url** (string) - Optional - The Facebook profile URL. - **page_size** (integer) - Optional - Limits the maximum number of phone numbers to return. ### Request Example ```json { "example": "{\"linkedin_profile_url\": \"https://www.linkedin.com/in/williamhgates/\", \"page_size\": 3}" } ``` ### Response #### Success Response (200) - **numbers** (array) - A list of personal phone numbers found. #### Response Example ```json { "example": "{\"numbers\": [\"+1-XXX-XXX-XXXX\", \"+44-XXX-XXXXXXX\"]}" } ``` ``` -------------------------------- ### Resolve Company Profile Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Resolves a company's LinkedIn profile URL using a domain or name. It supports location filtering and full profile enrichment for detailed data retrieval. ```python import asyncio from proxycurl.asyncio import Proxycurl proxycurl = Proxycurl() # Lookup by company domain company_lookup = asyncio.run(proxycurl.linkedin.company.resolve( company_domain='microsoft.com' )) # Lookup by company name with location filter company_lookup = asyncio.run(proxycurl.linkedin.company.resolve( company_name='Apple', company_location='US', enrich_profile='enrich' )) ``` -------------------------------- ### Reverse Email Lookup API Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Find LinkedIn and other social media profiles associated with a given email address. This endpoint costs credits per successful request. ```APIDOC ## POST /linkedin/person/resolve_by_email ### Description Finds LinkedIn and social media profiles linked to a provided email address. ### Method POST ### Endpoint /linkedin/person/resolve_by_email ### Parameters #### Query Parameters - **email** (string) - Required - The email address to look up. - **lookup_depth** (string) - Optional - Specifies the depth of the lookup. Use 'deep' for work emails (recommended) or 'superficial' (no charge if no results). - **enrich_profile** (string) - Optional - Set to 'enrich' to include full profile data. Costs additional credits. ### Request Example ```json { "example": "{\"email\": \"satya.nadella@microsoft.com\", \"lookup_depth\": \"deep\", \"enrich_profile\": \"enrich\"}" } ``` ### Response #### Success Response (200) - **linkedin_profile_url** (string) - The LinkedIn profile URL if found. - **twitter_profile_url** (string) - The Twitter profile URL if found. - **facebook_profile_url** (string) - The Facebook profile URL if found. - **profile** (object) - Contains the enriched profile data if `enrich_profile` is set to 'enrich'. #### Response Example ```json { "example": "{\"linkedin_profile_url\": \"https://www.linkedin.com/in/satyanadella/\", \"twitter_profile_url\": \"https://twitter.com/satyanadella\", \"facebook_profile_url\": null, \"profile\": {\"full_name\": \"Satya Nadella\"}}" } ``` ``` -------------------------------- ### Lookup Work Email Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Extracts verified work email addresses from a LinkedIn profile URL. Supports asynchronous processing via webhooks for long-running requests. ```python import asyncio from proxycurl.asyncio import Proxycurl proxycurl = Proxycurl() email_result = asyncio.run(proxycurl.linkedin.person.lookup_email( linkedin_profile_url='https://www.linkedin.com/in/williamhgates/', callback_url='https://yourserver.com/webhook' )) ``` -------------------------------- ### Personal Email Lookup API Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Find personal email addresses associated with a social media profile. Costs credits per email returned, with options for validation levels. ```APIDOC ## POST /linkedin/person/personal_email ### Description Finds personal email addresses linked to a social media profile. ### Method POST ### Endpoint /linkedin/person/personal_email ### Parameters #### Query Parameters - **linkedin_profile_url** (string) - Optional - The LinkedIn profile URL. - **twitter_profile_url** (string) - Optional - The Twitter profile URL. - **email_validation** (string) - Optional - Level of email validation: 'none', 'fast', or 'precise' (costs +1 credit/email). - **page_size** (integer) - Optional - Limits the number of results to control credit usage. ### Request Example ```json { "example": "{\"linkedin_profile_url\": \"https://www.linkedin.com/in/williamhgates/\", \"email_validation\": \"fast\", \"page_size\": 5}" } ``` ### Response #### Success Response (200) - **emails** (array) - A list of valid personal email addresses found. - **invalid_emails** (array) - A list of email addresses that were found but deemed invalid. #### Response Example ```json { "example": "{\"emails\": [\"example1@domain.com\"], \"invalid_emails\": [\"invalid@domain.com\"]}" } ``` ``` -------------------------------- ### Resolve LinkedIn Person Profile Source: https://context7.com/nubelaco/proxycurl-py-linkedin-profile-scraper/llms.txt Uses the person resolve endpoint to find a LinkedIn profile by name and company domain. Supports optional profile enrichment and similarity checks for higher accuracy. ```python import asyncio from proxycurl.asyncio import Proxycurl proxycurl = Proxycurl() lookup_enriched = asyncio.run(proxycurl.linkedin.person.resolve( first_name='satya', last_name='nadella', company_domain='microsoft.com', enrich_profile='enrich', similarity_checks='include' )) if lookup_enriched and lookup_enriched.get('profile'): profile = lookup_enriched['profile'] print(f"Found: {profile['full_name']} - {profile['headline']}") ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.