---
name: cins-army-ingestion
description: "How to get CINS Army IP List data into a pandas DataFrame and Parquet: access, the request, the format, limits, quirks and terms."
---

# Load the CINS Army IP list into pandas and Parquet

Source entry: https://signal-lab-jet.vercel.app/datasets/cins-army
Provider: https://cinsscore.com/
Checked against the provider's documentation: 2026-11-01

## Access
- No account or key. The provider publishes a keyless plain-text file with one IP address per line.

## Request
```bash
curl 'https://cinsscore.com/list/ci-badguys.txt'
```

## Format
Plain text with one IPv4 address per line and no header, score, timestamp or reason field.

## Load into pandas and Parquet
Needs Python 3 with requests, pandas and pyarrow.
```python
"""CINS Army IP list -> pandas -> Parquet. No key."""
import ipaddress
import requests
import pandas as pd

URL = "https://cinsscore.com/list/ci-badguys.txt"
r = requests.get(URL, timeout=60)
r.raise_for_status()
ips = [line.strip() for line in r.text.splitlines()
       if line.strip() and not line.startswith("#")]
df = pd.DataFrame({"ip": ips})
df["ip_version"] = df["ip"].map(lambda value: ipaddress.ip_address(value).version)
df.to_parquet("cins_army.parquet", index=False)
print(len(df), "IP addresses", df["ip"].nunique(), "unique",
      int((df["ip_version"] == 4).sum()), "IPv4")
```
Run by us on 2026-11-01 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 15000 IP addresses 15000 unique 15000 IPv4

## Limits
- Rate limit: Not stated.
- The provider caps the list at 15,000 IP addresses.
- No historical snapshots are documented on the checked pages.

## Quirks
- The file has no header and supplies only IP addresses; it does not include CINS scores, observation times or listing reasons.
- Validate every line as an IP address before loading it into a firewall or matching system.
- Do not connect to listed hosts; use the downloaded feed only for defensive matching.

## Terms and attribution
- The provider says the text file may be parsed and used in any way the user sees fit.
- No attribution requirement is stated on the feed page.
- Terms page: https://cinsscore.com/

## Sources
- https://cinsscore.com/: "The link below is provided as a simple text file, with which you can parse and use in any way you see fit."
- https://cinsscore.com/: "capped the list (for now) at 15,000 IP addresses."
- https://cinsscore.com/: "Our CINS system is constantly gathering attack data from each of our Sentinel units in the field."

## Help improve this skill
Missing a source, or see something to improve? Call the MCP tool suggest_source or feedback (or POST /api/suggest or /api/feedback). Reviewed ideas: https://signal-lab-jet.vercel.app/agent-suggestions

Information for educational purposes only. Free tiers, limits and licenses belong to the providers and may change; check the provider's own terms before using the data.
