Simple, pythonic wrapper for REGON database (web frontend is reachable at https://wyszukiwarkaregon.stat.gov.pl/appBIR/index.aspx). To access its SOAP API, one needs an USER_KEY issued by REGON administrators available at [email protected].
Usage example below:
>>> from litex.regon import REGONAPI
REGONAPI accepts one argument: service URL (provided by REGON Administrators).
>>> api = REGONAPI(SERVICE_URL)
First, one needs to log in (using provided user key)
>>> api.login(USER_KEY)
After login, one can start querying the database. The search method accepts the following parameters:
regon
- single REGON number (either 9 or 14 digits long)krs
- single 10 digit KRS numbernip
- single NIP (10 digits string)regons
- a collection of REGONs (all of them have to be either 14 or 9 digits long)krss
- a collection of KRSsnips
- a collection of NIPs
Only one parameter is used in the query. If multiple ones are passed, first from the above list is taken into account.
Additionally, a detailed
parameter can be passed: detailed=True
causes search method to
fetch default detailed report.
>>> entities = api.search(nip='9999999999')
entities
is a list of LXML objectify objects wrapping the search results (up to 100).
If search was called with detailed=True
, the full report is available as the detailed
attribute.
If one knows the REGON of a business entity and an detailed report name, a full report can be fetched directly:
>>> detailed_report = api.full_report('99999999', 'PublDaneRaportFizycznaOsoba')
Summary report with a list of REGONs for the given criteria can be fetched by:
>>> summary_report = api.summary_report(
'2020-01-01',
'BIR11NowePodmiotyPrawneOrazDzialalnosciOsFizycznych'
)
Report names can be found in the documentation provided by REGON admins.
- full_report and summary_report now raise REGONAPIError on empty result with detailed error information (thanks to @wolkiewiczk for suggestion)
- compatibility with requests >= 2.28 (thanks to @wolkiewiczk for spotting this)
- more meaningful error messages in search method (thanks @m-ganko)
- summary reports (also kudos to @m-ganko)
- reworked REGON cleanup logic (in search function, when fetching detailed report)
- search method now uses DaneSzukajPodmioty (API version 1.1) call instead of DaneSzukaj (thanks to @kicaj for pull request)
- migration from nose to py.test
- tox configuration for Python 2 and 3 testing
- improved handling of detailed reports (thanks to @miloszsobiczewski for logging an issue)
- Python 3.6 compatibility (thanks to Mariusz Witek)
- CAPTCHA removal -- no longer needed in current API
- detailed report fetching logic reworked
- initial release