API Documentation
LobbyView
This module provides a Python interface to the LobbyView REST API. It uses the same endpoints and parameter names as outlined in the LobbyView REST API Documentation (https://rest-api.lobbyview.org/).
The LobbyView API provides comprehensive data on lobbying activities in the United States. This includes information on:
Legislators: Details about the individuals involved in the legislative process.
Bills: Information about proposed laws and their progress.
Clients: Data on the entities that lobbyists represent.
Reports: Detailed reports on lobbying activities.
Issues: Government issues/areas that get lobbied on.
Networks: Connections and relationships in lobbying.
Texts: Written documents related to lobbying.
Quarter-level networks: Lobbying networks on a quarterly basis.
Bill-client networks: Connections between bills and the clients they affect.
This module also defines several custom exceptions to handle errors that may occur when interacting with the LobbyView API.
- class LobbyView.BillClientNetworkResponse(data)
Bases:
LobbyViewResponseResponse class for bill-client network data.
- class LobbyView.BillResponse(data)
Bases:
LobbyViewResponseResponse class for bill data.
- class LobbyView.ClientResponse(data)
Bases:
LobbyViewResponseResponse class for client data.
- class LobbyView.IssueResponse(data)
Bases:
LobbyViewResponseResponse class for issue data.
- class LobbyView.LegislatorResponse(data)
Bases:
LobbyViewResponseResponse class for legislator data.
- class LobbyView.LobbyView(lobbyview_token, test_connection=True)
Bases:
objectMain class for interacting with the LobbyView API.
- bill_client_networks(congress_number=None, bill_chamber=None, bill_resolution_type=None, bill_number=None, bill_id=None, report_uuid=None, issue_ordi=None, client_uuid=None, page=1)
Gets bill-client network information from the LobbyView API based on the provided parameters. This API is private and requires special permission to access, users do not have access by default. Thus, trying to use this method without proper permissions will cause an UnauthorizedError to occur. If you are interested in this API, please contact the LobbyView team at lobbydata@gmail.com.
- Parameters:
congress_number (int) – Session of Congress
bill_id (str) – The unique identifier of the bill in the format [bill_chamber].[bill_number]-[congress_number] - examples: H.R.1174-114
bill_chamber (str) – Chamber of the legislative branch (Component of the bill_id composite key)
bill_resolution_type (str) – Bill type (Component of the bill_id composite key)
bill_number (int) – Bill number (Component of the bill_id composite key)
report_uuid (str) – Unique identifier of the report
issue_ordi (int) – The ordinal number (position) of the issue within the report. This is an integer value that represents the order in which the issue appears in the report. For example, if an issue has issue_ordi=2, it means it is the second issue mentioned in the report.
client_uuid (str) – Unique identifier of the client
page (int) – Page number of the results, default is 1
- Returns:
BillClientNetworkResponse object containing the bill-client network data
>>> output = lobbyview.bill_client_networks(congress_number=114, bill_chamber="H", bill_number=1174, client_uuid="44563806-56d2-5e99-84a1-95d22a7a69b3", report_uuid="006bd48b-59cf-5cbc-99b8-fc213e509a86") >>> output.data [{'congress_number': 114, 'bill_chamber': 'H', 'bill_resolution_type': None, 'bill_number': 1174, 'report_uuid': '006bd48b-59cf-5cbc-99b8-fc213e509a86', 'issue_ordi': 2, 'client_uuid': '44563806-56d2-5e99-84a1-95d22a7a69b3'}]
>>> output = lobbyview.bill_client_networks(congress_number=114, bill_chamber="H", bill_resolution_type='C', report_uuid="00043607-ec6d-53a8-85b4-d418a64b423e") >>> output.data[0]['bill_number'] 125
>>> output = lobbyview.bill_client_networks(congress_number=114, bill_chamber="H", bill_number=1174, client_uuid="44563806-56d2-5e99-84a1-95d22a7a69b3", report_uuid="006bd48b-59cf-5cbc-99b8-fc213e509a86") >>> output.data[0]['issue_ordi'] 2
>>> output = lobbyview.bill_client_networks(report_uuid="006bd48b-59cf-5cbc-99b8-fc213e509a86", issue_ordi=2) >>> output.data[0]['bill_number'] 1174
>>> output = lobbyview.bill_client_networks(congress_number=114, bill_chamber="H", bill_number=1174, client_uuid="44563806-56d2-5e99-84a1-95d22a7a69b3") >>> print(output) Bill-Client Networks: Bill Number: 1174, Client UUID: 44563806-56d2-5e99-84a1-95d22a7a69b3, Issue Ordinal number (position) of the issue within the report: 2 Bill Number: 1174, Client UUID: 44563806-56d2-5e99-84a1-95d22a7a69b3, Issue Ordinal number (position) of the issue within the report: 5 Bill Number: 1174, Client UUID: 44563806-56d2-5e99-84a1-95d22a7a69b3, Issue Ordinal number (position) of the issue within the report: 4 ...
>>> output = lobbyview.bill_client_networks(report_uuid='006bd48b-59cf-5cbc-99b8-fc213e509a86', issue_ordi=2) >>> print(output) Bill-Client Networks: Bill Number: 1174, Client UUID: 44563806-56d2-5e99-84a1-95d22a7a69b3, Issue Ordinal number (position) of the issue within the report: 2 Bill Number: 512, Client UUID: 44563806-56d2-5e99-84a1-95d22a7a69b3, Issue Ordinal number (position) of the issue within the report: 2
>>> output = lobbyview.bill_client_networks(bill_chamber="H", bill_resolution_type='C', congress_number=116, page=2) >>> print(output.page_info()['current_page']) 2 >>> output = lobbyview.bill_client_networks(bill_id="H.R.1174-114") >>> print(output.page_info()['total_pages']) 3
- bills(congress_number=None, bill_chamber=None, bill_resolution_type=None, bill_number=None, bill_state=None, legislator_id=None, min_introduced_date=None, max_introduced_date=None, min_updated_date=None, max_updated_date=None, page=1)
Gets bill information from the LobbyView API based on the provided parameters.
- Parameters:
congress_number (int) – Session of Congress
bill_chamber (str) – Chamber of the legislative branch (Component of the bill_id composite key)
bill_resolution_type (str) – Bill type (Component of the bill_id composite key)
bill_number (int) – Bill number (Component of the bill_id composite key)
bill_state (str) – Bill status - using partial match with ilike operator (PostgreSQL). Examples: REFERRED, PASSED:SIMPLERES, REPORTED, ENACTED:SIGNED, PASS_OVER:HOUSE
legislator_id (str) – Sponsor of the bill
min_introduced_date (str) – Minimum date of introduction to Congress (YYYY-MM-DD)
max_introduced_date (str) – Maximum date of introduction to Congress (YYYY-MM-DD)
min_updated_date (str) – Minimum date of most recent status change (YYYY-MM-DD)
max_updated_date (str) – Maximum date of most recent status change (YYYY-MM-DD)
page (int) – Page number of the results, default is 1
- Returns:
BillResponse object containing the bill data
>>> output = lobbyview.bills(congress_number=111, bill_chamber="H", bill_number=4173) >>> output.data [{'congress_number': 111, 'bill_chamber': 'H', 'bill_resolution_type': None, 'bill_number': 4173, 'bill_introduced_datetime': '2009-12-02', 'bill_date_updated': '2016-06-29', 'bill_state': 'ENACTED:SIGNED', 'legislator_id': 'F000339', 'bill_url': 'https://congress.gov/bill/111th-congress/house-bill/4173'}]
>>> output = lobbyview.bills(congress_number=111, bill_chamber="H", bill_number=4173) >>> output.data[0]['bill_state'] 'ENACTED:SIGNED'
>>> output = lobbyview.bills(congress_number=111, bill_chamber="H", bill_number=4173, bill_resolution_type=None, bill_state="ENACTED:SIGNED", legislator_id="F000339", min_introduced_date="2009-12-01", max_introduced_date="2009-12-03", min_updated_date="2016-06-28", max_updated_date="2016-06-30") >>> output.data[0]['bill_url'] 'https://congress.gov/bill/111th-congress/house-bill/4173'
>>> output = lobbyview.bills(congress_number=111, bill_chamber="H", bill_number=4173) >>> print(output) Bills: 4173 (Congress: 111, Sponsor: F000339)
>>> output = lobbyview.bills(congress_number=116, bill_resolution_type="R", bill_number=400, legislator_id="R000595") >>> print(output) Bills: 400 (Congress: 116, Sponsor: R000595)
>>> output = lobbyview.bills(min_introduced_date="2020-01-01", page=10) >>> print(output.page_info()['current_page']) 10
- clients(client_uuid=None, client_name=None, min_naics=None, max_naics=None, naics_description=None, page=1)
Gets client information from the LobbyView API based on the provided parameters.
NAICS (North American Industry Classification System) codes are hierarchical, with the first few digits representing the industry and subindustry. For example, NAICS codes starting with the same first 3 digits belong to the same industry, and codes starting with the same first 4 digits belong to the same subindustry.
When specifying the min_naics and max_naics parameters, keep in mind the hierarchical nature of NAICS codes. For instance, setting min_naics to ‘41’ and max_naics to ‘42’ will include all NAICS codes starting with ‘41’ and ‘42’, such as ‘412’, ‘413’, etc. NOT FULLY IMPLEMENTED YET
- Parameters:
client_uuid (str) – Unique identifier of the client
client_name (str) – Name of the client - using partial match with ilike operator (PostgreSQL)
min_naics (str) – Minimum NAICS code to which the client belongs (e.g., ‘41’ for industry-level filtering)
max_naics (str) – Maximum NAICS code to which the client belongs (e.g., ‘42’ for industry-level filtering)
naics_description (str) – Descriptions of the NAICS code - using exact match with cs operator (PostgreSQL)
page (int) – Page number of the results, default is 1
- Returns:
ClientResponse object containing the client data
>>> output = lobbyview.clients(client_name="Microsoft Corporation", min_naics='51') >>> output.data [{'client_uuid': '44563806-56d2-5e99-84a1-95d22a7a69b3', 'client_name': 'Microsoft Corporation', 'primary_naics': '511210', 'naics_description': ['Applications development and publishing, except on a custom basis', 'Applications software, computer, packaged', 'Computer software publishers, packaged', 'Computer software publishing and reproduction', 'Games, computer software, publishing', 'Operating systems software, computer, packaged', 'Packaged computer software publishers', 'Programming language and compiler software publishers, packaged', 'Publishers, packaged computer software', 'Software computer, packaged, publishers', 'Software publishers', 'Software publishers, packaged', 'Utility software, computer, packaged']}]
>>> output = lobbyview.clients(client_name="Microsoft Corporation") >>> output.data[0]['client_uuid'] '44563806-56d2-5e99-84a1-95d22a7a69b3'
>>> output = lobbyview.clients(client_uuid="44563806-56d2-5e99-84a1-95d22a7a69b3", min_naics='5112', max_naics='5113') >>> output.data[0]['client_name'] 'Microsoft Corporation'
>>> output = lobbyview.clients(client_name="Microsoft Corporation") >>> print(output) Clients: Microsoft Corporation (ID: 44563806-56d2-5e99-84a1-95d22a7a69b3) PCT Government Relations on behalf of Microsoft Corporation (ID: 62eb98f6-ea3a-542d-abdb-7d2fce94b4f8) Cornerstone Government Affairs obo Microsoft Corporation (ID: d6634602-1d0b-560d-b4ac-e04194782ad3)
>>> output = lobbyview.clients(client_uuid='44563806-56d2-5e99-84a1-95d22a7a69b3', min_naics='5112', max_naics='5113') >>> print(output) Clients: Microsoft Corporation (ID: 44563806-56d2-5e99-84a1-95d22a7a69b3)
>>> output = lobbyview.clients(max_naics="5112", page=2) >>> print(output.page_info()['current_page']) 2
>>> output = lobbyview.clients(client_uuid='44563806-56d2-5e99-84a1-95d22a7a69b3', naics_description='Applications software, computer, packaged') >>> print(output.page_info()['current_page']) 1
- get_data(query_string)
Sends a GET request to the LobbyView API with the provided query string. Returns the JSON response data.
- Parameters:
query_string (str) – Query string for the API endpoint
- Return dict:
JSON data from the API response
- Raises:
UnauthorizedError – If the API returns a 401 Unauthorized status code
TooManyRequestsError – If the API returns a 429 Too Many Requests status code
PartialContentError – If the API returns a 206 Partial Content status code
UnexpectedStatusCodeError – If the API returns an unexpected status code
RequestError – If an error occurs during the request
>>> lobbyview.get_data('/api/v1/invalid_endpoint') Traceback (most recent call last): ... exceptions.UnexpectedStatusCodeError: Unexpected status code: 404
>>> lobbyview.get_data('/api/v1/legislators?invalid_param=value') Traceback (most recent call last): ... exceptions.UnexpectedStatusCodeError: Unexpected status code: 504
>>> lobbyview_invalid = LobbyView("invalid_token", test_connection=False) Traceback (most recent call last): ... exceptions.UnauthorizedError: Unauthorized. Please check your API token and permissions.
>>> lobbyview_invalid = LobbyView("invalid_token_alsd2kjfa44hsd3feawol", test_connection=False) >>> lobbyview_invalid.get_data('/api/v1/legislators') Traceback (most recent call last): ... exceptions.UnauthorizedError: Unauthorized, status code: 401. Please check your API token and permissions.
- issues(report_uuid=None, issue_ordi=None, issue_code=None, gov_entity=None, page=1)
Gets issue information from the LobbyView API based on the provided parameters.
- Parameters:
report_uuid (str) – Unique identifier of the report
issue_ordi (int) – The ordinal number (position) of the issue within the report. This is an integer value that represents the order in which the issue appears in the report. For example, if an issue has issue_ordi=2, it means it is the second issue mentioned in the report.
issue_code (str) – General Issue Area Code (Section 15)
gov_entity (str) – House(s) of Congress and Federal agencies (Section 17) - using exact matching with cs operator (PostgreSQL)
page (int) – Page number of the results, default is 1
- Returns:
IssueResponse object containing the issue data
>>> output = lobbyview.issues(issue_code="TRD", report_uuid="00016ab3-2246-5af8-a68d-05af40dfde68", issue_ordi=2) >>> output.data [{'report_uuid': '00016ab3-2246-5af8-a68d-05af40dfde68', 'issue_ordi': 2, 'issue_code': 'TRD', 'gov_entity': ['HOUSE OF REPRESENTATIVES', 'SENATE']}]
>>> output = lobbyview.issues(issue_code="TRD") >>> output.data[0]['report_uuid'] '00016ab3-2246-5af8-a68d-05af40dfde68'
>>> output = lobbyview.issues(issue_code="TRD") >>> print(output) Issues: TRD (Report UUID: 00016ab3-2246-5af8-a68d-05af40dfde68, Issue Ordinal number (position) of the issue within the report: 2) TRD (Report UUID: 0001f9b9-84d7-5ceb-af03-8987bb76d593, Issue Ordinal number (position) of the issue within the report: 1) TRD (Report UUID: 00020868-67be-5975-955d-7ecab8d42e6e, Issue Ordinal number (position) of the issue within the report: 2) TRD (Report UUID: 00040172-6cda-5b31-8d83-9c1bcfd4b289, Issue Ordinal number (position) of the issue within the report: 1) TRD (Report UUID: 00047fc7-2207-5f3b-951d-692b9f35825b, Issue Ordinal number (position) of the issue within the report: 1) TRD (Report UUID: 000759fa-dc93-5849-b1e5-7aa751e86433, Issue Ordinal number (position) of the issue within the report: 4) ...
>>> output = lobbyview.issues(issue_code="TRD", page=2) >>> print(output.page_info()['current_page']) 2
>>> output = lobbyview.issues(report_uuid='00016ab3-2246-5af8-a68d-05af40dfde68', gov_entity='SENATE') >>> output.data [{'report_uuid': '00016ab3-2246-5af8-a68d-05af40dfde68', 'issue_ordi': 1, 'issue_code': 'SMB', 'gov_entity': ['SENATE', 'SMALL BUSINESS ADMINISTRATION', 'HOUSE OF REPRESENTATIVES']}, {'report_uuid': '00016ab3-2246-5af8-a68d-05af40dfde68', 'issue_ordi': 2, 'issue_code': 'TRD', 'gov_entity': ['HOUSE OF REPRESENTATIVES', 'SENATE']}]
- legislators(legislator_id=None, legislator_govtrack_id=None, legislator_first_name=None, legislator_last_name=None, legislator_full_name=None, legislator_gender=None, birthday=None, min_birthday=None, max_birthday=None, page=1)
Gets legislator information from the LobbyView API based on the provided parameters.
- Parameters:
legislator_id (str) – Unique identifier of the legislator from LobbyView (Bioguide ID)
legislator_govtrack_id (str) – Unique identifier of the legislator from GovTrack
legislator_first_name (str) – First name of the legislator - using partial match with ilike operator (PostgreSQL)
legislator_last_name (str) – Last name of the legislator - using partial match with ilike operator (PostgreSQL)
legislator_full_name (str) – Full name of the legislator (First Middle Last) - using partial match with ilike operator (PostgreSQL)
legislator_gender (str) – Gender of the legislator
birthday (str) – Exact birthday of the legislator (YYYY-MM-DD)
min_birthday (str) – Minimum birthday of the legislator (YYYY-MM-DD)
max_birthday (str) – Maximum birthday of the legislator (YYYY-MM-DD)
page (int) – Page number of the results, default is 1
- Returns:
LegislatorResponse object containing the legislator data
>>> output = lobbyview.legislators(legislator_id="M000303") >>> output.data [{'legislator_id': 'M000303', 'legislator_govtrack_id': '300071', 'legislator_other_ids': {'fec': ['S6AZ00019', 'P80002801'], 'lis': 'S197', 'cspan': 7476, 'icpsr': 15039, 'thomas': '00754', 'bioguide': 'M000303', 'govtrack': 300071, 'maplight': 592, 'wikidata': 'Q10390', 'votesmart': 53270, 'wikipedia': 'John McCain', 'ballotpedia': 'John McCain', 'opensecrets': 'N00006424', 'house_history': 17696, 'google_entity_id': 'kg:/m/0bymv'}, 'legislator_first_name': 'John', 'legislator_last_name': 'McCain', 'legislator_full_name': 'John McCain', 'legislator_other_names': {'last': 'McCain', 'first': 'John', 'middle': 'S.', 'official_full': 'John McCain'}, 'legislator_birthday': '1936-08-29', 'legislator_gender': 'M'}]
>>> output = lobbyview.legislators(legislator_first_name="John", legislator_last_name="McCain") >>> output.data[0]['legislator_id'] 'M000303'
>>> output = lobbyview.legislators(legislator_id="M000303", birthday="1936-08-29", min_birthday="1950-08-28") >>> output.data[0]['legislator_full_name'] 'John McCain'
>>> output = lobbyview.legislators(legislator_first_name="John", legislator_last_name="McCain") >>> print(output) Legislators: John McCain (ID: M000303)
>>> output = lobbyview.legislators(legislator_govtrack_id=412755, legislator_full_name="TJ Cox", legislator_gender="M", min_birthday="1963-03-14", max_birthday="1963-08-14") >>> print(output) Legislators: TJ Cox (ID: C001124)
>>> output = lobbyview.legislators(legislator_first_name="John", page=2) >>> print(output.page_info()['current_page']) 2
- networks(client_uuid=None, legislator_id=None, report_year=None, min_report_year=None, max_report_year=None, min_bills_sponsored=None, max_bills_sponsored=None, page=1)
Gets network information from the LobbyView API based on the provided parameters.
- Parameters:
client_uuid (str) – Unique identifier of the client
legislator_id (str) – Unique identifier of the legislator
report_year (int) – Year of the report
min_report_year (int) – Minimum year of the report
max_report_year (int) – Maximum year of the report
min_bills_sponsored (int) – Minimum number of bills sponsored by the legislator in a specific year lobbied by the client
max_bills_sponsored (int) – Maximum number of bills sponsored by the legislator in a specific year lobbied by the client
page (int) – Page number of the results, default is 1
- Returns:
NetworkResponse object containing the network data
>>> output = lobbyview.networks(client_uuid="44563806-56d2-5e99-84a1-95d22a7a69b3", legislator_id="M000303") >>> output.data [{'client_uuid': '44563806-56d2-5e99-84a1-95d22a7a69b3', 'legislator_id': 'M000303', 'report_year': 2006, 'n_bills_sponsored': 1}, {'client_uuid': '44563806-56d2-5e99-84a1-95d22a7a69b3', 'legislator_id': 'M000303', 'report_year': 2017, 'n_bills_sponsored': 1}]
>>> output = lobbyview.networks(client_uuid="44563806-56d2-5e99-84a1-95d22a7a69b3", legislator_id="M000303") >>> output.data[0]['report_year'] 2006
>>> output = lobbyview.networks(client_uuid="44563806-56d2-5e99-84a1-95d22a7a69b3", legislator_id="M000303", min_report_year=2016, max_report_year=2018, min_bills_sponsored=0, max_bills_sponsored=2) >>> output.data[0]['n_bills_sponsored'] 1
>>> output = lobbyview.networks(client_uuid="44563806-56d2-5e99-84a1-95d22a7a69b3", legislator_id="M000303", report_year=2006) >>> output.data[0]['n_bills_sponsored'] 1
>>> output = lobbyview.networks(client_uuid="44563806-56d2-5e99-84a1-95d22a7a69b3", legislator_id="M000303") >>> print(output) Networks: Client UUID: 44563806-56d2-5e99-84a1-95d22a7a69b3, Legislator ID: M000303, Year: 2006, Bills Sponsored: 1 Client UUID: 44563806-56d2-5e99-84a1-95d22a7a69b3, Legislator ID: M000303, Year: 2017, Bills Sponsored: 1
>>> output = lobbyview.networks(min_report_year=2016, max_report_year=2018, min_bills_sponsored=0, max_bills_sponsored=2, client_uuid="44563806-56d2-5e99-84a1-95d22a7a69b3", legislator_id="M000303") >>> print(output) Networks: Client UUID: 44563806-56d2-5e99-84a1-95d22a7a69b3, Legislator ID: M000303, Year: 2017, Bills Sponsored: 1
>>> output = lobbyview.networks(min_bills_sponsored=50, page=2) >>> print(output.page_info()['current_page']) 2
- paginate(func, **kwargs)
Paginates the data retrieval from the LobbyView API using lazy evaluation via a generator that yields results one at a time.
- Parameters:
func (function) – The API endpoint function to be paginated.
kwargs (dict) – Additional keyword arguments to be passed to the API endpoint function.
- Returns:
A generator object that yields paginated results one item at a time.
- Raises:
PartialContentError – If the API returns a 206 Partial Content status code
LobbyViewError – If a different error occurs during pagination
>>> for legislator in lobbyview.paginate(lobbyview.legislators, legislator_first_name="John", legislator_last_name="McCain"): ... print(f"Legislator: {legislator['legislator_full_name']}") Retrieving page 1... Legislator: John McCain
>>> for bill in lobbyview.paginate(lobbyview.bills, congress_number=111, bill_chamber="H", bill_number=4173): ... print(f"Bill: {bill['bill_number']} - {bill['bill_chamber']}") Retrieving page 1... Bill: 4173 - H
>>> for client in lobbyview.paginate(lobbyview.clients, client_name='InvalidClientName'): ... print(f"Client: {client['client_name']} - NAICS: {client['primary_naics']}") Traceback (most recent call last): ... exceptions.InvalidPageNumberError: Invalid page number: 1, total pages: 0
>>> for network in lobbyview.paginate(lobbyview.bill_client_networks, congress_number=114, bill_chamber="H", bill_number=1174, client_uuid="44563806-56d2-5e99-84a1-95d22a7a69b3"): ... print(f"Issue Ordinal number (position) of the issue within the report: {network['issue_ordi']}") Retrieving page 1... Issue Ordinal number (position) of the issue within the report: 2 Issue Ordinal number (position) of the issue within the report: 5 Issue Ordinal number (position) of the issue within the report: 4 ...
>>> for text in lobbyview.paginate(lobbyview.texts, issue_code="HCR", issue_text="covid"): ... print(f"Issue Code: {text['issue_code']}") Retrieving page 1... Issue Code: HCR Issue Code: HCR ... Issue Code: HCR Retrieving page 2... Issue Code: HCR Issue Code: HCR ...
- quarter_level_networks(client_uuid=None, legislator_id=None, report_year=None, min_report_year=None, max_report_year=None, report_quarter_code=None, min_report_quarter_code=None, max_report_quarter_code=None, min_bills_sponsored=None, max_bills_sponsored=None, page=1)
Gets quarter-level network information from the LobbyView API based on the provided parameters. This API is private and requires special permission to access, users do not have access by default. Thus, trying to use this method without proper permissions will cause an UnauthorizedError to occur. If you are interested in this API, please contact the LobbyView team at lobbydata@gmail.com.
- Parameters:
client_uuid (str) – Unique identifier of the client
legislator_id (str) – Unique identifier of the legislator
report_year (int) – Year of the report
min_report_year (int) – Minimum year of the report
max_report_year (int) – Maximum year of the report
report_quarter_code (int) – Quarter period of the report (returns quarter as string)
min_report_quarter_code (int) – Minimum quarter period of the report (returns quarter as string)
max_report_quarter_code (int) – Maximum quarter period of the report (returns quarter as string)
min_bills_sponsored (int) – Minimum number of bills sponsored by the legislator in a specific quarter lobbied by the client
max_bills_sponsored (int) – Maximum number of bills sponsored by the legislator in a specific quarter lobbied by the client
page (int) – Page number of the results, default is 1
- Returns:
QuarterLevelNetworkResponse object containing the quarter-level network data
>>> output = lobbyview.quarter_level_networks(client_uuid="44563806-56d2-5e99-84a1-95d22a7a69b3", legislator_id="M000303", report_year=2017, report_quarter_code=4) >>> output.data [{'client_uuid': '44563806-56d2-5e99-84a1-95d22a7a69b3', 'legislator_id': 'M000303', 'report_year': 2017, 'report_quarter_code': '4', 'n_bills_sponsored': 1}]
>>> output = lobbyview.quarter_level_networks(client_uuid="44563806-56d2-5e99-84a1-95d22a7a69b3", legislator_id="M000303", report_year=2017, report_quarter_code=4) >>> output.data[0]['n_bills_sponsored'] 1
>>> output = lobbyview.quarter_level_networks(client_uuid="44563806-56d2-5e99-84a1-95d22a7a69b3", legislator_id="M000303", report_year=2017, report_quarter_code=4, min_report_quarter_code=9, max_report_quarter_code=-2) >>> output.data[0]['n_bills_sponsored'] 1
>>> output = lobbyview.quarter_level_networks(client_uuid="44563806-56d2-5e99-84a1-95d22a7a69b3", legislator_id="M000303", report_year=2017, min_report_quarter_code=3, max_report_quarter_code=5) >>> output.data[0]['n_bills_sponsored'] 1
>>> output = lobbyview.quarter_level_networks(client_uuid="44563806-56d2-5e99-84a1-95d22a7a69b3", legislator_id="M000303", report_year=2017, min_report_year=2030, max_report_year=2000) >>> output.data[0]['n_bills_sponsored'] 1
>>> output = lobbyview.quarter_level_networks(client_uuid="44563806-56d2-5e99-84a1-95d22a7a69b3", legislator_id="M000303", min_report_year=2016, max_report_year=2018) >>> output.data[0]['n_bills_sponsored'] 1
>>> output = lobbyview.quarter_level_networks(client_uuid="44563806-56d2-5e99-84a1-95d22a7a69b3", legislator_id="M000303", report_year=2017, min_bills_sponsored=0, max_bills_sponsored=2) >>> output.data[0]['report_quarter_code'] '4'
>>> output = lobbyview.quarter_level_networks(client_uuid="44563806-56d2-5e99-84a1-95d22a7a69b3", legislator_id="M000303", report_year=2017, report_quarter_code=4) >>> print(output) Quarter-Level Networks: Client UUID: 44563806-56d2-5e99-84a1-95d22a7a69b3, Legislator ID: M000303, Year: 2017, Quarter: 4, Bills Sponsored: 1
>>> output = lobbyview.quarter_level_networks(min_bills_sponsored=0, max_bills_sponsored=2, client_uuid="44563806-56d2-5e99-84a1-95d22a7a69b3", legislator_id="M000303") >>> print(output) Quarter-Level Networks: Client UUID: 44563806-56d2-5e99-84a1-95d22a7a69b3, Legislator ID: M000303, Year: 2006, Quarter: 34, Bills Sponsored: 1 Client UUID: 44563806-56d2-5e99-84a1-95d22a7a69b3, Legislator ID: M000303, Year: 2017, Quarter: 4, Bills Sponsored: 1
>>> output = lobbyview.quarter_level_networks(min_bills_sponsored=20, page=2) >>> print(output.page_info()['current_page']) 2
- reports(report_uuid=None, client_uuid=None, registrant_uuid=None, registrant_name=None, report_year=None, min_report_year=None, max_report_year=None, report_quarter_code=None, min_report_quarter_code=None, max_report_quarter_code=None, min_amount=None, max_amount=None, is_no_activity=None, is_client_self_filer=None, is_amendment=None, page=1)
Gets report information from the LobbyView API based on the provided parameters.
- Parameters:
report_uuid (str) – Unique identifier of the report
client_uuid (str) – Unique identifier of the client
registrant_uuid (str) – Unique identifier of the registrant
registrant_name (str) – Name of the registrant - using partial match with ilike operator (PostgreSQL)
report_year (int) – Year of the report
min_report_year (int) – Minimum year of the report
max_report_year (int) – Maximum year of the report
report_quarter_code (int) – Quarter period of the report (returns quarter as string)
min_report_quarter_code (int) – Minimum quarter period of the report (returns quarter as string)
max_report_quarter_code (int) – Maximum quarter period of the report (returns quarter as string)
min_amount (str) – Minimum lobbying firm income or lobbying expense (in-house)
max_amount (str) – Maximum lobbying firm income or lobbying expense (in-house)
is_no_activity (bool) – Quarterly activity indicator
is_client_self_filer (bool) – An organization employing its own in-house lobbyist(s)
is_amendment (bool) – Amendment of previous report
page (int) – Page number of the results, default is 1
- Returns:
ReportResponse object containing the report data
>>> output = lobbyview.reports(report_year=2020, report_quarter_code=2, is_client_self_filer=True, report_uuid="4b799814-3e94-5ee1-8dd4-b32aead9aca6") >>> output.data [{'report_uuid': '4b799814-3e94-5ee1-8dd4-b32aead9aca6', 'client_uuid': 'cdf5a171-6aab-50ea-912c-68c054decdce', 'registrant_uuid': '323adb44-3062-5a5f-98ea-6d4ca51e6f43', 'registrant_name': 'NATIONAL ASSOCIATION OF REALTORS', 'report_year': 2020, 'report_quarter_code': '2', 'amount': '$11,680,000.00', 'is_no_activity': False, 'is_client_self_filer': True, 'is_amendment': False}]
>>> output = lobbyview.reports(report_year=2020, report_quarter_code=2, is_client_self_filer=True, report_uuid="4b799814-3e94-5ee1-8dd4-b32aead9aca6") >>> output.data[0]['amount'] '$11,680,000.00'
>>> output = lobbyview.reports(report_year=2020, report_quarter_code=2, is_client_self_filer=True, report_uuid="4b799814-3e94-5ee1-8dd4-b32aead9aca6", min_report_quarter_code=5, max_report_quarter_code=0) >>> output.data[0]['amount'] '$11,680,000.00'
>>> output = lobbyview.reports(client_uuid="cdf5a171-6aab-50ea-912c-68c054decdce", registrant_uuid="323adb44-3062-5a5f-98ea-6d4ca51e6f43", registrant_name="NATIONAL ASSOCIATION OF REALTORS", min_amount="$11,679,999.99", max_amount="$11,680,000.01", is_no_activity=False, is_amendment=False, min_report_year=2017, max_report_year=2023) >>> output.data[0]['report_year'] 2020
>>> output = lobbyview.reports(client_uuid="cdf5a171-6aab-50ea-912c-68c054decdce", registrant_uuid="323adb44-3062-5a5f-98ea-6d4ca51e6f43", registrant_name="NATIONAL ASSOCIATION OF REALTORS", min_amount="$11,679,999.99", max_amount="$11,680,000.01", is_no_activity=False, is_amendment=False, report_year=2020, min_report_year=2040, max_report_year=1800) >>> output.data[0]['report_year'] 2020
>>> output = lobbyview.reports(report_year=2020, report_quarter_code=2, is_client_self_filer=True, report_uuid="4b799814-3e94-5ee1-8dd4-b32aead9aca6") >>> print(output) Reports: 4b799814-3e94-5ee1-8dd4-b32aead9aca6 (Year: 2020, Quarter: 2)
>>> output = lobbyview.reports(client_uuid="78043d66-6dc9-5d6c-b0ee-c3afaa33d8d7", report_year=2020, min_report_quarter_code=2, max_report_quarter_code=4, min_amount=150000) >>> print(output) Reports: e2fb926a-2ac5-5c5c-9140-54b4c79d7e56 (Year: 2020, Quarter: 2)
>>> output = lobbyview.reports(report_year=2020, page=2) >>> print(output.page_info()['current_page']) 2
- texts(report_uuid=None, issue_ordi=None, issue_code=None, issue_text=None, page=1)
Gets issue text data from the LobbyView API based on the provided parameters.
- Parameters:
report_uuid (str) – Unique identifier of the report
issue_ordi (int) – The ordinal number (position) of the issue within the report. This is an integer value that represents the order in which the issue appears in the report. For example, if an issue has issue_ordi=2, it means it is the second issue mentioned in the report.
issue_code (str) – General Issue Area Code (Section 15)
issue_text (str) – Specific lobbying issues (Section 16) - using partial match with ilike operator (PostgreSQL). Examples: Appropriations, House and Senate Defense Appropriations Bills, House and Senate Defense Authorization Bills, No lobbying activity., Health care funding and appropriations
page (int) – Page number of the results, default is 1
- Returns:
TextResponse object containing the text data
>>> output = lobbyview.texts(issue_code="HCR", issue_text="covid", report_uuid="000bef17-9f0a-5d7c-8660-edca16e1dfce") >>> output.data [{'report_uuid': '000bef17-9f0a-5d7c-8660-edca16e1dfce', 'issue_ordi': 1, 'issue_code': 'HCR', 'issue_text': 'HR 748 CARES Act - Issues related to COVID-19 relief'}]
>>> output = lobbyview.texts(issue_code="HCR", issue_text="covid") >>> output.data[0]['issue_ordi'] 1
>>> output = lobbyview.texts(issue_code="HCR", report_uuid="000bef17-9f0a-5d7c-8660-edca16e1dfce", issue_ordi=1) >>> output.data[0]['issue_text'] 'HR 748 CARES Act - Issues related to COVID-19 relief'
>>> output = lobbyview.texts(issue_code="HCR", issue_text="covid")
>>> print(output) Texts: Issue Code: HCR Issue Text: HR 748 CARES Act - Issues related to COVID-19 relief ...
>>> output = lobbyview.texts(report_uuid='000bef17-9f0a-5d7c-8660-edca16e1dfce', issue_ordi=1) >>> print(output) Texts: Issue Code: HCR Issue Text: HR 748 CARES Act - Issues related to COVID-19 relief
- class LobbyView.LobbyViewResponse(data)
Bases:
objectBase class for LobbyView API responses.
- page_info()
- Return str:
Current page number, total pages, and total rows
>>> data = { ... 'data': [], ... 'currentPage': 1, ... 'totalPage': 2, ... 'totalNumber': 0 ... } >>> response = LobbyViewResponse(data) >>> print(response.page_info()) {'current_page': 1, 'total_pages': 2, 'total_rows': 0}
- class LobbyView.NetworkResponse(data)
Bases:
LobbyViewResponseResponse class for network data.
- class LobbyView.QuarterLevelNetworkResponse(data)
Bases:
LobbyViewResponseResponse class for quarter-level network data.
- class LobbyView.ReportResponse(data)
Bases:
LobbyViewResponseResponse class for report data.
- class LobbyView.TextResponse(data)
Bases:
LobbyViewResponseResponse class for text data.
- LobbyView.url_quote(func)
Decorator function to quote string arguments in the function call.
- LobbyView.validate_token(func)
Decorator function to validate the LobbyView token.
Exceptions
(Sub)classes of LobbyViewError that represent different types of errors.
- exception exceptions.InvalidPageNumberError(current_page, total_pages)
Bases:
LobbyViewErrorRaised when the current page number is greater than the total number of pages.
- exception exceptions.LobbyViewError
Bases:
ExceptionBase class for LobbyView API errors.
- exception exceptions.PartialContentError(status_code)
Bases:
LobbyViewErrorRaised when the API returns a partial response.
- exception exceptions.RequestError
Bases:
LobbyViewErrorRaised when an error occurs during the request to the LobbyView API.
- exception exceptions.TooManyRequestsError(status_code)
Bases:
LobbyViewErrorRaised when the API rate limit is exceeded.
- exception exceptions.UnauthorizedError(status_code=None)
Bases:
LobbyViewErrorRaised when the API token is invalid or unauthorized.
- exception exceptions.UnexpectedStatusCodeError(status_code)
Bases:
LobbyViewErrorRaised when the API returns an unexpected status code.