Metadata-Version: 2.4
Name: licium
Version: 1.1.1
Summary: Clean rows from public web pages that break ordinary scrapers. Python client and CLI for the Licium catalog.
Project-URL: Homepage, https://www.licium.ai/for-agents
Project-URL: Documentation, https://www.licium.ai/llms.txt
Author-email: Licium <hello@licium.ai>
License: MIT License
        
        Copyright (c) 2026 Licium AI
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
License-File: LICENSE
Keywords: api-client,csv,data-extraction,dataset,public-records,web-scraping
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: requests>=2.25
Description-Content-Type: text/markdown

# licium

Clean rows from public web pages that break ordinary scrapers: careers boards, supplier
directories, license registries, government notice boards, and PDF lists.

Every row names the page it came from and the date that page was read. Every count says
how it was checked. Sources that cannot currently be read are listed as broken instead
of being quietly dropped.

No signup is needed. Reading the catalog, taking rows, and queuing a page all work
without a key. An optional key raises the daily allowance.

## Install

```bash
pip install licium
```

## Client

```python
from licium import Licium

client = Licium()

# See what is maintained and how fresh it is.
sources = client.list_sources(q="bids", status="live")

# Take rows as JSON-compatible dictionaries or as CSV text.
source_id = sources["data"][0]["source_id"]
rows = client.get_rows(source_id)
csv_text = client.get_rows_csv(source_id)

# Ask for a public page that is not covered yet and wait for its final state.
result = client.request_and_wait(
    "https://example.gov/bids",
    ["title", "due_date", "url"],
)
```

`request_and_wait` returns the final state instead of raising when a request is declined
or when the timeout expires. Both are results that a caller can branch on.

Pass `api_key="..."` to the client or set `LICIUM_API_KEY`. Use `base_url="..."` to
point the client at another deployment.

## CLI

```bash
licium sources --q hospital
licium rows aabb.org__accredited-facilities --csv > facilities.csv
licium request https://example.gov/bids --fields title,url --wait
licium poll <request-id>
```

Exit codes are `0` for a completed command, `1` for an error, and `2` when `--wait`
reaches its timeout while the request is still queued.

## Also available

- Agent guide: <https://www.licium.ai/for-agents>
- Machine-readable: `/llms.txt`, `/.well-known/agent-card.json`,
  `/.well-known/ai-catalog.json`

## License

MIT
