diff --git a/README.md b/README.md index e90d2166..51afa941 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ openai-playground | Scripts for accessing the openai API on PDAP's shared accoun source_collectors| Tools for extracting metadata from different sources, including CKAN data portals and Common Crawler collector_db | Database for storing data from source collectors collector_manager | A module which provides a unified interface for interacting with source collectors and relevant data +core | A module which integrates other components, such as collector_manager and collector_db ## How to use diff --git a/collector_db/BatchInfo.py b/collector_db/BatchInfo.py deleted file mode 100644 index 3e8c5ca8..00000000 --- a/collector_db/BatchInfo.py +++ /dev/null @@ -1,14 +0,0 @@ -from pydantic import BaseModel - - -class BatchInfo(BaseModel): - strategy: str - status: str - count: int = 0 - strategy_success_rate: float = None - metadata_success_rate: float = None - agency_match_rate: float = None - record_type_match_rate: float = None - record_category_match_rate: float = None - compute_time: int = None - parameters: dict = None \ No newline at end of file diff --git a/collector_db/DTOs/BatchInfo.py b/collector_db/DTOs/BatchInfo.py new file mode 100644 index 00000000..83cb79e2 --- /dev/null +++ b/collector_db/DTOs/BatchInfo.py @@ -0,0 +1,20 @@ +from datetime import datetime +from typing import Optional + +from pydantic import BaseModel + +from core.enums import BatchStatus + + +class BatchInfo(BaseModel): + strategy: str + status: BatchStatus + parameters: dict + count: int = 0 + strategy_success_rate: Optional[float] = None + metadata_success_rate: Optional[float] = None + agency_match_rate: Optional[float] = None + record_type_match_rate: Optional[float] = None + record_category_match_rate: Optional[float] = None + compute_time: Optional[float] = None + date_generated: Optional[datetime] = None diff --git a/collector_db/DTOs/DuplicateInfo.py b/collector_db/DTOs/DuplicateInfo.py new file mode 100644 index 00000000..4e01e965 --- /dev/null +++ b/collector_db/DTOs/DuplicateInfo.py @@ -0,0 +1,8 @@ +from pydantic import BaseModel + + +class DuplicateInfo(BaseModel): + source_url: str + original_url_id: int + duplicate_metadata: dict + original_metadata: dict \ No newline at end of file diff --git a/collector_db/DTOs/InsertURLsInfo.py b/collector_db/DTOs/InsertURLsInfo.py new file mode 100644 index 00000000..5fc7b3a8 --- /dev/null +++ b/collector_db/DTOs/InsertURLsInfo.py @@ -0,0 +1,9 @@ +from pydantic import BaseModel + +from collector_db.DTOs.DuplicateInfo import DuplicateInfo +from collector_db.DTOs.URLMapping import URLMapping + + +class InsertURLsInfo(BaseModel): + url_mappings: list[URLMapping] + duplicates: list[DuplicateInfo] \ No newline at end of file diff --git a/collector_db/DTOs/README.md b/collector_db/DTOs/README.md new file mode 100644 index 00000000..a21b92bf --- /dev/null +++ b/collector_db/DTOs/README.md @@ -0,0 +1 @@ +This directory consists of data transfer objects (DTOs) for the Source Collector Database. \ No newline at end of file diff --git a/collector_db/DTOs/URLInfo.py b/collector_db/DTOs/URLInfo.py new file mode 100644 index 00000000..553a76a9 --- /dev/null +++ b/collector_db/DTOs/URLInfo.py @@ -0,0 +1,13 @@ +from typing import Optional + +from pydantic import BaseModel + +from collector_manager.enums import URLOutcome + + +class URLInfo(BaseModel): + id: Optional[int] = None + batch_id: Optional[int] = None + url: str + url_metadata: Optional[dict] = None + outcome: URLOutcome = URLOutcome.PENDING diff --git a/collector_db/DTOs/URLMapping.py b/collector_db/DTOs/URLMapping.py new file mode 100644 index 00000000..38efbce4 --- /dev/null +++ b/collector_db/DTOs/URLMapping.py @@ -0,0 +1,6 @@ +from pydantic import BaseModel + + +class URLMapping(BaseModel): + url: str + url_id: int diff --git a/Tests/__init__.py b/collector_db/DTOs/__init__.py similarity index 100% rename from Tests/__init__.py rename to collector_db/DTOs/__init__.py diff --git a/collector_db/DatabaseClient.py b/collector_db/DatabaseClient.py index cba053ee..d56b07fb 100644 --- a/collector_db/DatabaseClient.py +++ b/collector_db/DatabaseClient.py @@ -1,60 +1,21 @@ from functools import wraps -from sqlalchemy import create_engine, Column, Integer, String, Float, Text, JSON, ForeignKey, CheckConstraint, TIMESTAMP, UniqueConstraint -from sqlalchemy.orm import declarative_base, sessionmaker, relationship -from typing import Optional, Dict, Any, List +from sqlalchemy import create_engine +from sqlalchemy.exc import IntegrityError +from sqlalchemy.orm import sessionmaker +from typing import Optional, List -from collector_db.BatchInfo import BatchInfo -from collector_db.URLInfo import URLInfo +from collector_db.DTOs.BatchInfo import BatchInfo +from collector_db.DTOs.DuplicateInfo import DuplicateInfo +from collector_db.DTOs.InsertURLsInfo import InsertURLsInfo +from collector_db.DTOs.URLMapping import URLMapping +from collector_db.DTOs.URLInfo import URLInfo +from collector_db.models import Base, Batch, URL +from core.enums import BatchStatus -# Base class for SQLAlchemy ORM models -Base = declarative_base() -# SQLAlchemy ORM models -class Batch(Base): - __tablename__ = 'batches' - - id = Column(Integer, primary_key=True) - strategy = Column(String, nullable=False) - status = Column(String, CheckConstraint("status IN ('in-process', 'complete', 'error')"), nullable=False) - count = Column(Integer, nullable=False) - date_generated = Column(TIMESTAMP, nullable=False, server_default="CURRENT_TIMESTAMP") - strategy_success_rate = Column(Float) - metadata_success_rate = Column(Float) - agency_match_rate = Column(Float) - record_type_match_rate = Column(Float) - record_category_match_rate = Column(Float) - compute_time = Column(Integer) - parameters = Column(JSON) - - urls = relationship("URL", back_populates="batch") - missings = relationship("Missing", back_populates="batch") - - -class URL(Base): - __tablename__ = 'urls' - - id = Column(Integer, primary_key=True) - batch_id = Column(Integer, ForeignKey('batches.id'), nullable=False) - url = Column(Text, unique=True) - url_metadata = Column(JSON) - outcome = Column(String) - created_at = Column(TIMESTAMP, nullable=False, server_default="CURRENT_TIMESTAMP") - batch = relationship("Batch", back_populates="urls") - - -class Missing(Base): - __tablename__ = 'missing' - - id = Column(Integer, primary_key=True) - place_id = Column(Integer, nullable=False) - record_type = Column(String, nullable=False) - batch_id = Column(Integer, ForeignKey('batches.id')) - strategy_used = Column(Text, nullable=False) - date_searched = Column(TIMESTAMP, nullable=False, server_default="CURRENT_TIMESTAMP") - - batch = relationship("Batch", back_populates="missings") +# SQLAlchemy ORM models # Database Client @@ -81,14 +42,40 @@ def wrapper(self, *args, **kwargs): self.session.close() self.session = None + return wrapper + @session_manager - def insert_batch(self, batch_info: BatchInfo) -> Batch: - """Insert a new batch into the database.""" + def insert_batch(self, batch_info: BatchInfo) -> int: + """Insert a new batch into the database and return its ID.""" batch = Batch( - **batch_info.model_dump() + strategy=batch_info.strategy, + status=batch_info.status.value, + parameters=batch_info.parameters, + count=batch_info.count, + compute_time=batch_info.compute_time, + strategy_success_rate=batch_info.strategy_success_rate, + metadata_success_rate=batch_info.metadata_success_rate, + agency_match_rate=batch_info.agency_match_rate, + record_type_match_rate=batch_info.record_type_match_rate, + record_category_match_rate=batch_info.record_category_match_rate, ) self.session.add(batch) - return batch + self.session.commit() + self.session.refresh(batch) + return batch.id + + @session_manager + def update_batch_post_collection( + self, + batch_id: int, + url_count: int, + batch_status: BatchStatus, + compute_time: float = None, + ): + batch = self.session.query(Batch).filter_by(id=batch_id).first() + batch.count = url_count + batch.status = batch_status.value + batch.compute_time = compute_time @session_manager def get_batch_by_id(self, batch_id: int) -> Optional[BatchInfo]: @@ -96,13 +83,45 @@ def get_batch_by_id(self, batch_id: int) -> Optional[BatchInfo]: batch = self.session.query(Batch).filter_by(id=batch_id).first() return BatchInfo(**batch.__dict__) + def insert_urls(self, url_infos: List[URLInfo], batch_id: int) -> InsertURLsInfo: + url_mappings = [] + duplicates = [] + for url_info in url_infos: + url_info.batch_id = batch_id + try: + url_id = self.insert_url(url_info) + url_mappings.append(URLMapping(url_id=url_id, url=url_info.url)) + except IntegrityError: + orig_url_info = self.get_url_info_by_url(url_info.url) + duplicates.append(DuplicateInfo( + source_url=url_info.url, + original_url_id=orig_url_info.id, + duplicate_metadata=url_info.url_metadata, + original_metadata=orig_url_info.url_metadata + )) + + return InsertURLsInfo(url_mappings=url_mappings, duplicates=duplicates) + + @session_manager - def insert_url(self, url_info: URLInfo): + def get_url_info_by_url(self, url: str) -> Optional[URLInfo]: + url = self.session.query(URL).filter_by(url=url).first() + return URLInfo(**url.__dict__) + + @session_manager + def insert_url(self, url_info: URLInfo) -> int: """Insert a new URL into the database.""" url_entry = URL( - **url_info.model_dump() + batch_id=url_info.batch_id, + url=url_info.url, + url_metadata=url_info.url_metadata, + outcome=url_info.outcome.value ) self.session.add(url_entry) + self.session.commit() + self.session.refresh(url_entry) + return url_entry.id + @session_manager def get_urls_by_batch(self, batch_id: int) -> List[URLInfo]: diff --git a/collector_db/README.md b/collector_db/README.md new file mode 100644 index 00000000..d1c55a12 --- /dev/null +++ b/collector_db/README.md @@ -0,0 +1 @@ +The collector database is a database for storing collector data and associated metadata. It consists of both the database structure itself as well as the interfaces and helper functions for interacting with it. \ No newline at end of file diff --git a/collector_db/URLInfo.py b/collector_db/URLInfo.py deleted file mode 100644 index df479eae..00000000 --- a/collector_db/URLInfo.py +++ /dev/null @@ -1,8 +0,0 @@ -from pydantic import BaseModel - - -class URLInfo(BaseModel): - batch_id: int - url: str - url_metadata: dict - outcome: str diff --git a/collector_db/models.py b/collector_db/models.py new file mode 100644 index 00000000..50bf8571 --- /dev/null +++ b/collector_db/models.py @@ -0,0 +1,75 @@ +""" +SQLAlchemy ORM models +""" +from sqlalchemy import func, Column, Integer, String, CheckConstraint, TIMESTAMP, Float, JSON, ForeignKey, Text +from sqlalchemy.orm import declarative_base, relationship + +from core.enums import BatchStatus +from util.helper_functions import get_enum_values + +# Base class for SQLAlchemy ORM models +Base = declarative_base() + +status_check_string = ", ".join([f"'{status}'" for status in get_enum_values(BatchStatus)]) + +CURRENT_TIME_SERVER_DEFAULT = func.now() + + +class Batch(Base): + __tablename__ = 'batches' + + id = Column(Integer, primary_key=True) + strategy = Column(String, nullable=False) + # Gives the status of the batch + status = Column(String, CheckConstraint(f"status IN ({status_check_string})"), nullable=False) + # The number of URLs in the batch + # TODO: Add means to update after execution + count = Column(Integer, nullable=False) + date_generated = Column(TIMESTAMP, nullable=False, server_default=CURRENT_TIME_SERVER_DEFAULT) + # How often URLs ended up approved in the database + strategy_success_rate = Column(Float) + # Percentage of metadata identified by models + metadata_success_rate = Column(Float) + # Rate of matching to agencies + agency_match_rate = Column(Float) + # Rate of matching to record types + record_type_match_rate = Column(Float) + # Rate of matching to record categories + record_category_match_rate = Column(Float) + # Time taken to generate the batch + # TODO: Add means to update after execution + compute_time = Column(Float) + # The parameters used to generate the batch + parameters = Column(JSON) + + urls = relationship("URL", back_populates="batch") + missings = relationship("Missing", back_populates="batch") + + +class URL(Base): + __tablename__ = 'urls' + + id = Column(Integer, primary_key=True) + # The batch this URL is associated with + batch_id = Column(Integer, ForeignKey('batches.id'), nullable=False) + url = Column(Text, unique=True) + # The metadata associated with the URL + url_metadata = Column(JSON) + # The outcome of the URL: submitted, human_labeling, rejected, duplicate, etc. + outcome = Column(String) + created_at = Column(TIMESTAMP, nullable=False, server_default=CURRENT_TIME_SERVER_DEFAULT) + + batch = relationship("Batch", back_populates="urls") + + +class Missing(Base): + __tablename__ = 'missing' + + id = Column(Integer, primary_key=True) + place_id = Column(Integer, nullable=False) + record_type = Column(String, nullable=False) + batch_id = Column(Integer, ForeignKey('batches.id')) + strategy_used = Column(Text, nullable=False) + date_searched = Column(TIMESTAMP, nullable=False, server_default=CURRENT_TIME_SERVER_DEFAULT) + + batch = relationship("Batch", back_populates="missings") diff --git a/collector_manager/CollectorBase.py b/collector_manager/CollectorBase.py index fe2efe5e..2cd07ab8 100644 --- a/collector_manager/CollectorBase.py +++ b/collector_manager/CollectorBase.py @@ -3,27 +3,113 @@ """ import abc import threading +import time from abc import ABC +from typing import Optional -from collector_manager.enums import Status +from marshmallow import Schema, ValidationError +from pydantic import BaseModel +from collector_manager.enums import CollectorStatus, CollectorType + + +class CollectorCloseInfo(BaseModel): + collector_type: CollectorType + status: CollectorStatus + data: dict = None + logs: list[str] + message: str = None + compute_time: float class CollectorBase(ABC): + config_schema: Schema = None # Schema for validating configuration + output_schema: Schema = None # Schema for validating output + collector_type: CollectorType = None # Collector type + def __init__(self, name: str, config: dict) -> None: self.name = name - self.config = config + self.config = self.validate_config(config) self.data = {} self.logs = [] - self.status = Status.RUNNING + self.status = CollectorStatus.RUNNING + self.start_time = None + self.compute_time = None # # TODO: Determine how to update this in some of the other collectors self._stop_event = threading.Event() @abc.abstractmethod - def run(self) -> None: + def run_implementation(self) -> None: raise NotImplementedError + def start_timer(self) -> None: + self.start_time = time.time() + + def stop_timer(self) -> None: + self.compute_time = time.time() - self.start_time + + def run(self) -> None: + try: + self.start_timer() + self.run_implementation() + self.stop_timer() + self.status = CollectorStatus.COMPLETED + self.log("Collector completed successfully.") + except Exception as e: + self.stop_timer() + self.status = CollectorStatus.ERRORED + self.log(f"Error: {e}") + def log(self, message: str) -> None: self.logs.append(message) - def stop(self) -> None: - self._stop_event.set() \ No newline at end of file + def abort(self) -> CollectorCloseInfo: + self._stop_event.set() + self.stop_timer() + return CollectorCloseInfo( + status=CollectorStatus.ABORTED, + message="Collector aborted.", + logs=self.logs, + compute_time=self.compute_time, + collector_type=self.collector_type + ) + + def close(self): + logs = self.logs + compute_time = self.compute_time + + try: + data = self.validate_output(self.data) + status = CollectorStatus.COMPLETED + message = "Collector closed and data harvested successfully." + except Exception as e: + data = self.data + status = CollectorStatus.ERRORED + message = str(e) + + return CollectorCloseInfo( + status=status, + data=data, + logs=logs, + message=message, + compute_time=compute_time, + collector_type=self.collector_type + ) + + + def validate_output(self, output: dict) -> dict: + if self.output_schema is None: + raise NotImplementedError("Subclasses must define a schema.") + try: + schema = self.output_schema() + return schema.load(output) + except ValidationError as e: + self.status = CollectorStatus.ERRORED + raise ValueError(f"Invalid output: {e.messages}") + + def validate_config(self, config: dict) -> dict: + if self.config_schema is None: + raise NotImplementedError("Subclasses must define a schema.") + try: + return self.config_schema().load(config) + except ValidationError as e: + raise ValueError(f"Invalid configuration: {e.messages}") \ No newline at end of file diff --git a/collector_manager/CollectorManager.py b/collector_manager/CollectorManager.py index 02f85f30..49cc98b2 100644 --- a/collector_manager/CollectorManager.py +++ b/collector_manager/CollectorManager.py @@ -3,46 +3,48 @@ Can start, stop, and get info on running collectors And manages the retrieval of collector info """ - +import json import threading import uuid -from typing import Dict, List, Optional +from typing import Dict, List, Optional, Type + +from pydantic import BaseModel + +from collector_manager.CollectorBase import CollectorBase, CollectorCloseInfo +from collector_manager.collector_mapping import COLLECTOR_MAPPING +from collector_manager.enums import CollectorStatus, CollectorType -from collector_manager.ExampleCollector import ExampleCollector -from collector_manager.enums import Status +class InvalidCollectorError(Exception): + pass # Collector Manager Class class CollectorManager: def __init__(self): - self.collectors: Dict[str, ExampleCollector] = {} + self.collectors: Dict[int, CollectorBase] = {} def list_collectors(self) -> List[str]: - return ["example_collector"] + return [cm.value for cm in list(COLLECTOR_MAPPING.keys())] def start_collector( self, - name: str, - config: Optional[dict] = None - ) -> str: - cid = str(uuid.uuid4()) - # The below would need to become more sophisticated - # As we may load different collectors depending on the name - collector = ExampleCollector(name, config) + collector: CollectorBase, + cid: int + ) -> None: + self.collectors[cid] = collector thread = threading.Thread(target=collector.run, daemon=True) thread.start() - return cid def get_status(self, cid: Optional[str] = None) -> str | List[str]: if cid: collector = self.collectors.get(cid) if not collector: return f"Collector with CID {cid} not found." - return f"{cid} ({collector.name}) - {collector.status}" + return f"{cid} ({collector.name}) - {collector.status.value}" else: return [ - f"{cid} ({collector.name}) - {collector.status}" + f"{cid} ({collector.name}) - {collector.status.value}" for cid, collector in self.collectors.items() ] @@ -53,18 +55,21 @@ def get_info(self, cid: str) -> str: logs = "\n".join(collector.logs[-3:]) # Show the last 3 logs return f"{cid} ({collector.name}) - {collector.status}\nLogs:\n{logs}" - def close_collector(self, cid: str) -> str: - collector = self.collectors.get(cid) - if not collector: - return f"Collector with CID {cid} not found." + def close_collector(self, cid: int) -> CollectorCloseInfo: + collector = self.try_getting_collector(cid) match collector.status: - case Status.RUNNING: - collector.stop() - return f"Collector {cid} stopped." - case Status.COMPLETED: - data = collector.data + case CollectorStatus.RUNNING: + return collector.abort() + case CollectorStatus.COMPLETED: + close_info = collector.close() del self.collectors[cid] - return f"Collector {cid} harvested. Data: {data}" + return close_info case _: - return f"Cannot close collector {cid} with status {collector.status}." + raise ValueError(f"Cannot close collector {cid} with status {collector.status}.") + + def try_getting_collector(self, cid): + collector = self.collectors.get(cid) + if collector is None: + raise InvalidCollectorError(f"Collector with CID {cid} not found.") + return collector diff --git a/collector_manager/CommandHandler.py b/collector_manager/CommandHandler.py index 5a1fe033..f176ae18 100644 --- a/collector_manager/CommandHandler.py +++ b/collector_manager/CommandHandler.py @@ -3,10 +3,10 @@ This module provides a command handler for the Collector Manager CLI. """ - +import json from typing import List -from collector_manager.CollectorManager import CollectorManager +from collector_manager.CollectorManager import CollectorManager, InvalidCollectorError class CommandHandler: @@ -32,7 +32,7 @@ def handle_command(self, command: str): func(parts) def list_collectors(self, args: List[str]): - print("\n".join(self.cm.list_collectors())) + print(" " + "\n ".join(self.cm.list_collectors())) def start_collector(self, args: List[str]): if len(args) < 2: @@ -40,9 +40,22 @@ def start_collector(self, args: List[str]): return collector_name = args[1] config = None + # TODO: Refactor and extract functions if len(args) > 3 and args[2] == "--config": - config = args[3] - cid = self.cm.start_collector(collector_name, config) + try: + f = open(args[3], "r") + except FileNotFoundError: + print(f"Config file not found: {args[3]}") + return + try: + config = json.load(f) + except json.JSONDecodeError: + print(f"Invalid config file: {args[3]}") + try: + cid = self.cm.start_collector(collector_name, config) + except InvalidCollectorError: + print(f"Invalid collector name: {collector_name}") + return print(f"Started collector with CID: {cid}") def get_status(self, args: List[str]): diff --git a/collector_manager/ExampleCollector.py b/collector_manager/ExampleCollector.py index 55438aff..adfcd4eb 100644 --- a/collector_manager/ExampleCollector.py +++ b/collector_manager/ExampleCollector.py @@ -5,24 +5,35 @@ """ import time +from marshmallow import Schema, fields + from collector_manager.CollectorBase import CollectorBase -from collector_manager.enums import Status +from collector_manager.enums import CollectorStatus, CollectorType + + +class ExampleSchema(Schema): + example_field = fields.Str(required=True) +class ExampleOutputSchema(Schema): + parameters = fields.Dict(required=True) + urls = fields.List(fields.String(required=True)) + message = fields.Str(required=True) class ExampleCollector(CollectorBase): + config_schema = ExampleSchema + output_schema = ExampleOutputSchema + collector_type = CollectorType.EXAMPLE - def run(self): - try: - for i in range(10): # Simulate a task - if self._stop_event.is_set(): - self.log("Collector stopped.") - self.status = Status.ERRORED - return - self.log(f"Step {i+1}/10") - time.sleep(1) # Simulate work - self.data = {"message": f"Data collected by {self.name}"} - self.status = Status.COMPLETED - self.log("Collector completed successfully.") - except Exception as e: - self.status = Status.ERRORED - self.log(f"Error: {e}") + def run_implementation(self) -> None: + for i in range(10): # Simulate a task + if self._stop_event.is_set(): + self.log("Collector stopped.") + self.status = CollectorStatus.ERRORED + return + self.log(f"Step {i + 1}/10") + time.sleep(0.1) # Simulate work + self.data = { + "message": f"Data collected by {self.name}", + "urls": ["https://example.com", "https://example.com/2"], + "parameters": self.config, + } diff --git a/collector_manager/README.md b/collector_manager/README.md index 8c37fb6e..e287ed39 100644 --- a/collector_manager/README.md +++ b/collector_manager/README.md @@ -20,4 +20,14 @@ This directory consists of the following files: | CollectorBase.py | Base class for collectors | |enums.py | Enumerations used in the collector manager | | ExampleCollector.py | Example collector | -| main.py | Main function for the collector manager | \ No newline at end of file +| main.py | Main function for the collector manager | + + +## Creating a Collector + +1. All collectors must inherit from the CollectorBase class. +2. Once created, the class must be added to the `COLLECTOR_MAPPING` dictionary located in `collector_mapping.py` +3. The class must have a `config_schema` attribute: a marshmallow schema that defines the configuration for the collector. +4. The class must have an `output_schema` attribute: a marshmallow schema that defines and validates the output of the collector. +5. The class must have a `run_implementation` method: this method is called by the collector manager to run the collector. It must regularly log updates to the collector manager using the `log` method, and set the final data to the `data` attribute. +6. For ease of use, the `run_implementation` method should call a method within the inner class that is a generator which returns regular status updates as a string after every iteration of the method's loop, to ensure granular status updates. \ No newline at end of file diff --git a/collector_manager/collector_mapping.py b/collector_manager/collector_mapping.py new file mode 100644 index 00000000..9ec49f4e --- /dev/null +++ b/collector_manager/collector_mapping.py @@ -0,0 +1,17 @@ +from collector_manager.ExampleCollector import ExampleCollector +from collector_manager.enums import CollectorType +from source_collectors.auto_googler.AutoGooglerCollector import AutoGooglerCollector +from source_collectors.ckan.CKANCollector import CKANCollector +from source_collectors.common_crawler.CommonCrawlerCollector import CommonCrawlerCollector +from source_collectors.muckrock.classes.MuckrockCollector import MuckrockSimpleSearchCollector, \ + MuckrockCountyLevelSearchCollector, MuckrockAllFOIARequestsCollector + +COLLECTOR_MAPPING = { + CollectorType.EXAMPLE: ExampleCollector, + CollectorType.AUTO_GOOGLER: AutoGooglerCollector, + CollectorType.COMMON_CRAWLER: CommonCrawlerCollector, + CollectorType.MUCKROCK_SIMPLE_SEARCH: MuckrockSimpleSearchCollector, + CollectorType.MUCKROCK_COUNTY_SEARCH: MuckrockCountyLevelSearchCollector, + CollectorType.MUCKROCK_ALL_SEARCH: MuckrockAllFOIARequestsCollector, + CollectorType.CKAN: CKANCollector +} diff --git a/collector_manager/configs/example_config.json b/collector_manager/configs/example_config.json new file mode 100644 index 00000000..98f47dc4 --- /dev/null +++ b/collector_manager/configs/example_config.json @@ -0,0 +1,3 @@ +{ + "example_field": "example_value" +} \ No newline at end of file diff --git a/collector_manager/configs/sample_autogoogler_config.json b/collector_manager/configs/sample_autogoogler_config.json new file mode 100644 index 00000000..b90724c1 --- /dev/null +++ b/collector_manager/configs/sample_autogoogler_config.json @@ -0,0 +1,9 @@ +{ + "api_key": "REPLACE_ME", + "cse_id": "REPLACE_ME", + "urls_per_result": 10, + "queries": [ + "Disco Elysium", + "Dune" + ] +} \ No newline at end of file diff --git a/collector_manager/enums.py b/collector_manager/enums.py index 85a2f08b..b0fcfb2a 100644 --- a/collector_manager/enums.py +++ b/collector_manager/enums.py @@ -1,4 +1,24 @@ -class Status: +from enum import Enum + + +class CollectorStatus(Enum): RUNNING = "RUNNING" COMPLETED = "COMPLETED" ERRORED = "ERRORED" + ABORTED = "ABORTED" + +class CollectorType(Enum): + EXAMPLE = "example_collector" + AUTO_GOOGLER = "auto_googler" + COMMON_CRAWLER = "common_crawler" + MUCKROCK_SIMPLE_SEARCH = "muckrock_simple_search" + MUCKROCK_COUNTY_SEARCH = "muckrock_county_search" + MUCKROCK_ALL_SEARCH = "muckrock_all_search" + CKAN = "ckan" + +class URLOutcome(Enum): + PENDING = "pending" + SUBMITTED = "submitted" + HUMAN_LABELING = "human_labeling" + REJECTED = "rejected" + DUPLICATE = "duplicate" diff --git a/core/CoreCommandHandler.py b/core/CoreCommandHandler.py new file mode 100644 index 00000000..57a39f3b --- /dev/null +++ b/core/CoreCommandHandler.py @@ -0,0 +1,107 @@ +import json +from typing import List, Optional + +from collector_manager.CollectorManager import InvalidCollectorError +from collector_manager.collector_mapping import COLLECTOR_MAPPING +from collector_manager.enums import CollectorType +from core.CoreInterface import CoreInterface +from core.SourceCollectorCore import SourceCollectorCore + +class InvalidCommandError(Exception): + pass + +class CoreCommandHandler: + + def __init__(self, ci: CoreInterface = CoreInterface()): + self.ci = ci + self.commands = { + "list": self.list_collectors, + "start": self.start_collector, + "status": self.get_status, + "info": self.get_info, + "close": self.close_collector, + "exit": self.exit_manager, + } + self.running = True + self.cm = self.core.collector_manager + + def handle_command(self, command: str) -> str: + parts = command.split() + if not parts: + return "Invalid command." + + cmd = parts[0] + func = self.commands.get(cmd, self.unknown_command) + try: + return func(parts) + except InvalidCommandError as e: + return str(e) + + def start_collector(self, args: List[str]) -> str: + collector_name, config = self.parse_args(args) + try: + collector_type = CollectorType(collector_name) + except KeyError: + raise InvalidCollectorError(f"Collector {collector_name} not found.") + return self.ci.start_collector(collector_type=collector_type, config=config) + + def get_cid(self, cid_str: str) -> int: + try: + return int(cid_str) + except ValueError: + raise InvalidCommandError(f"CID must be an integer") + + def parse_args(self, args: List[str]) -> (Optional[str], Optional[dict]): + if len(args) < 2: + raise InvalidCommandError("Usage: start {collector_name}") + + collector_name = args[1] + config = None + + if len(args) > 3 and args[2] == "--config": + config = self.load_config(args[3]) + + return collector_name, config + + def load_config(self, file_path: str) -> Optional[dict]: + try: + with open(file_path, "r") as f: + return json.load(f) + except FileNotFoundError: + raise InvalidCommandError(f"Config file not found: {file_path}") + except json.JSONDecodeError: + raise InvalidCommandError(f"Invalid config file: {file_path}") + + def exit_manager(self, args: List[str]): + self.running = False + return "Exiting Core Manager." + + def unknown_command(self, args: List[str]): + return "Unknown command." + + def close_collector(self, args: List[str]): + if len(args) < 2: + return "Usage: close {cid}" + cid = self.get_cid(cid_str=args[1]) + try: + lifecycle_info = self.cm.close_collector(cid) + return lifecycle_info.message + except InvalidCollectorError: + return f"Collector {cid} not found." + return self.ci.close_collector(cid=cid) + + def get_info(self, args: List[str]): + if len(args) < 2: + return "Usage: info {cid}" + cid = self.get_cid(cid_str=args[1]) + return self.ci.get_info(cid) + + def get_status(self, args: List[str]): + if len(args) > 1: + cid = self.get_cid(args[1]) + return self.ci.get_status(cid) + else: + return self.ci.get_status() + + def list_collectors(self, args: List[str]): + return self.ci.list_collectors() diff --git a/core/CoreInterface.py b/core/CoreInterface.py new file mode 100644 index 00000000..6f56e245 --- /dev/null +++ b/core/CoreInterface.py @@ -0,0 +1,44 @@ +from typing import Optional + +from collector_manager.CollectorManager import InvalidCollectorError +from collector_manager.enums import CollectorType +from core.DTOs.CollectionLifecycleInfo import CollectionLifecycleInfo +from core.SourceCollectorCore import SourceCollectorCore + + +class CoreInterface: + """ + An interface for accessing internal core functions. + + All methods return a string describing the result of the operation + """ + + def __init__(self, core: SourceCollectorCore = SourceCollectorCore()): + self.core = core + self.cm = self.core.collector_manager + + def start_collector( + self, + collector_type: CollectorType, + config: Optional[dict] = None + ) -> str: + cid = self.core.initiate_collector( + collector_type=collector_type, + config=config + ) + return f"Started {collector_type.value} collector with CID: {cid}" + + def close_collector(self, cid: int) -> CollectionLifecycleInfo: + return self.core.harvest_collector(cid) + + def get_info(self, cid: int) -> str: + return self.cm.get_info(cid) + + def get_status(self, cid: Optional[int] = None) -> str: + if cid is None: + return "\n".join(self.cm.get_status()) + else: + return self.cm.get_status(cid) + + def list_collectors(self) -> str: + return "\n".join(self.cm.list_collectors()) diff --git a/core/DTOs/CollectionLifecycleInfo.py b/core/DTOs/CollectionLifecycleInfo.py new file mode 100644 index 00000000..dc1b538f --- /dev/null +++ b/core/DTOs/CollectionLifecycleInfo.py @@ -0,0 +1,11 @@ +from pydantic import BaseModel + +from collector_db.DTOs.DuplicateInfo import DuplicateInfo +from collector_db.DTOs.URLMapping import URLMapping + + +class CollectionLifecycleInfo(BaseModel): + batch_id: int + url_id_mapping: list[URLMapping] + duplicates: list[DuplicateInfo] + message: str diff --git a/core/DTOs/CollectorStartParams.py b/core/DTOs/CollectorStartParams.py new file mode 100644 index 00000000..5038afc6 --- /dev/null +++ b/core/DTOs/CollectorStartParams.py @@ -0,0 +1,9 @@ +from pydantic import BaseModel + +from collector_manager.enums import CollectorType + + +class CollectorStartParams(BaseModel): + collector_type: CollectorType + config: dict + batch_id: int = None diff --git a/core/DTOs/README.md b/core/DTOs/README.md new file mode 100644 index 00000000..a93eddbe --- /dev/null +++ b/core/DTOs/README.md @@ -0,0 +1 @@ +This directory consists of Data Transfer Objects (DTOs) which are utilized by other core submodules. \ No newline at end of file diff --git a/core/DTOs/__init__.py b/core/DTOs/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/core/README.md b/core/README.md new file mode 100644 index 00000000..c9095c41 --- /dev/null +++ b/core/README.md @@ -0,0 +1,5 @@ +The Source Collector Core is a directory which integrates: +1. The Collector Manager +2. The Source Collector Database +3. The API (to be developed) +4. The PDAP API Client (to be developed) \ No newline at end of file diff --git a/core/SourceCollectorCore.py b/core/SourceCollectorCore.py new file mode 100644 index 00000000..79dc700b --- /dev/null +++ b/core/SourceCollectorCore.py @@ -0,0 +1,102 @@ +from typing import Optional + +from collector_db.DTOs.BatchInfo import BatchInfo +from collector_db.DatabaseClient import DatabaseClient +from collector_manager.CollectorManager import CollectorManager, InvalidCollectorError +from collector_manager.collector_mapping import COLLECTOR_MAPPING +from collector_manager.enums import CollectorType, CollectorStatus +from core.DTOs.CollectionLifecycleInfo import CollectionLifecycleInfo +from core.enums import BatchStatus +from core.preprocessors.PreprocessorBase import PreprocessorBase +from core.preprocessors.preprocessor_mapping import PREPROCESSOR_MAPPING + + + +def collector_to_batch_status(status: CollectorStatus): + match status: + case CollectorStatus.COMPLETED: + batch_status = BatchStatus.COMPLETE + case CollectorStatus.ABORTED: + batch_status = BatchStatus.ABORTED + case CollectorStatus.ERRORED: + batch_status = BatchStatus.ERROR + case _: + raise NotImplementedError(f"Unknown collector status: {status}") + return batch_status + + +class InvalidPreprocessorError(Exception): + pass + + +class SourceCollectorCore: + def __init__(self, db_client: DatabaseClient = DatabaseClient()): + self.db_client = db_client + self.collector_manager = CollectorManager() + pass + + + def initiate_collector( + self, + collector_type: CollectorType, + config: Optional[dict] = None,): + """ + Reserves a batch ID from the database + and starts the requisite collector + """ + name = collector_type.value + try: + collector = COLLECTOR_MAPPING[collector_type](name, config) + except KeyError: + raise InvalidCollectorError(f"Collector {name} not found.") + + batch_info = BatchInfo( + strategy=collector_type.value, + status=BatchStatus.IN_PROCESS, + parameters=config + ) + + batch_id = self.db_client.insert_batch(batch_info) + self.collector_manager.start_collector(collector=collector, cid=batch_id) + + return batch_id + + def harvest_collector(self, batch_id: int) -> CollectionLifecycleInfo: + close_info = self.collector_manager.close_collector(batch_id) + batch_status = collector_to_batch_status(close_info.status) + preprocessor = self.get_preprocessor(close_info.collector_type) + url_infos = preprocessor.preprocess(close_info.data) + self.db_client.update_batch_post_collection( + batch_id=batch_id, + url_count=len(url_infos), + batch_status=batch_status, + compute_time=close_info.compute_time + ) + insert_url_infos = self.db_client.insert_urls( + url_infos=url_infos, + batch_id=batch_id + ) + return CollectionLifecycleInfo( + batch_id=batch_id, + url_id_mapping=insert_url_infos.url_mappings, + duplicates=insert_url_infos.duplicates, + message=close_info.message + ) + + + def get_preprocessor( + self, + collector_type: CollectorType + ) -> PreprocessorBase: + try: + return PREPROCESSOR_MAPPING[collector_type]() + except KeyError: + raise InvalidPreprocessorError(f"Preprocessor for {collector_type} not found.") + + + + +""" +TODO: Add logic for batch processing + +""" \ No newline at end of file diff --git a/core/__init__.py b/core/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/core/enums.py b/core/enums.py new file mode 100644 index 00000000..7dd214f9 --- /dev/null +++ b/core/enums.py @@ -0,0 +1,8 @@ +from enum import Enum + + +class BatchStatus(Enum): + COMPLETE = "complete" + IN_PROCESS = "in-process" + ERROR = "error" + ABORTED = "aborted" \ No newline at end of file diff --git a/core/preprocessors/AutoGooglerPreprocessor.py b/core/preprocessors/AutoGooglerPreprocessor.py new file mode 100644 index 00000000..46afd700 --- /dev/null +++ b/core/preprocessors/AutoGooglerPreprocessor.py @@ -0,0 +1,30 @@ +from typing import List + +from collector_db.DTOs.URLInfo import URLInfo +from core.preprocessors.PreprocessorBase import PreprocessorBase + + +class AutoGooglerPreprocessor(PreprocessorBase): + + def preprocess_entry(self, entry: dict) -> list[URLInfo]: + query = entry["query"] + query_results = entry["query_results"] + url_infos = [] + for qr in query_results: + url_infos.append(URLInfo( + url=qr["url"], + url_metadata={ + "query": query, + "snippet": qr["snippet"], + "title": qr["title"] + }, + )) + + return url_infos + + def preprocess(self, data: dict) -> List[URLInfo]: + url_infos = [] + for entry in data["data"]: + url_infos.extend(self.preprocess_entry(entry)) + + return url_infos diff --git a/core/preprocessors/CKANPreprocessor.py b/core/preprocessors/CKANPreprocessor.py new file mode 100644 index 00000000..bf9b4504 --- /dev/null +++ b/core/preprocessors/CKANPreprocessor.py @@ -0,0 +1,19 @@ +from typing import List + +from collector_db.DTOs.URLInfo import URLInfo + + +class CKANPreprocessor: + + def preprocess(self, data: dict) -> List[URLInfo]: + url_infos = [] + for entry in data["results"]: + url = entry["source_url"] + del entry["source_url"] + entry["source_last_updated"] = entry["source_last_updated"].strftime("%Y-%m-%d") + url_info = URLInfo( + url=url, + url_metadata=entry, + ) + url_infos.append(url_info) + return url_infos \ No newline at end of file diff --git a/core/preprocessors/CommonCrawlerPreprocessor.py b/core/preprocessors/CommonCrawlerPreprocessor.py new file mode 100644 index 00000000..dbf1b885 --- /dev/null +++ b/core/preprocessors/CommonCrawlerPreprocessor.py @@ -0,0 +1,18 @@ +from typing import List + +from collector_db.DTOs.URLInfo import URLInfo +from core.preprocessors.PreprocessorBase import PreprocessorBase + + +class CommonCrawlerPreprocessor(PreprocessorBase): + + + def preprocess(self, data: dict) -> List[URLInfo]: + url_infos = [] + for url in data["urls"]: + url_info = URLInfo( + url=url, + ) + url_infos.append(url_info) + + return url_infos \ No newline at end of file diff --git a/core/preprocessors/ExamplePreprocessor.py b/core/preprocessors/ExamplePreprocessor.py new file mode 100644 index 00000000..6063b9a4 --- /dev/null +++ b/core/preprocessors/ExamplePreprocessor.py @@ -0,0 +1,19 @@ +from typing import List + +from collector_db.DTOs.URLInfo import URLInfo +from core.preprocessors.PreprocessorBase import PreprocessorBase + + +class ExamplePreprocessor(PreprocessorBase): + pass + + + def preprocess(self, data: dict) -> List[URLInfo]: + url_infos = [] + for url in data["urls"]: + url_info = URLInfo( + url=url, + ) + url_infos.append(url_info) + + return url_infos diff --git a/core/preprocessors/MuckrockPreprocessor.py b/core/preprocessors/MuckrockPreprocessor.py new file mode 100644 index 00000000..b8b934b6 --- /dev/null +++ b/core/preprocessors/MuckrockPreprocessor.py @@ -0,0 +1,18 @@ +from typing import List + +from collector_db.DTOs.URLInfo import URLInfo +from core.preprocessors.PreprocessorBase import PreprocessorBase + + +class MuckrockPreprocessor(PreprocessorBase): + + def preprocess(self, data: dict) -> List[URLInfo]: + url_infos = [] + for entry in data["urls"]: + url_info = URLInfo( + url=entry["url"], + url_metadata=entry["metadata"], + ) + url_infos.append(url_info) + + return url_infos diff --git a/core/preprocessors/PreprocessorBase.py b/core/preprocessors/PreprocessorBase.py new file mode 100644 index 00000000..b39264b0 --- /dev/null +++ b/core/preprocessors/PreprocessorBase.py @@ -0,0 +1,21 @@ +import abc +from abc import ABC +from typing import List + +from collector_db.DTOs.URLInfo import URLInfo + + +class PreprocessorBase(ABC): + """ + Base class for all preprocessors + + Every preprocessor must implement the preprocess method + but otherwise can be developed however they want + """ + + @abc.abstractmethod + def preprocess(self, data: dict) -> List[URLInfo]: + """ + Convert the data output from a collector into a list of URLInfos + """ + raise NotImplementedError diff --git a/core/preprocessors/README.md b/core/preprocessors/README.md new file mode 100644 index 00000000..be6cd472 --- /dev/null +++ b/core/preprocessors/README.md @@ -0,0 +1,3 @@ +This directory consists of batch preprocessors - classes that take the bespoke outputs of collectors and standardizes their content into a set of URLs with associated metadata to be inserted into the database. + +Aside from the `preprocess` method (and any methods called within that), each of these classes follow the same structure, owing to their shared inheritance from `PreprocessorBase`. \ No newline at end of file diff --git a/core/preprocessors/__init__.py b/core/preprocessors/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/core/preprocessors/preprocessor_mapping.py b/core/preprocessors/preprocessor_mapping.py new file mode 100644 index 00000000..13f54623 --- /dev/null +++ b/core/preprocessors/preprocessor_mapping.py @@ -0,0 +1,16 @@ +from collector_manager.enums import CollectorType +from core.preprocessors.AutoGooglerPreprocessor import AutoGooglerPreprocessor +from core.preprocessors.CKANPreprocessor import CKANPreprocessor +from core.preprocessors.CommonCrawlerPreprocessor import CommonCrawlerPreprocessor +from core.preprocessors.ExamplePreprocessor import ExamplePreprocessor +from core.preprocessors.MuckrockPreprocessor import MuckrockPreprocessor + +PREPROCESSOR_MAPPING = { + CollectorType.AUTO_GOOGLER: AutoGooglerPreprocessor, + CollectorType.EXAMPLE: ExamplePreprocessor, + CollectorType.COMMON_CRAWLER: CommonCrawlerPreprocessor, + CollectorType.MUCKROCK_SIMPLE_SEARCH: MuckrockPreprocessor, + CollectorType.MUCKROCK_COUNTY_SEARCH: MuckrockPreprocessor, + CollectorType.MUCKROCK_ALL_SEARCH: MuckrockPreprocessor, + CollectorType.CKAN: CKANPreprocessor +} diff --git a/hugging_face/testing/data/labeled-urls-headers_all.csv b/hugging_face/testing/data/labeled-urls-headers_all.csv index 1078ced1..69c5238d 100644 --- a/hugging_face/testing/data/labeled-urls-headers_all.csv +++ b/hugging_face/testing/data/labeled-urls-headers_all.csv @@ -4,16 +4,16 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 3,http://www.longbeach.gov/police/press-releases/murder-7-/,Media Bulletins,200,MURDER(7),"","[""Long BeachPolice Department""]",[],[],[],[],[] 4,https://www.lynchburgvapolice.gov/wp-content/uploads/2021/05/img_1545.jpg,Poor Data Source,404,"","",,,,,, 5,http://police.portlandmaine.gov/526/permit-license-fees,Resources,200,"Permit & License Fees | Portland, ME - Official Website",See a list of permit and license fees.,"[""Permit & License Fees""]",[],[],[],[],[] -6,https://www.arlingtontx.gov/news/my_arlington_t_x/news_archive/2012_and_prior_archived_news/police_graduate_18_recruits,Personnel Records,200," - Police Graduate 18 Recruits - City of Arlington +6,https://www.arlingtontx.gov/news/my_arlington_t_x/news_archive/2012_and_prior_archived_news/police_graduate_18_recruits,Personnel Records,200," + Police Graduate 18 Recruits - City of Arlington ","","[""YOUR COMMUNITY NEWS AND EVENTS"", ""City of Arlington""]","[""Police Graduate 18 Recruits""]",[],[],[],[] 7,https://police.greenvillesc.gov/1996/getting-here-parking,Contact Info & Agency Meta,200,"Getting Here & Parking | Greenville, SC - Official Website","Find location information, directions and parking for Unity Park.","[""\r\n\r\nGetting Here & Parking\t\t""]","[""WEEKEND TROLLEY""]","[""Loading"", ""GETTING HERE\u00a0"", ""Parking\u00a0"", ""click map for downloadable pdf""]","[""Parking Garages\u00a0"", ""Swamp Rabbit Trail\u00a0""]",[],[] 8,http://lafayettepolice.us/3386/donate,Resources,404,"","",,,,,, 9,http://www.lafayettepolice.us/2111/youth-classes-and-weekend-workshops,Misc Police Activity,200,"Youth Classes and Weekend Workshops | Lafayette, IN - Official Website","","[""\r\n\r\nYouth Classes and Weekend Workshops\t\t""]",[],"[""Loading"", ""Select a Program:"", ""Contact Us"", ""FAQs"", ""Site Links""]",[],[],[] 10,https://norfolkne.gov/assets/site/documentcentral/police/archived-arrests/2020-arrests/may-arrests.pdf,Arrest Records,200,"","",[],[],[],[],[],[] 11,http://www.longbeach.gov/police/press-releases/murder-18-/,Media Bulletins,200,MURDER(18),"","[""Long BeachPolice Department""]",[],[],[],[],[] -12,https://www.edmondswa.gov/government/departments/police_department/anonymous_tip,Contact Info & Agency Meta,200," - Anonymous Tip - City of Edmonds, WA +12,https://www.edmondswa.gov/government/departments/police_department/anonymous_tip,Contact Info & Agency Meta,200," + Anonymous Tip - City of Edmonds, WA ","","[""City of Edmonds - Washington""]","[""Anonymous Tip""]","[""Edmonds Police Department"", ""Recruitment and Hiring""]",[],[],[] 13,https://www.southamptontownnypolice.gov/1698/calissa-restaurant,Not Criminal Justice Related,200,"Calissa Restaurant | Southampton, NY - Official Website","","[""\r\n\r\nCalissa Restaurant\t\t""]",[],"[""Loading"", ""Site Tools"", ""Contact Us"", ""Site Links""]","[""Summary Sheet"", ""WQIPP - Fund Application""]",[],[] 14,https://ose.louisiana.gov/event/police-communications-officer-i-5/,Poor Data Source,200,Police Communications Officer I | Louisiana Office of State Examiner,"","["""", ""Police Communications Officer I""]",[],"[""Competitive Level""]",[],[],"[""Recent Posts"", ""Archives"", ""Categories"", ""Meta""]" @@ -21,11 +21,11 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 16,https://www.jacksonms.gov/documents/mayoral-executive-order-amending-the-city-of-jackson-police-departments-use-of-force-policy/,Media Bulletins,200,"MAYORAL EXECUTIVE ORDER AMENDING THE CITY OF JACKSON POLICE DEPARTMENT'S USE OF FORCE POLICY - Jackson, MS","","[""\n\n MAYORAL EXECUTIVE ORDER AMENDING THE CITY OF JACKSON POLICE DEPARTMENT\u2019S USE OF FORCE POLICY""]","[""Primary menu links"", ""Action toolbar"", ""Documents and forms"", ""Contact"", ""Subscribe"", ""Connect""]",[],"[""Cold Weather Shelter - Open""]","["""", """", """"]",[] 17,http://www.longbeach.gov/police/press-releases/murder-600-block-of-e-9th-street/,Media Bulletins,200,MURDER 600 block of E 9th Street,"","[""Long BeachPolice Department""]",[],[],[],[],[] 18,https://www.dps.arkansas.gov/law-enforcement/arkansas-state-police/divisions/highway-patrol/troop-c-commander/,Personnel Records,200,Troop C Commander - Arkansas Department of Public Safety,"","["" Flag Status""]","[""Troop C Commander"", ""Contact ASP"", ""Helpful ASP links"", ""Connect with ASP"", ""Respect. Integrity. \nCUSTOMER SERVICE. TEAMWORK. \nSERVANT LEADERSHIP. \nCONTINUOUS IMPROVEMENT"", """", ""\u00a9 2024 All rights Reserved. Arkansas.gov ""]","[""Captain John Carter""]",[],"[""About DPS"", ""DPS Links"", ""DPS Address"", ""Your Arkansas.gov"", ""Top Online Services"", ""Helpful Information""]",[] -19,https://www.roseville.ca.us/government/departments/police_department/community_services/my_neighborhood_officer/neighborhood_officer_program_information,Misc Police Activity,200," - Neighborhood Officer Program Information - City of Roseville +19,https://www.roseville.ca.us/government/departments/police_department/community_services/my_neighborhood_officer/neighborhood_officer_program_information,Misc Police Activity,200," + Neighborhood Officer Program Information - City of Roseville ",Reasons for Neighborhood Officer program and scheduling information,"[""City of Roseville""]","[""Neighborhood Officer Program Information""]","[""Roseville Police Department ""]",[],[],[] -20,https://www.pleasantprairiewi.gov/departments/police/news/police_and_fire___rescue_news_archive/2021_news_releases/arrest_leads_to_officer_injury,Media Bulletins,200," - Arrest Leads to Officer Injury - Village of Pleasant Prairie +20,https://www.pleasantprairiewi.gov/departments/police/news/police_and_fire___rescue_news_archive/2021_news_releases/arrest_leads_to_officer_injury,Media Bulletins,200," + Arrest Leads to Officer Injury - Village of Pleasant Prairie ","",[],"[""Arrest Leads to Officer Injury""]","[""Follow Us on Social Media""]",[],[],[] 21,https://cityofmebanenc.gov/documents/police-officer-2/police-officer-updated-2-21-2022/,Resources,200,"Police Officer (Updated 2-21-2022) - Mebane, NC","","[""Police Officer (Updated 2-21-2022)""]","[""Primary menu links"", ""Action toolbar"", ""Recent news"", ""Welcome"", ""Engage"", ""Help""]","[""Request for Bids: Elevated Water Storage Tank"", ""Request for Qualifications: West Ten Road Water Connector"", ""Request for Bids: Holt Street Greenway"", ""Thank You Chief Louis"", ""Request for Bids- W. Carr Street Sidewalk Improvements""]",[],[],[] 22,https://www.eutawal.gov/policeman/,Poor Data Source,404,"","",,,,,, @@ -33,13 +33,13 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 24,https://norfolkne.gov/assets/site/documentcentral/police/2021-daily-reports/blotter/090921blotter.pdf,Dispatch Logs,200,"","",[],[],[],[],[],[] 25,https://delcopa.gov/planning/programsandinitiatives/heritagecommission/historyofhcpreservationawards.pdf,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] 26,https://www.antioch.il.gov/wpfb-file/12-13-11-police-pension-fund-agenda-pdf/,Poor Data Source,200,"12-13-11 Police Pension Fund Agenda - Antioch, IL",8426 12 13 11 police pension fund agenda pdf commissions agendas 2011 1323382236 7fbda0786265e371ec5e6ffad4bd173e 217x300 _ppssu55rtwkq thumb jpg 08 17 10 36 0 pdf application page_text num_pages pdf_pages pdf_2text timings,"[""12-13-11 Police Pension Fund Agenda""]",[],[],[],[],[] -27,https://www.bedminster.us/government/police/history,Contact Info & Agency Meta,200," - History - Township of Bedminster +27,https://www.bedminster.us/government/police/history,Contact Info & Agency Meta,200," + History - Township of Bedminster ","","[""Bedminster Township""]","[""History""]","[""Bedminster Township""]",[],[],[] 28,https://www.ci.neenah.wi.us/departments/police/neighborhood-policing/,Policies & Contracts,200,Neighborhood Policing – City of Neenah,"","[""Neighborhood Policing""]","[""In This Department""]","[""Neighborhood Policing: Partnerships that Work""]",[],[],[] 29,http://www.lafayettepolice.us/1635/learning-adventures-camps-ages-5-7,Not Criminal Justice Related,200,"Learning Adventures Camps (ages 5-7) | Lafayette, IN - Official Website","","[""\r\n\r\nLearning Adventures Camps (ages 5-7)\t\t""]","[""About Learning Adventures Camps"", ""Registration for 2024 Zoo Camps opens February 1, 2024!"", ""2024 Learning Adventures (ages 5-7) Camp Schedule:*Please note, while we try to keep this schedule and open/closed status as current as possible, there may be delays in website updates.\u00a0"", ""Learning Adventures (ages 5-7) Camp Fees:"", ""Questions?\u00a0 Please call the Education Department at (765) 807-1540 or email zooeducation@lafayette.in.gov.""]","[""Loading"", ""If your desired session is full, you can join the wait list on our registration portal."", ""Contact Us"", ""FAQs"", ""Site Links""]","[""Please review before registering:""]",[],[] -30,https://www.sheridanwy.gov/faq_s/police_department,Contact Info & Agency Meta,200," - Police Department FAQ - City of Sheridan, WY +30,https://www.sheridanwy.gov/faq_s/police_department,Contact Info & Agency Meta,200," + Police Department FAQ - City of Sheridan, WY ","","[""City of Sheridan""]","[""Police Department FAQ"", ""\n""]",[],[],[],[] 31,https://www.sandyspringsgapolice.gov/category/uncategorized/,Poor Data Source,200,Uncategorized – Sandy Springs Police Department,"","[""\n\t\t\t\tUncategorized\t\t\t""]","[""Hello world!""]",[],[],[],[] 32,https://mukilteowa.gov/news/mukilteo-seeks-new-police-chief/,Personnel Records,200," @@ -47,17 +47,17 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 | Mukilteo Seeks New Police Chief - City of Mukilteo ","","[""\n\t\t Mukilteo Seeks New Police Chief\t\t ""]","[""\n\t\t\t\t\t\tSign up for notifications\n\t\t\t\t\t""]",[],[],[],[] 33,https://www.foxcrossingwi.gov/departments/police-department/community-policing/tricom/,Poor Data Source,200,tricom - Fox Crossing Fox Crossing,"",[],"[""Community Policing \u00bb tricom""]",[],[],[],[] 34,https://www.edmondswa.gov/government/departments/police_department/public_information/can_you_i_d_me_,Wanted Persons,200,Can You ID Me - Home,"","[""CAN YOU ID ME?"", ""499""]","[""Subjects Identified"", ""DO YOU KNOW THESE PEOPLE?""]","[""CanYouID.me is Washington State\u2019s most comprehensive unknown subject identification site.""]",[],"[""DO YOU RECOGNIZE ANYONE IN THESE PHOTOGRAPHS?"", ""DO YOU RECOGNIZE ANYONE IN THESE PHOTOGRAPHS?""]",[] -35,https://www.lynchburgvapolice.gov/traffic-safety-information/,List of Data Sources,200,Traffic Safety Information - Lynchburg Police Department,"","[""Traffic Safety Information""]","[""Traffic Safety Links""]",[],"[""Contact Us"", ""Site Links"", ""Site Links""]",[],"[""LPD Traffic Data"", ""Virginia State Police H.E.A.T. Program (Help Eliminate Auto Theft)"", ""Virginia Drive Smart"", ""Smart, Safe, and Sober"", ""Virginia Department of Motor Vehicles \u2013 Highway Safety"", ""Virginia\u2019s Child Safety Belt Laws"", ""Child Safety Seat Guidelines"", ""Teen Driving"", ""Virginia DMV Practice Driver\u2019s License Tests"", ""Virginia DMV Motorcycle Safety"", ""Work Zone Safety Info""]" +35,https://www.lynchburgvapolice.gov/traffic-safety-information/,List of Data Sources,200,Traffic Safety Information - Lynchburg Police Department,"","[""Traffic Safety Information""]","[""Traffic Safety Links""]",[],"[""Contact Us"", ""Site Links"", ""Site Links""]",[],"[""LPD Traffic Data"", ""Virginia State Police H.E.A.T. Program (Help Eliminate Auto Theft)"", ""Virginia Drive Smart"", ""Smart, Safe, and Sober"", ""Virginia Department of Motor Vehicles \u2013 Highway Safety"", ""Virginia\u2019s Child Safety Belt Laws"", ""Child Safety Seat Guidelines"", ""Teen Driving"", ""Virginia DMV Practice Driver\u2019s License tests"", ""Virginia DMV Motorcycle Safety"", ""Work Zone Safety Info""]" 36,http://chico.ca.us/post/police-community-advisory-board-pcab,Media Bulletins,404,"","",,,,,, 37,http://www.lafayettepolice.us/488/swimming-lessons,Not Criminal Justice Related,200,"Swimming Lessons | Lafayette, IN - Official Website",Sign up for swimming lessons at the Castaway Bay Aquatic Center in Lafayette.,"[""\r\n\r\nSwimming Lessons\t\t""]","[""Youth Swimming Lessons"", ""Fees"", ""Register"", ""Adult Swimming Lessons"", ""Jim Sharp""]","[""Loading"", ""Schedule"", ""Class Times"", """", ""Contact Us"", ""Contact Us"", ""FAQs"", ""Site Links""]",[],[],[] 38,https://alpha.austin.gov/police-oversight/written-reprimand-of-officer-jason-goodman/,Complaints & Misconduct,200,Maintenance Notice,"",[],[],[],[],[],[] -39,https://www.arlingtontx.gov/news/my_arlington_t_x/news_archive/2013_archived_news/december_2013/arlington_police_remind_safe_holiday_season,Media Bulletins,200," - Arlington Police Remind Motorists to Have Safe Holiday Season - City of Arlington +39,https://www.arlingtontx.gov/news/my_arlington_t_x/news_archive/2013_archived_news/december_2013/arlington_police_remind_safe_holiday_season,Media Bulletins,200," + Arlington Police Remind Motorists to Have Safe Holiday Season - City of Arlington ","","[""YOUR COMMUNITY NEWS AND EVENTS"", ""City of Arlington""]","[""Arlington Police Remind Motorists to Have Safe Holiday Season""]",[],[],[],[] 40,https://www.antioch.il.gov/police-department/,List of Data Sources,200,"Police Department - Antioch, IL","","[""Police Department""]",[],[],"[""Employment"", ""Press Releases"", ""Police Blotter"", ""Juvenile Law Enforcement Record Automatic Expungement"", ""Citizen Complaint"", ""9-1-1 Dispatch Center""]",[],[] 41,https://decaturil.gov/decatur-police-department-to-host-coffee-with-a-cop-on-august-8-2018/,Misc Police Activity,200,"Decatur Police Department to Host Coffee with a Cop on August 8, 2018 - City of Decatur, IL","","[""Decatur Police Department to Host Coffee with a Cop on August 8, 2018""]","[""City of Decatur News"", ""Accessibility (CTRL+M)""]",[],[],[],[] -42,https://www.newcastlewa.gov/departments/police/solicitors,Not Criminal Justice Related,200," - Solicitor Permits - City of Newcastle +42,https://www.newcastlewa.gov/departments/police/solicitors,Not Criminal Justice Related,200," + Solicitor Permits - City of Newcastle ","",[],"[""City of Newcastle""]","[""2023 Active Solicitor Permits""]","[""City of NewcastleWashington""]",[],[] 43,https://www.hayward-ca.gov/discover/news/mar21/hayward-police-departments-community-academy-goes-virtual-april,Misc Police Activity,200,Hayward Police Department’s Community Academy goes virtual in April | City of Hayward - Official website,Community Academy.png The Hayward Police Department is offering special online sessions of its Community Academy program in English and Spanish over four weeks this April.The Hayward Police Department’s Community Academy is a certified educational program designed to give community members a working knowledge of how the Police Department is organized and operates in Hayward.,"[""Hayward Police Department\u2019s Community Academy goes virtual in April""]","[""Look Deeper"", ""Welcome home"", ""Where opportunity lives"", ""Find what you need. Fast."", ""Working for You"", ""Your Hayward Environment"", ""Community Academy.png"", ""You are here. So is everything else."", ""Search form""]",[],"[""Re-CAP: Hayward\u2019s Updated Climate Action Plan (CAP)"", ""Try induction cooking for free through Ava Community Energy\u2019s Induction Cooktop Lending Program!"", ""The City of Hayward\u2019s Fight Against Food Waste"", ""Decoding Plastic Recycling In California"", ""Keep Hayward Clean and Green with Adopt-A-Block!"", ""City Hall and Nonessential Services Closures: Monday, Feb 12 and Monday, Feb. 19"", ""City Hall and Nonessential Services Closure: Monday, Jan. 15, 2024"", ""Library Closure January 15, 2024"", ""Library Closure: December 23 2023 - January 1 2024"", ""Library closure: November 23 - November 26, 2023."", ""YOU ARE HERE.SO IS EVERYTHING ELSE."", ""Related News"", ""\u200bOrchard Avenue traffic calming project is topic of Monday, Jan. 22, community meeting"", ""City Hall and Nonessential Services Closures: Monday, Feb 12 and Monday, Feb. 19"", ""Monthly workshops about new Hayward sidewalk vending ordinance begin Jan. 31"", ""Report\n Problems"", ""Ask\n Questions"", ""Make a\n Suggestion"", ""Translate"", ""Search""]",[],[] 44,https://norfolkne.gov/assets/site/documentcentral/police/2022-daily-reports/summary/031422summary.pdf,Daily Activity Logs,404,"","",,,,,, @@ -66,16 +66,16 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 47,https://spdblotter.seattle.gov/2013/05/02/man-leads-police-on-chase-in-stolen-patrol-car-after-attacking-bus-riders-officers/,Media Bulletins,200,"Man Leads Police On Chase In Stolen Patrol Car After Attacking Bus Rider, Officers (Updated) - SPD Blotter","","[""Man Leads Police On Chase In Stolen Patrol Car After Attacking Bus Rider, Officers (Updated)""]","[""Find Posts By Topic"", ""You might also like..."", ""Police"", ""City-Wide Information"", ""Top Requests"", ""Policies""]","[""Animals"", ""Assistance"", ""For Businesses"", ""Civil Rights"", ""Elected Officials"", ""Explore the City"", ""Get Involved"", ""Immigrants and Refugees"", ""Issues and Initiatives"", ""Learning and Education"", ""Public Safety"", ""Transportation and Development"", ""Technology"", ""Utilities""]","[""Browse the Archive""]",[],[] 48,http://www.ryepolice.us/announcements/dmv-phone-scam,Media Bulletins,200,Rye Police Department DMV Phone Scam - Rye Police Department,"","[""DMV Phone Scam""]","[""DMV Phone Scam""]","[""Navigation"", ""Follow Us"", ""Facebook"", ""Email Updates"", ""Storm Preparedness Guide""]",[],[],[] 49,https://www.mass.gov/doc/2021-foxborough-police-sergeant-sole-assessment-center-examination-in-title-employment-verification-form/download,Training & Hiring Info,200,"","",[],[],[],[],[],[] -50,https://www.pleasantprairiewi.gov/news/2017_news/1_20_2017___shop_with_a_cop,Media Bulletins,200," - 1/20/2017 | Shop With a Cop - Village of Pleasant Prairie +50,https://www.pleasantprairiewi.gov/news/2017_news/1_20_2017___shop_with_a_cop,Media Bulletins,200," + 1/20/2017 | Shop With a Cop - Village of Pleasant Prairie ","",[],"[""1/20/2017 | Shop With a Cop""]","[""Follow Us on Social Media""]",[],[],[] -51,https://www.bedminster.us/government/police/tips,Contact Info & Agency Meta,200," - Tips - Township of Bedminster +51,https://www.bedminster.us/government/police/tips,Contact Info & Agency Meta,200," + Tips - Township of Bedminster ","","[""Bedminster Township""]","[""Tips""]","[""Bedminster Township""]",[],[],[] 52,https://champaignil.gov/2019/02/20/champaign-police-investigating-tuesday-night-shooting/,Misc Police Activity,200,Champaign Police Investigating Tuesday Night Shooting - City of Champaign,"On Tuesday, Feb. 19, 2019, at approximately 9:32 p.m., a Champaign Police Officer responded to the 1200 block of W Beardsley Avenue after hearing apparent gun shots while on patrol, which was followed by a citizen report of shots heard in the same area.","[""Champaign Police Investigating Tuesday Night Shooting""]","[""News Releases"", ""Department News""]",[],[],[],[] 53,https://champaignil.gov/2012/04/05/champaign-police-officers-cook-with-%e2%80%9ckids-in-the-kitchen%e2%80%9d/,Media Bulletins,200,Champaign Police Officers Cook with “Kids in the Kitchen” - City of Champaign,"","[""Champaign Police Officers Cook with \u201cKids in the Kitchen\u201d""]","[""News Releases"", ""Department News""]",[],[],[],[] -54,https://www.gurnee.il.us/government/departments/police-department/community-involvement/parking,Policies & Contracts,200," - Parking +54,https://www.gurnee.il.us/government/departments/police-department/community-involvement/parking,Policies & Contracts,200," + Parking ","","[""Police Department""]","[""Parking on Village Streets""]","[""Village Hall""]",[],[],[] 55,https://www.ci.auburn.in.us/wp-content/uploads/2019/08/police-rad-class-2.jpg,Poor Data Source,404,"","",,,,,, 56,https://delcopa.gov/treasurer/pdf/2021reassessmentvalues/25.pdf,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] @@ -87,8 +87,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 62,http://boro.dormont.pa.us/labor-agreements/police_union_contract_-_extended/,Policies & Contracts,200,Police_Union_Contract_-_Extended | Borough of Dormont,"","[""Police_Union_Contract_-_Extended""]",[],[],"[""Popular Resources"", ""Departments"", ""Resources""]",[],[] 63,https://coloradosprings.gov/police-department/article/news/motorcyclist-identified-austin-bluffs,Media Bulletins,200,Motorcyclist identified from Austin Bluffs Fatal Crash | City of Colorado Springs,"","[""\nMotorcyclist identified from Austin Bluffs Fatal Crash\n""]","[""Search"", ""Colorado Springs Weekly"", ""GoCOS!"", ""Connect with @CityofCOS""]",[],[],"[""REPORT ONLINE""]",[] 64,https://www.osc.state.ny.us/state-agencies/payroll-bulletins/state-agencies/1923-police-benevolent-association-new-york-state-inc-pbanys-dues-increase,Misc Police Activity,200,State Agencies Bulletin No. 1923 | Office of the New York State Comptroller,State Agencies Bulletin No. 1923,"[""\nState Agencies Bulletin No. 1923\n"", "" ""]","[""Main navigation""]","[""How would you rate our website?""]","[""Disclaimer"", ""Purpose"", ""Affected Employees"", ""Effective Dates"", ""OSC Actions"", ""Agency Actions"", ""Questions"", ""Newsletter Sign-Up Confirmation"", ""Thank you for subscribing to the Comptroller's Weekly Newsletter!""]",[],[] -65,https://www.arlingtontx.gov/city_hall/departments/police/recruiting/internships,Resources,200," - Internships - City of Arlington +65,https://www.arlingtontx.gov/city_hall/departments/police/recruiting/internships,Resources,200," + Internships - City of Arlington ","","[""YOUR COMMUNITY NEWS AND EVENTS"", ""City of Arlington""]","[""Internships""]",[],"[""The Arlington Police Department offers internships for college students interested in a career in law enforcement. Interns will have the opportunity to shadow, ride out, and learn directly from a variety of units within the department."", ""Eligibility"", ""Application Procedure"", ""Application Deadlines"", ""Internship Coordinator""]",[],[] 66,https://www.coppelltx.gov/faq.aspx?qid=351,Not Criminal Justice Related,200,FAQs • Will the rate structure change result in additional r,"",[],"[""\n\u25bc\r\nUtility Billing - Rates & Increasing Block Rate Structure\t\t"", ""Contact a Plumber & Obtain a Permit""]","[""Loading"", ""Categories"", ""Example: Customer A"", ""Example: Customer B"", ""Example: Customer C"", ""Live Edit""]",[],[],[] 67,https://cityofpowell.us/police-agency/traffic-surveys/traffic-survey-report-1-3-18/,Misc Police Activity,200,"City of Powell, Ohio | Traffic Survey Report 1-3-18","","[""\n Traffic Survey Report 1-3-18\n \n ""]","[""CONTACT INFO\n"", ""HELPFUL LINKS"", ""\n LET'S CONNECT\n ""]","[""you're at home in Powell""]","[""614.885.5380"", ""47 Hall Street, Powell, OH 43065"", ""Signup for our newsletter""]",[],[] @@ -150,8 +150,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 123,https://www.mooresville.in.gov/event/police-commission-3/,Poor Data Source,200,Police Commission | Town of Mooresville,"","[""Police Commission""]","[""November 18, 2022 @ 5:00 pm - 6:00 pm"", "" Details "", "" Venue ""]",[],[],[],[] 124,https://delcopa.gov/planning/pdf/demodata/minoritypopulation2020map.pdf,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] 125,http://lafayettepolice.us/208/police-officer-lateral-entry-program,Training & Hiring Info,200,"Police Officer Lateral Entry Program | Lafayette, IN - Official Website",The Lafayette Police Department has long recognized the value of those applicants who have law enforcement experience and provides starting salary/pay incentives commensurate with an applicant's experience.,"[""\r\n\r\nPolice Officer Lateral Entry Program\t\t""]","[""We Are Actively Looking For Lateral Police Officers To Join Us."", ""Transferring Officers""]","[""Loading"", ""Requirements"", ""About the Program"", ""Salary"", ""Paid Time Off"", ""Contact Us"", ""Lieutenant Randy Sherer"", ""Administrative Services Division"", """", """", ""Contact Us"", ""FAQs"", ""Site Links""]",[],[],[] -126,https://www.pleasantprairiewi.gov/news/2016_news/shop_with_a_cop__firefighter,Misc Police Activity,200," - Shop with a Cop/Firefighter - Village of Pleasant Prairie +126,https://www.pleasantprairiewi.gov/news/2016_news/shop_with_a_cop__firefighter,Misc Police Activity,200," + Shop with a Cop/Firefighter - Village of Pleasant Prairie ","",[],"[""Shop with a Cop/Firefighter""]","[""Follow Us on Social Media""]",[],[],[] 127,https://delcopa.gov/health/news/dchdtorelocatecovid19vaccinationclinics.html,Not Criminal Justice Related,200,"Environmental Health - Health Department - Delaware County, Pennsylvania","","[""Division of Environmental Health""]",[],"["""", ""Health Department Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] 128,https://spdblotter.seattle.gov/2018/06/01/seattle-police-officer-charged-with-assault/,Poor Data Source,200,UPDATED: Seattle Police Officer Charged With Assault - SPD Blotter,"","[""UPDATED: Seattle Police Officer Charged With Assault""]","[""Find Posts By Topic"", ""You might also like..."", ""Police"", ""City-Wide Information"", ""Top Requests"", ""Policies""]","[""Animals"", ""Assistance"", ""For Businesses"", ""Civil Rights"", ""Elected Officials"", ""Explore the City"", ""Get Involved"", ""Immigrants and Refugees"", ""Issues and Initiatives"", ""Learning and Education"", ""Public Safety"", ""Transportation and Development"", ""Technology"", ""Utilities""]","[""Browse the Archive""]",[],[] @@ -161,8 +161,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 132,https://norfolkne.gov/assets/site/documentcentral/police/2021-daily-reports/summary/110221summary.pdf,Dispatch Logs,200,"","",[],[],[],[],[],[] 133,https://www.mass.gov/doc/jlm-17-5884-city-of-quincy-and-quincy-police-patrol-officers-association-february-8-2019/download,Policies & Contracts,200,"","",[],[],[],[],[],[] 134,https://www.mass.gov/doc/2022-tewksbury-police-lieutenant-sole-assessment-employment-verification-form/download,Training & Hiring Info,200,"","",[],[],[],[],[],[] -135,https://www.newcastlewa.gov/departments/police/safe_place_program,Resources,200," - Safe Place Program - City of Newcastle +135,https://www.newcastlewa.gov/departments/police/safe_place_program,Resources,200," + Safe Place Program - City of Newcastle ","",[],"[""City of Newcastle""]",[],"[""City of NewcastleWashington""]",[],[] 136,https://www.roseville.ca.us/government/departments/police_department/crime_log/crime_log_feb_15_-_feb_28__2020,Crime Maps & Reports,404,"","",,,,,, 137,https://springfield-or.gov/event/springfield-police-advisory-committee-spac-19/,Poor Data Source,200,Springfield Police Advisory Committee (SPAC) - City of Springfield Oregon,"",[],"[""Springfield Police Advisory Committee (SPAC)""]","[""December 1, 2022 @ 6:00 pm - 7:30 pm"", ""Event Navigation""]","[""Share This Story, Choose Your Platform!"", "" Details "", "" Venue "", ""Organizer""]",[],[] @@ -184,8 +184,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 153,http://www.lafayettepolice.us/296/compliments-concerns,Poor Data Source,200,"Compliments & Concerns | Lafayette, IN - Official Website",We encourage citizens to send in their commendations and complaints so that we can continue growing with our community.,"[""\r\n\r\nCompliments & Concerns\t\t""]","[""Commendations""]","[""Loading"", ""Ways to Send a Compliment"", ""Reasons For Commendation"", ""Received Commendations"", ""Contact Us"", ""Captain Brian Gossard"", """", ""Police Department"", """", ""FAQs"", ""Contact Us"", ""FAQs"", ""Site Links""]",[],[],[] 154,http://www.longbeach.gov/police/press-releases/dui-saturation-patrol-results-1-/,Media Bulletins,200,DUI SATURATION PATROL RESULTS(1),"","[""Long BeachPolice Department""]",[],[],[],[],[] 155,https://chandlerazpd.gov/police-facilities/desert-breeze-substation/,Contact Info & Agency Meta,200,Desert Breeze Substation – Chandler Police Department,"","[""Desert Breeze Substation""]",[],"[""Precinct Leadership"", ""Precinct Headquarters"", ""Quick Links"", ""Police Facilities"", ""\n\n\n\n"", ""\n\n\n\n"", ""\n\n\n\n"", ""\n\n\n\n""]","[""Zac Cummard - Commander"", "" Contact"", "" About the Department"", "" Latest News"", ""\n Courage, Pride, Dedication\n \n \u00a9 2024 Chandler Police Department \n""]",[],[] -156,https://www.pleasantprairiewi.gov/departments/police/news/police_and_fire___rescue_news_archive/2019_news_releases/police_arrest_three_zion_men_in_kidnapping_event,Media Bulletins,200," - Police Arrest Three Zion Men in Kidnapping Event - Village of Pleasant Prairie +156,https://www.pleasantprairiewi.gov/departments/police/news/police_and_fire___rescue_news_archive/2019_news_releases/police_arrest_three_zion_men_in_kidnapping_event,Media Bulletins,200," + Police Arrest Three Zion Men in Kidnapping Event - Village of Pleasant Prairie ","",[],"[""Police Arrest Three Zion Men in Kidnapping Event""]","[""Follow Us on Social Media""]",[],[],[] 157,http://www.longbeach.gov/police/press-releases/murder---6400-block-of-coronado-avenue/,Media Bulletins,200,MURDER - 6400 block of Coronado Avenue,"","[""Long BeachPolice Department""]",[],[],[],[],[] 158,https://www.townofhamburgny.gov/citizens-police-academy/,Training & Hiring Info,404,"","",,,,,, @@ -218,12 +218,12 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 184,https://www.providenceri.gov/hr/wellness/cop-manage-anxiety-9-11/,Poor Data Source,200,City of Providence CoP Manage Anxiety 9.11 - City of Providence,"","[""CoP Manage Anxiety 9.11""]","[""Share this story"", ""Providence City Hall"", ""Follow Us on Social Media:""]","[""City Of Providence"", ""Mayor Brett Smiley"", ""SIGN UP FOR OUR WEEKLY E-NEWS | \nHaga clic aqu\u00ed para espa\u00f1ol"", ""Lists*""]",[],[],[] 185,https://spdblotter.seattle.gov/2017/01/07/police-respond-to-three-fatal-heroin-overdoses-remind-public-of-good-samaritan-law/,Media Bulletins,-1,"","",,,,,, 186,https://champaignil.gov/2012/05/14/police-respond-to-weapon-call-central-high-school-610-w-university-ave/,Media Bulletins,200,"Police Respond to Weapon Call (Central High School, 610 W. University Ave.) - City of Champaign","","[""Police Respond to Weapon Call (Central High School, 610 W. University Ave.)""]","[""News Releases"", ""Department News""]",[],[],[],[] -187,https://www.ci.plymouth.mi.us/services/police,Poor Data Source,200," - Police - City of Plymouth, MI +187,https://www.ci.plymouth.mi.us/services/police,Poor Data Source,200," + Police - City of Plymouth, MI ","","[""Police""]",[],[],[],[],[] 188,https://alpha.austin.gov/es/police-oversight/notice-of-complaint-related-to-2022-0202/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] -189,https://www.rentonwa.gov/city_hall/police/police_services/special_operations,Contact Info & Agency Meta,200," - Special Operations - City of Renton +189,https://www.rentonwa.gov/city_hall/police/police_services/special_operations,Contact Info & Agency Meta,200," + Special Operations - City of Renton ","","[""CITY OF RENTON\r\n\t\t\t\t\tWASHINGTON""]","[""Special Operations""]",[],"[""SWAT"", ""Directed Enforcement Team (DET)"", ""Special Enforcement Team (SET)"", ""Drug Activity and Reporting""]",[],[] 190,https://alpha.austin.gov/es/police-oversight/2020-06-05-13/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] 191,https://dagsboro.delaware.gov/ngg_tag/new-police-cars/,Poor Data Source,200,New Police Cars Archives - Town of Dagsboro,"",[],"[""Images tagged \""new-police-cars\""""]","[""Menu"", ""Online Payments"", ""Agendas & Minutes"", ""Contact Us"", ""Connect With Us!""]",[],[],[] @@ -231,12 +231,12 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 193,https://www.coppelltx.gov/faq.aspx?qid=106,Not Criminal Justice Related,200,FAQs • Is it legal to burn trash in Coppell?,"",[],"[""\n\u25bc\r\nFire Department - Services & Education\t\t"", ""Helpful Resources"", ""Helpful Resources"", ""Helpful Resources"", ""Helpful Resources"", ""Emergency Medical Services (EMS) Patient Medical Records and/or Medical Billing Records""]","[""Loading"", ""Categories"", ""Live Edit""]",[],[],[] 194,https://police.bixbyok.gov/faq.aspx?qid=83,Resources,200,FAQs • How do I change my password?,"",[],"[""\n\u25bc\r\nNixle Alert System\t\t""]","[""Loading"", ""Categories"", ""Live Edit"", ""Helpful Links"", ""FAQs"", ""Site Links""]",[],[],[] 195,https://beaumonttexas.gov/beaumont-police-arrest-3-for-aggravated-sexual-assault-aggravated-robbery-and-aggravated-kidnapping-1155-ih-10-n/,Poor Data Source,404,"","",,,,,, -196,https://police.crystalmn.gov/police/services/request_a_report,Records Request Info,200," - Request a Report - City of Crystal-Police +196,https://police.crystalmn.gov/police/services/request_a_report,Records Request Info,200," + Request a Report - City of Crystal-Police ","","[""Request a Report""]",[],"[""Sign up for a city newsletter or notification."", ""Police Department"", ""Lobby Hours:""]","[""Report requests will be processed within 10 business days."", ""Monday - Friday""]",[],[] 197,https://www.southamptontownnypolice.gov/608/animal-control,Not Criminal Justice Related,200,"Animal Control | Southampton, NY - Official Website","","[""\r\n\r\nAnimal Control\t\t""]","[""Cruelty & Neglect Complaints"", ""Resources"", ""SPCAs, Humane Societies & Shelters"", ""Government Agencies"", ""Law Enforcement Sites"", ""Animal Control Agencies"", ""Miscellaneous Local Links"", ""Dog Licenses""]","[""Loading"", ""Site Tools"", ""Contact Us"", ""Animal Control Office"", ""Ryan Murphy"", """", ""FAQs"", ""Contact Us"", ""Site Links""]",[],[],[] -198,https://www.lomalinda-ca.gov/services/police_department/tips,Resources,200," - Tips - City of Loma Linda +198,https://www.lomalinda-ca.gov/services/police_department/tips,Resources,200," + Tips - City of Loma Linda ","","[""Tips""]",[],[],"[""City Hall Hours:"", ""Building & Safety Hours:"", ""Quick Links:""]",[],[] 199,https://www.mass.gov/doc/sco-pace-disenrol-scopdf/download,Not Criminal Justice Related,-1,"","",,,,,, 200,https://www.mass.gov/doc/unit-5-cops-salary-chart-effective-742021/download,Poor Data Source,200,"","",[],[],[],[],[],[] @@ -248,8 +248,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 206,https://www.ci.oakley.ca.us/police-accident-reports/,Accident Reports,200,Police Accident Reports - City of Oakley,"","[""Police Accident Reports""]",[],[],[],[],[] 207,https://delcopa.gov/jdboard/index.html,Contact Info & Agency Meta,200,"Board of Managers of Juvenile Detention - Delaware County, Pennsylvania","","[""Board of Managers of Juvenile Detention""]",[],"[""Mission"", ""Board Members"", ""MEETING SCHEDULE"", ""BYLAWS"", ""ORDINANCE"", ""HELPFUL RESOURCES"", ""NEWS RELEASES"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]","[""2024""]",[],[] 208,https://barnegatpolice.us/wpdmpro-sitemap.xml,Poor Data Source,200,"","",[],[],[],[],[],[] -209,https://www.ci.san-bernardino.ca.us/city_hall/police_department/over_100_years_of_service/historical_photos,Not Criminal Justice Related,200," - Historical Photos - City of San Bernardino +209,https://www.ci.san-bernardino.ca.us/city_hall/police_department/over_100_years_of_service/historical_photos,Not Criminal Justice Related,200," + Historical Photos - City of San Bernardino ","","[""City of San Bernardino California""]","[""Historical Photos""]",[],[],[],[] 210,https://delcopa.gov/council/2018minutes/103118minutes.pdf,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] 211,http://www.longbeach.gov/police/press-releases/civilian-employee-arrested/,Media Bulletins,200,CIVILIAN POLICE DEPARTMENT ARRESTED,"","[""Long BeachPolice Department""]",[],[],[],[],[] @@ -257,8 +257,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 213,"https://norfolkne.gov/government/departments/police-division/press-releases/february-14,-2022-press-release.html",Media Bulletins,200,"February 14, 2022 Press Release - City of Norfolk, NE","","[""City of Norfolk, NE"", ""Police Division"", ""February 14, 2022 Press Release""]",[],[],[],"[""Still looking for something?""]","[""Contact Us"", ""Pay or Apply..."", ""Government..."", ""Services..."", ""Business..."", ""Amenities...""]" 214,https://www.southamptontownnypolice.gov/faq.aspx?qid=138,Training & Hiring Info,200,FAQs • How can I find out about any job opportunities?,"",[],"[""\n\u25bc\r\nHuman Resources\t\t""]","[""Loading"", ""Site Tools"", ""Categories"", ""Live Edit"", ""Contact Us"", ""Site Links""]",[],[],[] 215,http://www.lafayettepolice.us/714/city-website-policy,Not Criminal Justice Related,200,"City Website Policy | Lafayette, IN - Official Website","The City of Lafayette, IN local government agency is committed to protecting the rights of all our website visitors. We recognize our obligation to keep sensitive information secure and have created this privacy statement to share our information gathering and dissemination practices for this website. ","[""\r\n\r\nCity Website Policy\t\t""]",[],"[""Loading"", ""Contact Us"", ""FAQs"", ""Site Links""]",[],[],[] -216,https://www.bedminster.us/government/police/vision__mission___core_values/body_camera,Poor Data Source,200," - Body Camera - Township of Bedminster +216,https://www.bedminster.us/government/police/vision__mission___core_values/body_camera,Poor Data Source,200," + Body Camera - Township of Bedminster ","","[""Bedminster Township""]","[""Body Camera""]","[""Bedminster Township""]",[],[],[] 217,https://www.mass.gov/doc/tavares-bruce-v-fall-river-police-department-51707/download,Court Cases,200,"","",[],[],[],[],[],[] 218,https://delcopa.gov/vote/pdf/2021/delco-boe-meeting-notice_certification-municipal-primary-results_6-7-2021.pdf,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] @@ -286,8 +286,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 240,https://delcopa.gov/sustainability/commission/meetingminutes/sustainabilitycommissionkick-offmeetingminutesoct2020.pdf,Poor Data Source,200,"404 - Delaware County, Pennsylvania","","[""404 Error""]",[],"[""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] 241,https://delcopa.gov/publicrelations/publicrelations/releases/2020/herobowlboard.html,Poor Data Source,200,"404 - Delaware County, Pennsylvania","","[""404 Error""]",[],"[""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] 242,https://www.mass.gov/doc/minutes-of-april-2019-chicopee/download,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] -243,https://www.roseville.ca.us/government/departments/police_department/divisions/police_explorers,Resources,200," - Police Explorers - City of Roseville +243,https://www.roseville.ca.us/government/departments/police_department/divisions/police_explorers,Resources,200," + Police Explorers - City of Roseville ","","[""City of Roseville""]","[""Police Explorers""]","[""Roseville Police Department ""]",[],[],[] 244,https://www.osc.state.ny.us/state-agencies/payroll-bulletins/state-police/sp-130-2010-state-police-expertise-pay,Media Bulletins,200,State Police Bulletin No. SP-130 | Office of the New York State Comptroller,To notify the Division of State Police of the new Additional Pay code and procedures for processing Expertise Pay,"[""\nState Police Bulletin No. SP-130\n"", "" ""]","[""Main navigation""]","[""How would you rate our website?""]","[""Disclaimer"", ""Purpose"", ""Affected Employees"", ""Background"", ""Effective Date(s)"", ""Payment Information and Eligibility Criteria"", ""OSC Actions"", ""Control-D Report"", ""Questions"", ""Newsletter Sign-Up Confirmation"", ""Thank you for subscribing to the Comptroller's Weekly Newsletter!""]","[""NPAY770 One Time Payment Report""]",[] 245,https://norfolkne.gov/assets/site/documentcentral/police/2022-daily-reports/summary/080822summary.pdf,Poor Data Source,404,"","",,,,,, @@ -296,8 +296,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 248,https://www.lynchburgvapolice.gov/news-updates/homicide-1100-blk-of-15th-street/,Media Bulletins,200,HOMICIDE 1100-BLK OF 15TH STREET - Lynchburg Police Department,"","[""HOMICIDE 1100-BLK OF 15TH STREET""]",[],[],"[""Contact Us"", ""Site Links"", ""Site Links""]",[],[] 249,https://www.antioch.il.gov/wpfb-file/04-19-16-police-pension-agenda-pdf/,Media Bulletins,200,"04-19-16 Police Pension Agenda - Antioch, IL",8427 04 19 16 police pension agenda pdf commissions fund agendas 2016 1460742126 02c861b2676b01cc56cb3a86703c52d6 213x300 _extdmrzqpxvu thumb jpg 15 12 42 06 0 pdf application trustees mary c dominiak ed macek jerry t johnson scott a pierce jay jozwiak ted p poulos lawrence m hanson mayor lori k folbrick village clerk agenda of antioch lake,"[""04-19-16 Police Pension Agenda""]",[],[],[],[],[] 250,https://delcopa.gov/publicrelations/releases/2020/pdf/citizencorpsorienationfeb21.pdf,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] -251,https://piedmont.ca.gov/services___departments/police/transparency_portal/training_materials,Policies & Contracts,200," - Training Materials - City of Piedmont +251,https://piedmont.ca.gov/services___departments/police/transparency_portal/training_materials,Policies & Contracts,200," + Training Materials - City of Piedmont ","","[""\r\n City of\r\n Piedmont""]",[],[],[],[],[] 252,https://police.birminghamal.gov/command-staff/lieutenant-richard-haluska/,Contact Info & Agency Meta,200,Lieutenant Richard Haluska | Birmingham Police Department,"","[""\n\n\n Birmingham Police Department\n\n\t\t\t\t\tCommitment | Excellence | Integrity\t\t\t\t\n\n""]","[""Putting People First"", ""Lieutenant Richard Haluska""]",[],"[""Hours & Info"", ""Upcoming Events"", ""CRIMESTOPPERS"", ""Police Information"", ""Quick Links"", ""I Need...""]",[],[] 253,https://cityofgulfbreeze.us/staff/police-general/,Contact Info & Agency Meta,200,Police General - City of Gulf Breeze,"","[""Police General""]","[""Mobile Menu"", ""Before Header"", ""Header Right"", ""Police General"", ""Primary Sidebar"", ""Footer"", ""\nWhat can we help you find?\n""]","[""Colleagues"", ""Police Redlight"", ""Police Permits"", ""No Active Advisories"", "" City Projects"", ""Get Text Updates"", ""City of Gulf Breeze"", ""Most Requested"", ""County Agencies"", ""State Sites""]","[""Highpoint Water Main Replacement"", ""Eufaula Outfall Treatment Unit \u2013 RESTORE"", ""Fairpoint Septic-to-Sewer (STS) Conversion"", ""City Hall""]",[],[] @@ -314,28 +314,28 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 264,https://police.greenvillesc.gov/faq.aspx?qid=317,Resources,200,FAQs • Where are you located?,"",[],"[""\n\u25bc\r\nMunicipal Court - General\t\t""]","[""Loading"", ""Categories"", ""Live Edit""]",[],[],[] 265,https://southamptontownnypolice.gov/722/great-east-end-cleanup---2022,Poor Data Source,404,"","",,,,,, 266,http://www.ryepolice.us/parking/attachment/parkingappeal-2,Resources,200,Rye Police Department Parking Appeal Form - Rye Police Department,"","[""Parking Appeal Form""]","[""Parking Appeal Form""]","[""Navigation"", ""Follow Us"", ""Facebook"", ""Email Updates"", ""Storm Preparedness Guide""]",[],[],[] -267,https://www.roseville.ca.us/government/departments/electric_utility/about_us/building_and_renovation_copy/request_for_proposal_archived,Poor Data Source,200," - Bids & RFP's - City of Roseville +267,https://www.roseville.ca.us/government/departments/electric_utility/about_us/building_and_renovation_copy/request_for_proposal_archived,Poor Data Source,200," + Bids & RFP's - City of Roseville ","","[""City of Roseville""]","[""Bids & RFP's""]","[""City of Roseville""]",[],[],[] -268,https://www.knoxvilletn.gov/archived_news_stories/2009/knoxville_police_prepared_for_holiday_traffic,Media Bulletins,200," - Knoxville Police Prepared For Holiday Traffic - City of Knoxville +268,https://www.knoxvilletn.gov/archived_news_stories/2009/knoxville_police_prepared_for_holiday_traffic,Media Bulletins,200," + Knoxville Police Prepared For Holiday Traffic - City of Knoxville ",communications*,"[""Knoxville Police Prepared For Holiday Traffic"", ""Communications Director"", ""Knoxville Police Prepared For Holiday Traffic""]",[],[],[],[],[] 269,https://coloradosprings.gov/police-department/article/news/colorado-springs-police-departments-k9-zev,Media Bulletins,200,Colorado Springs Police Department’s K9 Zev to get donation of body armor | City of Colorado Springs,"","[""\nColorado Springs Police Department\u2019s K9 Zev to get donation of body armor\n""]","[""Search"", ""Colorado Springs Weekly"", ""GoCOS!"", ""Connect with @CityofCOS""]",[],[],"[""REPORT ONLINE""]",[] 270,https://rexburg.us/police-identify-woman-killed-in-9-vehicle-crash-in-sandy/,Poor Data Source,522,"","",,,,,, 271,https://beaumonttexas.gov/beaumont-police-investigating-homicide-4300-woodlawn/,Poor Data Source,404,"","",,,,,, 272,https://delcopa.gov/sustainability/pdf/raise/trailplanappendixe.pdf,Poor Data Source,200,"404 - Delaware County, Pennsylvania","","[""404 Error""]",[],"[""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] 273,https://www.mass.gov/doc/chaves-david-v-boston-police-department-related-superior-court-order-42711/download,Court Cases,200,"","",[],[],[],[],[],[] -274,https://www.ci.vallejo.ca.us/our_city/departments_divisions/police_department,Contact Info & Agency Meta,200," - Home - City of Vallejo Police Department +274,https://www.ci.vallejo.ca.us/our_city/departments_divisions/police_department,Contact Info & Agency Meta,200," + Home - City of Vallejo Police Department ","","[""Our mission""]",[],"[""Vallejo Police Department""]",[],[],[] 275,https://www.mass.gov/doc/shackford-michael-v-boston-police-department-72414/download,Court Cases,200,"","",[],[],[],[],[],[] 276,https://norfolkne.gov/assets/site/documentcentral/police/2022-daily-reports/blotter/041422blotter.pdf,Poor Data Source,404,"","",,,,,, -277,https://www.ci.san-bernardino.ca.us/city_hall/police_department/emergency_management/cert/cert_basic_training,Not Criminal Justice Related,200," - CERT Basic Training - City of San Bernardino +277,https://www.ci.san-bernardino.ca.us/city_hall/police_department/emergency_management/cert/cert_basic_training,Not Criminal Justice Related,200," + CERT Basic Training - City of San Bernardino ","","[""City of San Bernardino California""]","[""CERT Basic Training""]",[],[],[],[] 278,https://beaumonttexas.gov/beaumont-police-investigating-aggravated-robbery-2568-college/,Poor Data Source,404,"","",,,,,, -279,https://police.crystalmn.gov/police/community_outreach/run_for_leo,Misc Police Activity,200," - Crystal K9 Run - City of Crystal-Police +279,https://police.crystalmn.gov/police/community_outreach/run_for_leo,Misc Police Activity,200," + Crystal K9 Run - City of Crystal-Police ","","[""Crystal K9 Run""]",[],"[""Sign up for a city newsletter or notification."", ""Police Department"", ""Lobby Hours:""]","[""Monday - Friday""]",[],[] 280,https://wyoming.delaware.gov/wp-content/uploads/sites/33/nggallery/3rd-annual-wyoming-police-department-fishing-derby/p1010878.jpg,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] 281,http://www.longbeach.gov/police/press-releases/robbery-suspects-arrestd-and-charged/,Media Bulletins,200,ROBBERY SUSPECTS ARRESTD and CHARGED,"","[""Long BeachPolice Department""]",[],[],[],[],[] @@ -349,8 +349,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 289,https://www.mass.gov/doc/revocation-establishment-and-merging-of-police-promotional-eligible-lists-4/download,Policies & Contracts,200,"","",[],[],[],[],[],[] 290,https://champaignil.gov/tag/coffee-with-a-cop/,Misc Police Activity,200,Coffee with a Cop Archives - City of Champaign,"","[""Items tagged: Coffee with a Cop""]","[""Champaign Police Join Community for Coffee with a Cop"", ""Champaign Police Pull Up a Chair for Coffee with a Cop"", ""Champaign Police Announces Return of \u201cCoffee with a Cop\u201d"", ""Champaign Police Invite Community Members for Coffee and Conversation"", ""Champaign Police Invite Community Members for Coffee and Conversation"", ""News Releases"", ""Department News""]",[],[],[],[] 291,https://coloradosprings.gov/police-department/article/news/update-attempted-homicide-4300-block,Media Bulletins,200,Update: Attempted Homicide 4300 block of Airport Road | City of Colorado Springs,"","[""\nUpdate: Attempted Homicide 4300 block of Airport Road\n""]","[""Search"", ""Colorado Springs Weekly"", ""GoCOS!"", ""Connect with @CityofCOS""]",[],[],"[""REPORT ONLINE""]",[] -292,https://www.sanramon.ca.gov/our_city/departments_and_divisions/police/srpd_calendar,Poor Data Source,200," - SRPD Calendar - City of San Ramon +292,https://www.sanramon.ca.gov/our_city/departments_and_divisions/police/srpd_calendar,Poor Data Source,200," + SRPD Calendar - City of San Ramon ","","[""SRPD Calendar""]","[""Contact Us"", ""Useful Links""]",[],[],[],[] 293,https://alpha.austin.gov/es/police-oversight/formal-complaint-family-violence-involving-mental-illness-and-other-policy-violations/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] 294,https://alpha.austin.gov/es/police-oversight/notice-of-complaint-related-to-2022-0765/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] @@ -370,8 +370,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 308,http://lafayettepolice.us/3469/gis-zoning-maps,Not Criminal Justice Related,200,"GIS & Zoning Maps | Lafayette, IN - Official Website","Check whether you are in city limits, what your zoning is and property owner information.","[""\r\n\r\nGIS & Zoning Maps\t\t""]",[],"[""Loading"", ""Contact Us"", ""FAQs"", ""Site Links""]",[],[],[] 309,https://www.antioch.il.gov/event/police-and-fire-commission/,Poor Data Source,200,"Police and Fire Commission - Antioch, IL","","[""Police and Fire Commission""]",[],[],[],[],[] 310,http://www.rocklin.ca.us/news/rocklin-appoints-police-chief-chad-butler-interim-city-manager,Media Bulletins,200,Rocklin Appoints Police Chief Chad Butler as Interim City Manager - City of Rocklin,"","[""\nCity of Rocklin\n"", ""\nRocklin Appoints Police Chief Chad Butler as Interim City Manager\n""]","[""\n\nFacebook\n\n"", ""\n\nTwitter\n\n"", ""\n\nInstagram\n\n"", ""\n\nContact Us\n\n"", ""\n\nAgendas & Minutes\n\n"", ""\n\nCalendar\n\n"", ""\n\nDepartments\n\n"", ""\n\nMunicipal Code\n\n"", ""\n\nPublic Hearing Notices\n\n"", ""\n\nTransparency\n\n"", ""\n\nWebsite Feedback\n\n"", ""Share this page"", ""This item appears in"", ""Locations"", ""\n\nCity Hall\n\n"", ""\n\nCorp Yard\n\n"", ""\n\nHistorical Sites\n\n"", ""\n\nFire Administration\n\n"", ""\n\nParks\n\n"", ""\n\nPolice Station\n\n"", ""\n\nQuarry Park\n\n"", ""Resources"", ""\n\nAccessibility / ADA Information\n\n"", ""\n\nEmployment\n\n"", ""\n\nBids and RFPs\n\n"", ""\n\nSitemap\n\n"", ""\n\nVolunteer\n\n"", ""\n\nWeb Policies\n\n"", ""Connect"", ""\n\nContact Us\n\n"", ""\n\nCity Newsroom\n\n"", ""\n\nCity Phone Numbers\n\n"", ""\n\neNewsletter Signup\n\n"", ""\n\nSocial Media\n\n"", ""Get Started"", ""\n\nCity Council Agendas\n\n"", ""\n\nAgendas & Public Notices\n\n"", ""\n\nQuarry Park\n\n"", ""\n\nJob Openings\n\n"", ""\n\nRent a Venue\n\n"", ""\n\nReport a Community Issue\n\n"", ""\n\nView Traffic Alerts\n\n"", ""\n\nPolice Department\n\n"", ""Proud Partners"", ""\n\nQuarry Park\n\n"", ""\n\nAstound Broadband\n\n"", ""\n\nRocklin, California\n\n"", ""Log in"", ""Commands""]",[],[],[],[] -311,https://www.rentonwa.gov/city_hall/police/administrative_services/community_programs/renton_police_safe_place,Resources,200," - Renton Police Safe Place - City of Renton +311,https://www.rentonwa.gov/city_hall/police/administrative_services/community_programs/renton_police_safe_place,Resources,200," + Renton Police Safe Place - City of Renton ","","[""CITY OF RENTON\r\n\t\t\t\t\tWASHINGTON""]","[""Renton Police Safe Place""]",[],"[""How It Works"", ""The Importance of Reporting Hate Crimes"", ""Ways to Report Hate Crimes"", ""Information for Participating Businesses and Organizations"", ""How can my business or organization participate?"", ""What are my responsibilities?"", ""Our Partners""]","[""Renton PD Safe Place Program Liaison""]","[""Ofcr. Roseanne Hynes""]" 312,https://police.greenvillesc.gov/1757/reserve-a-conference-room,Not Criminal Justice Related,200,"My Account • Greenville, SC • CivicEngage","Engage your community – connect to news, events and information you care about.","[""Website Sign In""]","[""Sign In""]","[""Loading""]",[],[],[] 313,https://cheswold.delaware.gov/cheswold-police-department-crime-statistics/march-16-activity-report/,Incident Reports,200,March 16 Activity Report - Town of Cheswold,"","[""Cheswold""]","[""Delaware"", ""March 16 Activity Report""]","[""Menu""]","[""Address:"", ""Call Us:"", ""Reach Out:""]",[],[] @@ -386,8 +386,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 322,https://www.arlingtonva.us/government/programs/housing/housing-arlington-latest-news/county-board-reviews-scope-and-charge-for-missing-middle-housing-study,Not Criminal Justice Related,200,County Board Reviews Scope and Charge for Missing Middle Housing Study – Official Website of Arlington County Virginia Government,"September 23, 2020 | Updated: October 2, 2020 PROGRAM NEWS:Study Kick Off Scheduled for Oct. 28 at 7 p.m.At a work session on Sept. 22, the County Board reviewed and discussed a revised Missing Middle Housing Study Scope and Charge, which was shaped by community feedback and...","[""County Board Reviews Scope and Charge for Missing Middle Housing Study""]",[],"[""CONTACT US"", ""QUICK LINKS"", ""CONNECT"", ""STAY INFORMED""]",[],[],[] 323,http://lafayettepolice.us/1693/fountain-plaza-and-sculptures,Not Criminal Justice Related,200,"Fountain Plaza and Sculptures | Lafayette, IN - Official Website","","[""\r\n\r\nFountain Plaza and Sculptures\t\t""]",[],"[""Loading"", ""Contact Us"", ""FAQs"", ""Site Links""]",[],[],[] 324,https://alpha.austin.gov/es/police-oversight/notice-of-complaint-related-to-2022-0716/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] -325,https://sanramon.ca.gov/our_city/departments_and_divisions/police/community_programs/youth_services/police_explorers,Misc Police Activity,200," - Police Explorers - City of San Ramon +325,https://sanramon.ca.gov/our_city/departments_and_divisions/police/community_programs/youth_services/police_explorers,Misc Police Activity,200," + Police Explorers - City of San Ramon ","","[""Police Explorers""]","[""Contact Us"", ""\nPolice Explorers"", ""Contact Us"", ""Useful Links""]",[],[],[],[] 326,http://lafayettepolice.us/455/aquatics,Not Criminal Justice Related,200,"Aquatics | Lafayette, IN - Official Website","Take a look at the 3 different aquatic centers open to the public and find out how to book a private party, sign up for programs and more.","[""\r\n\r\nAquatics\t\t""]",[],"[""Loading"", ""News Flash"", ""January 2024"", ""Alerts"", ""FAQs"", ""Contact Us"", ""FAQs"", ""Site Links""]","[""\nParks Department is Hiring Seasonal Positions! \n"", ""\n2024 Lifeguard Certification Course Registration Open Now! \n""]",[],[] 327,http://police.portlandmaine.gov/396/tickets,Contact Info & Agency Meta,200,"Tickets | Portland, ME - Official Website","Welcome to the beautiful historic City of Portland. We hope you enjoy your visit. We encourage you to make use of our many conveniently located parking garages and lots. For your convenience, we’ve included a link to view the downtown Portland.","[""Tickets""]",[],[],[],[],[] @@ -397,18 +397,18 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 331,https://coloradosprings.gov/city-council/article/public-notice/police-cso-graduation,Media Bulletins,200,Police CSO Graduation | City of Colorado Springs,"","[""\nPolice CSO Graduation\n""]","[""Search"", ""Colorado Springs Weekly"", ""GoCOS!"", ""Connect with @CityofCOS""]",[],[],"[""REPORT ONLINE""]",[] 332,https://www.coppelltx.gov/340/get-involved,Resources,200,"Get Involved | Coppell, TX",There are a variety of ways that you can volunteer with the Cozby Library and Community Commons or other community organizations.,"[""\r\n\r\nGet Involved\t\t""]","[""Library Volunteers""]","[""Loading"", ""Adult Volunteers"", ""Friends of the Cozby Library & Community Commons"", ""Teen Volunteers"", ""Volunteer Opportunities in DFW""]",[],[],[] 333,https://alpha.austin.gov/es/police-oversight/2020-08-14-3/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] -334,https://www.knoxvilletn.gov/archived_news_stories/2010/knoxville_police_prepared_for_increase_of_holiday_,Media Bulletins,200," - Knoxville Police Prepared for Increase of Holiday Traffic - City of Knoxville +334,https://www.knoxvilletn.gov/archived_news_stories/2010/knoxville_police_prepared_for_increase_of_holiday_,Media Bulletins,200," + Knoxville Police Prepared for Increase of Holiday Traffic - City of Knoxville ",communications*,"[""Knoxville Police Prepared for Increase of Holiday Traffic"", ""Communications Director"", ""Knoxville Police Prepared for Increase of Holiday Traffic""]",[],[],[],[],[] 335,http://www.lafayettepolice.us/faq.aspx?qid=142,Not Criminal Justice Related,200,FAQs • What are the benefits of designating my property as p,"",[],"[""\n\u25bc\r\nHistoric Preservation Commission\t\t"", """"]","[""Loading"", ""Categories"", ""Live Edit"", ""Contact Us"", ""FAQs"", ""Site Links""]",[],[],[] 336,https://police.kingstontn.gov/events/categories/,Poor Data Source,200,Categories – Kingston Police Department,"","[""Categories""]",[],[],[],[],[] -337,https://www.plymouthmi.gov/government/departments/police/preliminary_breath_tests,Contact Info & Agency Meta,200," - Preliminary Breath Tests - City of Plymouth, MI -","","[""Preliminary Breath Tests""]",[],[],[],[],[] +337,https://www.plymouthmi.gov/government/departments/police/preliminary_breath_tests,Contact Info & Agency Meta,200," + Preliminary Breath tests - City of Plymouth, MI +","","[""Preliminary Breath tests""]",[],[],[],[],[] 338,https://www.minneapolismn.gov/government/departments/police/professional-standards/discipline-matrix/,Policies & Contracts,200,Discipline Matrix and Narrative - City of Minneapolis,You can read how the Minneapolis Police Department (MPD) imposes employee discipline. ,"[""Discipline matrix and narrative"", ""Need help? We're here for you.""]","[""What to know"", ""Documents"", ""Contact us""]","[""\n\r\n Discipline matrix and narrative\r\n \n"", ""Minneapolis Police Department"", ""Connect with the Minneapolis Police Department""]","["" Request accessible format""]",[],[] 339,https://cityofpowell.us/powell-police-searching-for-suspect-after-attempted-home-robbery/41-3/,Poor Data Source,200,"City of Powell, Ohio | 41.3","","[""\n 41.3\n \n ""]","[""CONTACT INFO\n"", ""HELPFUL LINKS"", ""\n LET'S CONNECT\n ""]","[""you're at home in Powell""]","[""614.885.5380"", ""47 Hall Street, Powell, OH 43065"", ""Signup for our newsletter""]",[],[] -340,https://ci.san-bernardino.ca.us/city_hall/police_department/online_reports,Poor Data Source,200," - Online Reports - City of San Bernardino +340,https://ci.san-bernardino.ca.us/city_hall/police_department/online_reports,Poor Data Source,200," + Online Reports - City of San Bernardino ","","[""City of San Bernardino California""]","[""Online Reports""]",[],[],[],[] 341,https://delcopa.gov/treasurer/pdf/2021reassessmentvalues/03.pdf,Poor Data Source,200,"","",[],[],[],[],[],[] 342,https://delcopa.gov/publicrelations/releases/2019/domesticviolenceawareness.html,Media Bulletins,200,"Recognizing October as Domestic Violence Awareness Month - Delaware County, Pennsylvania","","[""Recognizing October as Domestic Violence Awareness Month""]",[],"[""Public Relations Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] @@ -450,8 +450,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 378,https://delcopa.gov/purchasing/bidsprops/delcomicrowavekmz.zip,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] 379,https://www.mass.gov/doc/woburnpolicelieutenant5802rtf/download,Training & Hiring Info,200,"","",[],[],[],[],[],[] 380,https://delcopa.gov/employment/jobpostings/communityengagementspecialist.html,Training & Hiring Info,200,"Community Engagement Specialist - Delaware County, Pennsylvania","","[""Community Engagement Specialist""]",[],"[""Delco Jobs Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]","[""Position Description"", ""Essential Duties"", ""Skills"", ""Qualifications"", ""Contact""]",[],[] -381,https://police.crystalmn.gov/g_o_v_e_r_n_m_e_n_t/departments_a-_z/administration,Contact Info & Agency Meta,200," - Administration - City of Crystal +381,https://police.crystalmn.gov/g_o_v_e_r_n_m_e_n_t/departments_a-_z/administration,Contact Info & Agency Meta,200," + Administration - City of Crystal ",Links and information about the City of Crystal Administration Department.,"[""Administration""]","[""City Hall""]","[""Sign up for a city newsletter or notification."", ""City Hall"", ""Regular Hours:""]","[""Monday - Friday""]",[],[] 382,https://coloradosprings.gov/police-department/article/news/public-assistance-needed-identify-sexual,Media Bulletins,200,Public Assistance Needed to Identify Sexual Assault Suspect | City of Colorado Springs,"","[""\nPublic Assistance Needed to Identify Sexual Assault Suspect\n""]","[""Search"", ""Colorado Springs Weekly"", ""GoCOS!"", ""Connect with @CityofCOS""]",[],[],"[""REPORT ONLINE""]",[] 383,https://delcopa.gov/publicrelations/releases/2019/girlsspark.html,Not Criminal Justice Related,200,"County Council Recognizing the Girls Spark Conference - Delaware County, Pennsylvania","","[""County Council Recognizing the Girls Spark Conference""]",[],"[""Public Relations Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] @@ -499,11 +499,11 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 425,https://www.dps.arkansas.gov/law-enforcement/arkansas-state-police/directors-office/asp-commission/,Contact Info & Agency Meta,200,ASP Commission - Arkansas Department of Public Safety,"","["" Flag Status""]","[""ASP Commission"", ""Meeting Minutes"", ""Commission Rules"", ""Contact ASP"", ""Helpful ASP links"", ""Connect with ASP"", ""Respect. Integrity. \nCUSTOMER SERVICE. TEAMWORK. \nSERVANT LEADERSHIP. \nCONTINUOUS IMPROVEMENT"", """", ""\u00a9 2024 All rights Reserved. Arkansas.gov ""]","[""Jeffery Teague"", ""John Allison"", ""Jim Hinkle"", ""Ken Reeves"", ""Neff Basore"", ""Mike Akin"", ""Stephen Edwards""]",[],"[""About DPS"", ""DPS Links"", ""DPS Address"", ""Your Arkansas.gov"", ""Top Online Services"", ""Helpful Information""]",[] 426,https://alpha.austin.gov/police-oversight/notice-of-complaint-related-to-2022-0455/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] 427,https://coloradosprings.gov/police-department/page/investigations-division,Poor Data Source,403,"","",,,,,, -428,https://www.rentonwa.gov/city_hall/police/investigations/domestic_violence/cycle_of_violence,Media Bulletins,200," - Cycle of Violence - City of Renton +428,https://www.rentonwa.gov/city_hall/police/investigations/domestic_violence/cycle_of_violence,Media Bulletins,200," + Cycle of Violence - City of Renton ","","[""CITY OF RENTON\r\n\t\t\t\t\tWASHINGTON""]","[""Cycle of Violence""]",[],"[""Phase 1: Tension Building Phase"", ""Batterer may:"", ""Partner may:"", ""Phase 2: Crisis Phase"", ""Batterer may:"", ""Partner may:"", ""Phase 3: Calmer Phase"", ""Batterer may:"", ""Partner may:""]","[""""]","[""Domestic Violence Victim Advocate""]" -429,https://www.pleasantprairiewi.gov/departments/police/news/police_and_fire___rescue_news_archive/2019_news_releases/release_of_sex_offender_into_community_-_navarro,Media Bulletins,200," - Release of Sex Offender into Community - Navarro - Village of Pleasant Prairie +429,https://www.pleasantprairiewi.gov/departments/police/news/police_and_fire___rescue_news_archive/2019_news_releases/release_of_sex_offender_into_community_-_navarro,Media Bulletins,200," + Release of Sex Offender into Community - Navarro - Village of Pleasant Prairie ","",[],"[""Release of Sex Offender into Community - Navarro""]","[""Follow Us on Social Media""]",[],[],[] 430,https://norfolkne.gov/assets/site/documentcentral/police/2021-daily-reports/arrests/091421arrests.pdf,Arrest Records,200,"","",[],[],[],[],[],[] 431,https://data.charlottenc.gov/datasets/cmpd-police-wrecker-zones,Poor Data Source,200,City of Charlotte Open Data Portal,"Charlotte's Open Data Portal, The City of Charlotte's Open Data Portal allows users to search, explore and discover relevant datasets that are served out by the City of Charlotte, NC.",[],[],[],[],[],[] @@ -525,8 +525,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 447,https://www.antioch.il.gov/event/police-fire-commission-cancelled/,Not Criminal Justice Related,200,"Police & Fire Commission – Cancelled - Antioch, IL","","[""Police & Fire Commission \u2013 Cancelled""]",[],[],[],[],[] 448,https://www.lynchburgvapolice.gov/wp-content/uploads/2021/06/lpd-seal-e1662580813573.png,Poor Data Source,404,"","",,,,,, 449,https://osp.maryland.gov/2020/01/17/january-17-2020-greensboro-police-chief-pleads-guilty-to-misconduct-in-office/,Media Bulletins,200,"January 17, 2020: Greensboro Police Chief Pleads Guilty to Misconduct in Office ","",[],"["" \r\nQuick Links"", ""January 17, 2020: Greensboro Police Chief Pleads Guilty to Misconduct in Office""]",[],[],[],[] -450,https://ci.new-hope.mn.us/city_hall/police_department/records_division/temporary_permit_to_purchase_procedure,Poor Data Source,200," - Temporary Permit to Purchase Procedure - City of New Hope +450,https://ci.new-hope.mn.us/city_hall/police_department/records_division/temporary_permit_to_purchase_procedure,Poor Data Source,200," + Temporary Permit to Purchase Procedure - City of New Hope ","","[""City of New Hope"", ""\r\n \tCity of New HopeMinnesota""]","[""Temporary Permit to Purchase Procedure ""]",[],[],[],[] 451,https://www.austintexas.gov/blog/good-police-work,Media Bulletins,200,Good Police Work | AustinTexas.gov,Gentleman: I know you both are quite busy managing and keeping our City safe.,"[""Good Police Work""]","[""Action Navigation"", ""GTranslate"", ""Main menu"", ""Frequently Viewed Departments"", ""Make a Difference"", ""Share"", ""About this blog"", ""Archives"", ""Pagination"", ""Footer Menu"", ""Second Footer Menu""]","[""Resident"", ""Business"", ""Government"", ""Departments"", ""Connect"", ""Good Police Work"", ""2021 February\n"", ""2020 January\n"", ""2020 January\n"", ""2020 January\n"", ""2020 January\n"", ""2020 January\n"", ""2019 December\n"", ""2019 December\n"", ""2019 November\n"", ""2019 November\n""]",[],[],[] 452,http://sheriff.co.seneca.ny.us/the-department/copy-of-biography-the-chief-deputy-2/,Contact Info & Agency Meta,200,"Biography: The Chief Deputy – Seneca County Sheriff, New York","","[""Biography: The Chief Deputy""]",[],[],[],[],[] @@ -543,8 +543,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 463,https://www.coppelltx.gov/376/command-staff,Contact Info & Agency Meta,200,"Command Staff | Coppell, TX",Meet the Coppell Police Department Command Staff.,"[""\r\n\r\nCommand Staff\t\t""]",[],"[""Loading"", ""Contact Us""]","[""Police Department""]",[],[] 464,https://alpha.austin.gov/es/police-oversight/8-26-20-3/,Complaints & Misconduct,200,Maintenance Notice,"",[],[],[],[],[],[] 465,https://coloradosprings.gov/police-department/article/news/officer-involved-shooting-i25-and-north,Media Bulletins,200,Officer Involved Shooting I25 and North Academy Boulevard | City of Colorado Springs,"","[""\nOfficer Involved Shooting I25 and North Academy Boulevard\n""]","[""Search"", ""Update:"", ""Original post:"", ""Colorado Springs Weekly"", ""GoCOS!"", ""Connect with @CityofCOS""]",[],[],"[""REPORT ONLINE""]",[] -466,https://www.arlingtontx.gov/news/my_arlington_t_x/news_stories/police_chief_al_jones,Media Bulletins,200," - Al Jones Appointed as New Arlington Police Chief - City of Arlington +466,https://www.arlingtontx.gov/news/my_arlington_t_x/news_stories/police_chief_al_jones,Media Bulletins,200," + Al Jones Appointed as New Arlington Police Chief - City of Arlington ","","[""YOUR COMMUNITY NEWS AND EVENTS"", ""City of Arlington""]","[""Al Jones Appointed as New Arlington Police Chief""]",[],[],[],[] 467,https://www.sandiego.gov/risk-management/flexible-benefits/fbp-police-safety-members-fy2022,Policies & Contracts,200,Flexible Benefits Plan Options for Police Safety Members FY 2022 and Short Plan Year 2022 | City of San Diego Official Website,"","[""City of San Diego Official Website"", ""Flexible Benefits Plan Options for Police Safety Members FY 2022 and Short Plan Year 2022""]","[""Main navigation"", ""Leisure"", ""Resident Resources"", ""Doing Business"", ""Library"", ""Public Safety"", ""City Hall"", ""Accessibility Tools"", ""FBP Credits"", ""FBP Options"", ""Sharp Plan Additional Information"", ""Services"", ""Contact Info"", ""Orientation Materials"", ""Additional Resources"", ""Forms"", ""Footer""]","[""Medical Plans"", ""Kaiser Permanente Traditional (HMO) Information"", ""Kaiser Permanente Traditional (HMO) Premiums"", ""Kaiser Permanente Deductible (HMO) Information"", ""Kaiser Permanente Deductible (HMO) Premiums"", ""Kaiser Partner Site"", ""Kaiser Additional Information"", ""Cigna (HMO) Information"", ""Cigna (HMO) Premiums"", ""Cigna Scripps Select (HMO) Premiums"", ""Cigna Open Access Plan (OAP) PPO Information"", ""Cigna Open Access Plan (OAP) PPO Premiums"", ""Cigna Additional Information"", ""Cigna Partnersite"", ""SDPEBA/Sharp Classic (HMO) Information"", ""SDPEBA/Sharp Classic (HMO) Premiums"", ""SDPEBA/Sharp Select (HMO) Information"", ""SDPEBA/Sharp Select (HMO) Premiums"", ""SDPEBA/Sharp Saver Deductible (HMO) Information"", ""SDPEBA/Sharp Saver Deductible (HMO) Premiums"", ""POA ALADS California Care Basic (HMO - No Dental) Information"", ""POA ALADS California Care Basic (HMO - No Dental) Premiums"", ""POA ALADS California Care Premier (HMO - with Dental) Information"", ""POA ALADS California Care Premier (HMO - with Dental) Premiums"", ""Dental Plans (Optional)"", ""Delta Dental\u00a0(DHMO) Information"", ""Delta Dental\u00a0(DHMO) Premiums"", ""Delta Dental (DPO) Information"", ""Delta Dental (DPO) Premiums"", ""Delta Dental Additional Information"", ""Delta Dental Partner Site"", ""Vision Plans (Optional)"", ""City VSP Information"", ""City VSP Premiums"", ""City VSP Partnersites"", ""Life Insurance Plans""]","[""Parks"", ""Outdoors"", ""Neighborhoods"", ""Recreational Activities"", ""Street Maintenance"", ""Plan"", ""Fix"", ""Build"", ""Programs & Events"", ""Services"", ""Kids & Teens"", ""eCollection"", ""Police"", ""Fire-Rescue"", ""Lifeguards"", ""City Officials"", ""City Government""]",[],[] 468,https://hamiltonma.gov/events/event/police-training-gun-club-3/,Poor Data Source,200,"Police Training @ Gun Club - Town of Hamilton, MA","","[""Police Training @ Gun Club""]",[],"[""Stay Connected"", ""About Hamilton"", ""Contact"", ""Useful Links""]","[""Event Details"", ""Give Feedback""]","[""Where Do I Go For..."", ""Shop Local""]","[""Today: January 24, 2024"", ""\nWhere Do I Go For...\n\n More \n\n""]" @@ -558,8 +558,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 476,https://alpha.austin.gov/government-business/connect-with-city/contribute-to-police-oversight/complaint-process/,Policies & Contracts,200,Maintenance Notice,"",[],[],[],[],[],[] 477,https://delcopa.gov/sheriff/realestate.html,Not Criminal Justice Related,200,"Real Estate Department - Sheriff Sales - Delaware County, Pennsylvania","","[""Real Estate Department - Sheriff Sales""]","[""Fax the Warrant Division\r\n\t\t610-891-5255""]","[""Frequently Asked Questions"", ""Sheriff's Office Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]","[""When do the Sheriff's Sales take place?"", ""Where are the Sheriff's Sales held?"", ""Can I obtain a list of the properties to be sold?"", ""If I see a property I want to buy, can I inspect it before the sale?"", ""How do I buy a property at Sheriff's Sale?"", ""What is hand money?"", ""When do I have to pay the rest of the money?"", ""Why does the Sheriff's Office highly recommend that you consult your own attorney for advice about how to purchase property at Sheriff's Sale?"", ""Do Sheriff's Sales differ from Tax Sales or Judicial Sales?""]",[],[] 478,https://delcopa.gov/publicrelations/releases/2021/pdf/phonescam.pdf,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] -479,https://www.ci.rohnert-park.ca.us/city_hall/departments/development_services/copy_of_downtown/demo_downtown_news,Not Criminal Justice Related,200," - Demo Downtown News - City of Rohnert Park +479,https://www.ci.rohnert-park.ca.us/city_hall/departments/development_services/copy_of_downtown/demo_downtown_news,Not Criminal Justice Related,200," + Demo Downtown News - City of Rohnert Park ","","[""City of Rohnert Park""]","[""Rohnert Park""]","[""Demo Downtown News""]",[],[],[] 480,https://townofcampbellwi.gov/public-safety/police/contact-an-officer/,Contact Info & Agency Meta,200,Contact an Officer - Town of Campbell,"","[""Contact an Officer""]",[],"[""Quick Links"", ""About"", ""Government"", ""Services"", ""Public Safety""]",[],[],[] 481,https://norfolkne.gov/assets/site/documentcentral/police/2021-daily-reports/arrests/080421arrests.pdf,Arrest Records,200,"","",[],[],[],[],[],[] @@ -570,8 +570,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 485,https://delcopa.gov/publicrelations/releases/2022/delcoartsweek.html,Not Criminal Justice Related,200,"The Arts Come Alive in Delco This Fall! - Delaware County, Pennsylvania","","[""The Arts Come Alive in Delco This Fall!""]",[],"[""Public Relations Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]","[""Delco Arts Week being held October 1 through October 9""]",[],[] 486,https://spdblotter.seattle.gov/2013/05/02/mayor-council-signal-intent-to-site-and-build-new-police-station-for-north-precinct/,Media Bulletins,200,"Mayor, Council Signal Intent to Site and Build New Police Station for North Precinct - SPD Blotter","","[""Mayor, Council Signal Intent to Site and Build New Police Station for North Precinct""]","[""Find Posts By Topic"", ""You might also like..."", ""Police"", ""City-Wide Information"", ""Top Requests"", ""Policies""]","[""Animals"", ""Assistance"", ""For Businesses"", ""Civil Rights"", ""Elected Officials"", ""Explore the City"", ""Get Involved"", ""Immigrants and Refugees"", ""Issues and Initiatives"", ""Learning and Education"", ""Public Safety"", ""Transportation and Development"", ""Technology"", ""Utilities""]","[""Browse the Archive""]",[],[] 487,https://www.coronadelmar.us/safes-cash-pricey-watches-and-jewelry-police-documents-reveal-items-stolen-in-rash-of/,Media Bulletins,200,"Safes, cash, pricey watches and jewelry — police documents reveal items stolen in rash of … | Corona del Mar California","","[""Safes, cash, pricey watches and jewelry \u2014 police documents reveal items stolen in rash of \u2026""]","[""Menu"", "" Be First to Comment"", ""Subscribe"", """", """"]","[""Share this:"", ""Like this:"", ""Related"", ""Leave a Reply Cancel reply"", """"]",[],[],[] -488,https://www.knoxvilletn.gov/government/mayors_office/c_o_v_i_d-19___coronavirus_/stress_and_coping/knox_well/kid___parent_resources/general_adult_resources,Resources,200," - General Adult Resources - City of Knoxville +488,https://www.knoxvilletn.gov/government/mayors_office/c_o_v_i_d-19___coronavirus_/stress_and_coping/knox_well/kid___parent_resources/general_adult_resources,Resources,200," + General Adult Resources - City of Knoxville ",covid19*,"[""General Adult Resources"", """"]",[],[],[],[],[] 489,https://oceancitymd.gov/oc/ocean-city-police-captain-austin-retires-after-31-years-of-service/,Media Bulletins,200,"Ocean City Police Captain Austin Retires After 31 Years of Service – Town of Ocean City, Maryland","",[],"[""Post navigation""]","[""Related posts""]",[],[],[] 490,https://www.rolesvillenc.gov/police,Contact Info & Agency Meta,200,"Police | Town of Rolesville, NC","","[""Police\n""]","[""Support Menu"", ""Social Media"", ""Main navigation"", ""Social Media"", ""Footer""]",[],[],"[""Connect with us""]",[] @@ -596,11 +596,11 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 509,https://training.detroitmi.gov/departments/police-department/project-green-light-detroit/agreements,Media Bulletins,503,"","",,,,,, 510,https://www.antioch.il.gov/wpfb-file/10-11-11-police-and-fire-agenda-pdf-5/,Poor Data Source,200,"10-11-11 Police And Fire Agenda - Antioch, IL",10 11 police and fire agenda pdf commissions commission agendas 2011 2017 05 17 08 41 32 0000,"[""10-11-11 Police And Fire Agenda""]",[],[],[],[],[] 511,http://cityofcanalfulton-oh.gov/police-department-hiring-entry-level-police-officer/,Training & Hiring Info,404,"","",,,,,, -512,https://police.crystalmn.gov/r_e_s_i_d_e_n_t/public_works,Not Criminal Justice Related,200," - Public Works - City of Crystal +512,https://police.crystalmn.gov/r_e_s_i_d_e_n_t/public_works,Not Criminal Justice Related,200," + Public Works - City of Crystal ",Links and information related to the City of Crystal Public Works Department.,"[""Public Works""]","[""Crystal Public Works""]","[""Sign up for a city newsletter or notification."", ""City Hall"", ""Regular Hours:""]","[""Monday - Friday""]",[],[] -513,https://www.ci.plymouth.mi.us/government/departments/police/history,Not Criminal Justice Related,200," - History - City of Plymouth, MI +513,https://www.ci.plymouth.mi.us/government/departments/police/history,Not Criminal Justice Related,200," + History - City of Plymouth, MI ","","[""History""]",[],[],[],[],[] 514,https://rexburg.us/police-ask-for-help-finding-man-who-left-for-work-and-hasnt-been-seen-since/,Media Bulletins,522,"","",,,,,, 515,https://spdblotter.seattle.gov/2014/12/17/police-increasing-patrols-after-early-morning-gunfire-near-south-seattle-school/,Media Bulletins,200,Police Increasing Patrols After Early Morning Gunfire Near South Seattle School - SPD Blotter,"","[""Police Increasing Patrols After Early Morning Gunfire Near South Seattle School""]","[""Find Posts By Topic"", ""You might also like..."", ""Police"", ""City-Wide Information"", ""Top Requests"", ""Policies""]","[""Animals"", ""Assistance"", ""For Businesses"", ""Civil Rights"", ""Elected Officials"", ""Explore the City"", ""Get Involved"", ""Immigrants and Refugees"", ""Issues and Initiatives"", ""Learning and Education"", ""Public Safety"", ""Transportation and Development"", ""Technology"", ""Utilities""]","[""Browse the Archive""]",[],[] @@ -611,8 +611,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 520,https://delcopa.gov/sustainability/pdf/raise/potentialeconomicimptwaterfront.pdf,Not Criminal Justice Related,200,"404 - Delaware County, Pennsylvania","","[""404 Error""]",[],"[""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] 521,https://www.providenceri.gov/police/explorers-program/attention/,Poor Data Source,200,City of Providence Attention - City of Providence,"","[""Attention""]","[""Share this story"", ""Providence City Hall"", ""Follow Us on Social Media:""]","[""City Of Providence"", ""Mayor Brett Smiley"", ""SIGN UP FOR OUR WEEKLY E-NEWS | \nHaga clic aqu\u00ed para espa\u00f1ol"", ""Lists*""]",[],[],[] 522,https://norfolkne.gov/assets/site/documentcentral/police/2021-daily-reports/summary/021121summary.pdf,Dispatch Logs,200,"","",[],[],[],[],[],[] -523,https://piedmont.ca.gov/services___departments/police/services/social_media,Contact Info & Agency Meta,200," - Social Media - City of Piedmont +523,https://piedmont.ca.gov/services___departments/police/services/social_media,Contact Info & Agency Meta,200," + Social Media - City of Piedmont ","","[""\r\n City of\r\n Piedmont""]",[],[],[],[],[] 524,https://gonzalesca.gov/services/police/how-do-i/learn-what-crime-rate-gonzales,Resources,200,Learn what the crime rate is in Gonzales? | City of Gonzales,"Official City of Gonzales, CA website. Find the latest news, events, and information for residents and businesses....","[""The City of Gonzales, California"", ""The City of Gonzales, California""]","[""Top menu"", ""Learn what the crime rate is in Gonzales?""]",[],"[""CITY OF GONZALES""]",[],[] 525,https://council.seattle.gov/2022/08/19/west-seattle-bridge-police-recruitment-and-incentives-bill-passes-abortion-access-bill-signing-metropolitan-parks-district-public-hearing-small-tenant-improvement-fund-seattle-restored-program/,Policies & Contracts,200,West Seattle Bridge; Police Recruitment and Incentives Bill Passes; Abortion Access Bill Signing; Metropolitan Parks District Public Hearing; Small Tenant Improvement Fund; Seattle Restored Program – Landlords and Artists/Entrepreneurs Can Apply; King County Assessor Valuations and Appeals; No Newsletter Next Two Weeks - Seattle City Council Blog,"",[],"[""West Seattle Bridge; Police Recruitment and Incentives Bill Passes; Abortion Access Bill Signing; Metropolitan Parks District Public Hearing; Small Tenant Improvement Fund; Seattle Restored Program \u2013 Landlords and Artists/Entrepreneurs Can Apply; King County Assessor Valuations and Appeals; No Newsletter Next Two Weeks"", ""More posts""]","[""West Seattle Bridge"", ""Police Recruitment and Incentives Bill Passes"", ""Abortion Access Bill Signing"", ""Metropolitan Parks District Public Hearing"", ""Small Tenant Improvement Fund"", ""Seattle Restored Program \u2013 Landlords and Artists/Entrepreneurs Can Apply"", ""King County Assessor Valuations and Appeals"", ""No Newsletter Next Two Weeks"", ""\nTanya Woo appointed to fill vacancy on Seattle City Council\n"", ""\nSeattle CityClub to host public forum with finalists to fill Council vacancy\n"", ""\nSeattle City Council identifies eight finalists for vacancy\u00a0\n"", ""HELPFUL LINKS"", ""Make your voice heard"", ""Councilmembers""]",[],[],[] @@ -636,11 +636,11 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 543,https://hollister.ca.gov/government/city-departments/police/,Contact Info & Agency Meta,200,"Police – City of Hollister, California","","[""\u00a0San Benito County Opioid Task Force""]",[],"[""Follow Us on..."", ""A Message from Chief Reynoso"", ""San Benito County Public Safety PSA"", ""HPD Values and Vision"", ""Follow Us on....""]",[],[],[] 544,https://spdblotter.seattle.gov/2022/05/26/police-arrest-one-seize-gun-drugs-cash-downtown-thursday-evening/,Media Bulletins,200,"Police Arrest One, Seize Gun, Drugs, Cash Downtown Thursday Evening - SPD Blotter","","[""Police Arrest One, Seize Gun, Drugs, Cash Downtown Thursday Evening""]","[""Find Posts By Topic"", ""You might also like..."", ""Police"", ""City-Wide Information"", ""Top Requests"", ""Policies""]","[""Animals"", ""Assistance"", ""For Businesses"", ""Civil Rights"", ""Elected Officials"", ""Explore the City"", ""Get Involved"", ""Immigrants and Refugees"", ""Issues and Initiatives"", ""Learning and Education"", ""Public Safety"", ""Transportation and Development"", ""Technology"", ""Utilities""]","[""Browse the Archive""]",[],[] 545,http://www.longbeach.gov/police/press-releases/l-b-p-d--receives-grant-for-special-traffic-enforce----crash-prevention/,Media Bulletins,200,L.B.P.D. Receives Grant for Special Traffic Enforce. & Crash Prevention,"","[""Long BeachPolice Department""]",[],[],[],[],[] -546,https://ci.san-bernardino.ca.us/city_hall/police_department/public_safety/traffic_safety_programs/alpr_statistics,Poor Data Source,200," - ALPR Statistics - City of San Bernardino +546,https://ci.san-bernardino.ca.us/city_hall/police_department/public_safety/traffic_safety_programs/alpr_statistics,Poor Data Source,200," + ALPR Statistics - City of San Bernardino ","","[""City of San Bernardino California""]","[""ALPR Statistics""]",[],[],[],[] -547,https://www.knoxvilletn.gov/government/city_departments_offices/police_department/field_operations_bureau/community_partnership_officers/c_p_t_e_d_security_surveys,Resources,200," - CPTED Security Surveys - City of Knoxville +547,https://www.knoxvilletn.gov/government/city_departments_offices/police_department/field_operations_bureau/community_partnership_officers/c_p_t_e_d_security_surveys,Resources,200," + CPTED Security Surveys - City of Knoxville ",police*,"[""CPTED Security Surveys"", ""Police Chief""]",[],[],[],[],[] 548,https://www.mass.gov/news/environmental-police-officer-ab-exam-update,Training & Hiring Info,200,Environmental Police Officer A/B Exam Update | Mass.gov,"Eligible List Establishment Date: January 15, 2021","[""\nNews\u00a0\n Environmental Police Officer A/B Exam Update\n ""]","[""\n\nCivil Service\u00a0\n\n"", ""Related to Environmental Police Officer A/B Exam Update"", ""Help Us Improve Mass.gov with your feedback""]","[""\n\n2020 Environmental Police Officer A/B Exam\u00a0\n\n""]",[],[],[] 549,https://coloradosprings.gov/tag/police,Media Bulletins,404,"","",,,,,, @@ -670,8 +670,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 573,http://www.lafayettepolice.us/faq.aspx?qid=183,Not Criminal Justice Related,200,FAQs • What locations need a Class K extinguisher?,"",[],"[""\n\u25bc\r\nFire Extinguishers\t\t""]","[""Loading"", ""Categories"", ""Live Edit"", ""Contact Us"", ""FAQs"", ""Site Links""]",[],[],[] 574,https://riag.ri.gov/press-releases/state-federal-and-law-enforcement-leaders-announce-16-million-grants-police,Media Bulletins,200,"State, federal, and law enforcement leaders announce $16 million in grants for police departments statewide for body-worn cameras | Rhode Island Attorney General's Office","","[""State, federal, and law enforcement leaders announce $16 million in grants for police departments statewide for body-worn cameras""]",[],[],[],[],[] 575,https://www.stmatthewsky.gov/police/srt-vehicle/,Poor Data Source,200,SRT Vehicle - City of St Matthews,"","[""SRT Vehicle""]",[],[],[],[],[] -576,https://www.ci.corcoran.mn.us/public_services/police/training_and_safety/emergency_preparedness_guide,Not Criminal Justice Related,200," - Emergency Preparedness Guide - City of Corcoran +576,https://www.ci.corcoran.mn.us/public_services/police/training_and_safety/emergency_preparedness_guide,Not Criminal Justice Related,200," + Emergency Preparedness Guide - City of Corcoran ","","[""Emergency Preparedness Guide""]",[],[],[],[],[] 577,http://www.longbeach.gov/police/press-releases/traffic-fatality-artesia-and-myrtle1/,Media Bulletins,200,TRAFFIC FATALITY ARTESIA AND MYRTLE,"","[""Long BeachPolice Department""]",[],[],[],[],[] 578,http://www.ryepolice.us/logs/police-logs-for-71316-71916,Daily Activity Logs,200,Rye Police Department Police Logs for 7/13/16-7/19/16 - Rye Police Department,"","[""Police Logs for 7/13/16-7/19/16""]","[""Police Logs for 7/13/16-7/19/16""]","[""Navigation"", ""Follow Us"", ""Facebook"", ""Email Updates"", ""Storm Preparedness Guide""]",[],[],[] @@ -691,8 +691,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 592,https://www.floresvilletx.gov/departments/police/complaints-commendations/,Contact Info & Agency Meta,200,Complaints & Commendations - Police Department - City of Floresville,Our complaint system and disciplinary procedures subject Floresville police officers to corrective action and protect them from unwarranted criticism.,"[""Complaints & Commendations""]","[""I\u2019m looking for...""]","[""Internal Affairs"", ""Reporting Procedure"", ""Types of Complaints\u00a0"", ""Complaint Investigation and Disposition Process"", ""Complaint Disposition"", ""Note"", ""Commendations"", ""Police Pages"", ""Government"", ""Departments"", ""Community"", ""Contact & Feedback""]",[],[],[] 593,https://delcopa.gov/ojs/efileforms/court admin forms for efile/writofexecutionnotice.pdf,Poor Data Source,200,"","",[],[],[],[],[],[] 594,http://www.longbeach.gov/police/press-releases/police-seek-public-s-help-with-identifying-financial-crimes-suspect/,Media Bulletins,200,Police Seek Public's Help with Identifying Financial Crimes Suspect,"","[""Long BeachPolice Department""]",[],[],[],[],[] -595,https://www.pleasantprairiewi.gov/departments/police/news/police_and_fire___rescue_news_archive/2019_news_releases/coffee_with_a_cop,Media Bulletins,200," - Coffee with a Cop - Village of Pleasant Prairie +595,https://www.pleasantprairiewi.gov/departments/police/news/police_and_fire___rescue_news_archive/2019_news_releases/coffee_with_a_cop,Media Bulletins,200," + Coffee with a Cop - Village of Pleasant Prairie ","",[],"[""Coffee with a Cop""]","[""Follow Us on Social Media""]",[],[],[] 596,https://police.greenvillesc.gov/599/paratransit-information,Not Criminal Justice Related,200,"Paratransit Information | Greenville, SC - Official Website","Greenville Area Paratransit (GAP) is an American with Disabilities Act paratransit service provided for individuals who, because of their disability, are unable to use Greenlink's fixed route bus service. Learn all about eligibility, service hours, and service area. From this page you can also schedule rides and file appeals.","[""\r\n\r\nParatransit Information\t\t""]",[],"[""Loading"", ""Begin the process by downloading an application.""]","[""Download the GAP Rider's Handbook"", ""ADA Grievance Form""]",[],[] 597,https://www.fultoncountyga.gov/news/2021/07/23/fulton-county-police-observe-national-night-out,Media Bulletins,200,Fulton County Police Observe National Night Out,"","[""Fulton County Police Observe National Night Out"", ""Fulton County Police Observe National Night Out""]",[],"[""\r\n Share This Story\r\n ""]","[""\r\n Contact Us\r\n \n"", ""\r\n Helpful Links\r\n \n""]",[],"[""License & Certificates"", ""License & Certificates"", ""Voting & Elections"", ""Voting & Elections"", ""Health Services"", ""Health Services"", ""Libraries & Arts"", ""Libraries & Arts"", ""Animal Services"", ""Animal Services"", ""Youth"", ""Youth"", ""Seniors"", ""Seniors"", ""Water"", ""Water"", ""Public Safety"", ""Public Safety"", ""Courts"", ""Courts"", ""Human Services"", ""Human Services"", ""Other"", ""Other"", ""Property"", ""Property"", ""Vehicles"", ""Vehicles"", ""Water"", ""Water"", ""Doing Business with FC"", ""Doing Business with FC"", ""Bid Opportunities"", ""Bid Opportunities"", ""Economic Development"", ""Economic Development"", ""Permits and Inspections"", ""Permits and Inspections"", ""Courts"", ""Courts"", ""Justice Agencies"", ""Justice Agencies"", ""Court Services"", ""Court Services"", ""Board of Commissioners"", ""Board of Commissioners"", ""Clerk to the Commission"", ""Clerk to the Commission"", ""BOC Meeting Schedule"", ""BOC Meeting Schedule"", ""Agendas and Minutes"", ""Agendas and Minutes"", ""Watch Previous Board Meetings"", ""Watch Previous Board Meetings"", ""Citizen Engagement"", ""Citizen Engagement"", ""CourtWatch"", ""CourtWatch"", ""Tours and Requests"", ""Tours and Requests"", ""Volunteer Opportunities"", ""Volunteer Opportunities"", ""Youth Programs"", ""Youth Programs"", ""About Fulton County"", ""About Fulton County"", ""Executive Leadership"", ""Executive Leadership"", ""Fulton County Departments"", ""Fulton County Departments"", ""Fulton County Initiatives"", ""Fulton County Initiatives"", ""Open Government"", ""Open Government""]" @@ -721,16 +721,16 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 620,https://delcopa.gov/vote/pdf/2021/delco_boe-meeting-notice_04-28-2021.pdf,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] 621,https://delcopa.gov/vote/becomingapollworker.html,Not Criminal Justice Related,200,"Becoming a Poll Worker - Delaware County, Pennsylvania","","[""Becoming a Poll Worker""]",[],"[""How to Become a Poll Worker"", ""Poll Worker Requirements"", ""Student Poll Worker Program"", ""Poll Worker Positions"", ""Poll Worker Pay: Election Day"", ""Poll Worker Pay: Training Pay"", ""Filling Vacancies in an Election Board: Vacancy Kits"", ""Filling Vacancies in an Election Board: Emergency Appointments"", ""Questions?"", ""Delco Votes!"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] 622,http://www.longbeach.gov/police/press-releases/undetermined-death-investigation-2-/,Media Bulletins,200,UNDETERMINED DEATH INVESTIGATION(2),"","[""Long BeachPolice Department""]",[],[],[],[],[] -623,https://ci.san-bernardino.ca.us/city_hall/police_department/crime_statistics/about_ucr_statistics/part_2_crimes,Poor Data Source,200," - Part 2 Crimes - City of San Bernardino +623,https://ci.san-bernardino.ca.us/city_hall/police_department/crime_statistics/about_ucr_statistics/part_2_crimes,Poor Data Source,200," + Part 2 Crimes - City of San Bernardino ","","[""City of San Bernardino California""]","[""Part 2 Crimes""]",[],[],[],[] 624,https://police.greenvillesc.gov/2025/project-safe-neighborhoods,Resources,200,"Project Safe Neighborhoods | Greenville, SC - Official Website","Project Safe Neighborhoods is designed to build strong partnerships between the community, service providers and law enforcement to reduce firearm violence and prevent youth from becoming involved in gangs.","[""\r\n\r\nProject Safe Neighborhoods\t\t""]",[],"[""Loading"", ""Project Safe Neighborhoods Kick Off Event""]",[],[],[] 625,https://delcopa.gov/publicrelations/releases/2022/pdf/vetresourcefair.pdf,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] 626,http://www.ryepolice.us/event/annies-angels-rye-by-the-sea-duathlon-2,Not Criminal Justice Related,200,Rye Police Department Annie's Angels Rye by the Sea Duathlon - Rye Police Department,"","["""", ""Annie\u2019s Angels Rye by the Sea Duathlon""]","[""June 1, 2019 @ 8:00 am - 11:00 am"", "" Details "", ""Organizer""]","[""Navigation"", ""Follow Us"", ""Facebook"", ""Email Updates"", ""Storm Preparedness Guide""]",[],[],[] 627,https://southamptontownnypolice.gov/faq.aspx?qid=437,Resources,200,FAQs • How much are the permits this year? ,"",[],"[""\n\u25bc\r\nFAQ (COVID-19) | Southampton Town Beaches \t\t""]","[""Loading"", ""Site Tools"", ""Categories"", ""Live Edit"", ""Contact Us"", ""Site Links""]",[],[],[] 628,https://frederica.delaware.gov/2016/06/27/ad-for-part-time-police-office/townoffred-50-121467-1/,Media Bulletins,200,Ad for Part Time Police Officer - Frederica,"","[""Frederica""]","[""Delaware"", ""Ad for Part Time Police Officer""]","[""Menu"", ""Online Bill Pay"", ""Connect With Us!""]",[],[],[] -629,https://www.knoxvilletn.gov/government/city_departments_offices/police_department/management_services_bureau/community_police_academy,Media Bulletins,200," - Community Police Academy - City of Knoxville +629,https://www.knoxvilletn.gov/government/city_departments_offices/police_department/management_services_bureau/community_police_academy,Media Bulletins,200," + Community Police Academy - City of Knoxville ",police*,"[""Community Police Academy"", ""Police Chief""]",[],[],[],[],[] 630,https://www.southamptontownnypolice.gov/493/pump-out-boat-program,Not Criminal Justice Related,200,"Pump Out Boat Program | Southampton, NY - Official Website",Discover how the Pump Out Boat Program helps protect the town's shellfish beds and keep the waters safe and clean for swimming and recreation. ,"[""\r\n\r\nPump Out Boat Program\t\t""]","[""Availability""]","[""Loading"", ""Site Tools"", ""Contact Us"", ""Site Links""]",[],[],[] 631,https://www.sandiego.gov/form/get-it-done-police,Contact Info & Agency Meta,200,Get It Done - Police | City of San Diego Official Website,"","[""City of San Diego Official Website"", ""Get It Done - Police\n""]","[""Main navigation"", ""Leisure"", ""Resident Resources"", ""Doing Business"", ""Library"", ""Public Safety"", ""City Hall"", ""Accessibility Tools"", ""Footer""]",[],"[""Parks"", ""Outdoors"", ""Neighborhoods"", ""Recreational Activities"", ""Street Maintenance"", ""Plan"", ""Fix"", ""Build"", ""Programs & Events"", ""Services"", ""Kids & Teens"", ""eCollection"", ""Police"", ""Fire-Rescue"", ""Lifeguards"", ""City Officials"", ""City Government""]",[],[] @@ -740,8 +740,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 635,https://www.cityofrc.us/news/rancho-cucamonga-welcomes-new-police-chief,Media Bulletins,200,Rancho Cucamonga Welcomes New Police Chief | City of Rancho Cucamonga, ,"[""\n\nRancho Cucamonga Welcomes New Police Chief\n\n\n""]","[""Utility Menu"", ""Breadcrumb"", ""Footer Menu"", ""Main navigation""]",[],[],[],[] 636,https://arcadia-fl.gov/departments/police/,Contact Info & Agency Meta,200,Arcadia Police Department – City of Arcadia,"","[""\r\n City of Arcadia, Florida"", ""Arcadia Police Department""]","[""\n\t\t\t\t\t\tUpcoming Events\t\t\t\t\t""]","[""Arcadia Police\u00a0\u2013\u00a0(863) 494-2222 for Non-Emergency\u00a0\u2013\nCall 9-1-1 for Emergencies Only"", ""\n\n\t\tCity Council Meeting\t\n"", ""\n\n\t\tCity Council Meeting\t\n"", ""\n\n\t\tCity Council Meeting\t\n"", ""\n\n\t\tCity Council Meeting\t\n"", ""\n\n\t\tCity Council Meeting\t\n"", ""\r\n Address"", ""\r\n Get in touch"", ""\r\n Contact""]","[""Search This Site"", ""Contact the Arcadia Police"", ""Pay Utilities Bill Online"", ""Follow the Arcadia Police on Facebook"", ""Search for Loved Ones in the Cemetery"", ""Follow us on Facebook"", ""Quick Links"", ""Helpful Websites"", ""Categories""]",[],[] 637,https://delcopa.gov/weightsmeasures/pdf/complaintform.pdf,Complaints & Misconduct,200,"","",[],[],[],[],[],[] -638,https://www.ci.san-bernardino.ca.us/city_hall/police_department/crime_statistics/about_ucr_statistics/arrest_statistics/arrest_statistics_-_2008,Crime Maps & Reports,200," - Arrest Statistics - 2008 - City of San Bernardino +638,https://www.ci.san-bernardino.ca.us/city_hall/police_department/crime_statistics/about_ucr_statistics/arrest_statistics/arrest_statistics_-_2008,Crime Maps & Reports,200," + Arrest Statistics - 2008 - City of San Bernardino ","","[""City of San Bernardino California""]","[""Arrest Statistics - 2008""]",[],[],[],[] 639,https://www.mass.gov/doc/gardnerpolicelieutenant2374rtf/download,Training & Hiring Info,200,"","",[],[],[],[],[],[] 640,https://www.coronadelmar.us/newport-beach-police-department-issues-citations-for-selling-alcohol-to-minors/,Media Bulletins,200,Newport Beach Police Department Issues Citations for Selling Alcohol to Minors | Corona del Mar California,"","[""Newport Beach Police Department Issues Citations for Selling Alcohol to Minors""]","[""Menu"", "" Be First to Comment"", ""Subscribe"", """", """"]","[""Share this:"", ""Like this:"", ""Related"", ""Leave a Reply Cancel reply"", """"]",[],[],[] @@ -764,8 +764,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 657,http://www.longbeach.gov/police/press-releases/k-9-officer-is-partnered-with-new-police-service-dog/,Media Bulletins,200,K-9 Officer is Partnered with New Police Service Dog,"","[""Long BeachPolice Department""]",[],[],[],[],[] 658,https://columbiacitypolice.us/documents/publiccomplaint.pdf,Complaints & Misconduct,200,"","",[],[],[],[],[],[] 659,https://www.southamptontownnypolice.gov/1695/2022-tentative-roll-assessment-rolls,List of Data Sources,200,"2023 Tentative Roll Assessment Roll | Southampton, NY - Official Website","","[""\r\n\r\n2023 Tentative Roll Assessment Roll\t\t""]",[],"[""Loading"", ""Site Tools"", ""Contact Us"", ""Site Links""]",[],[],[] -660,https://www.corcoranmn.gov/public_services/police/press_releases_records_and_complaint_recognition/press_releases,List of Data Sources,200," - Press Releases - City of Corcoran +660,https://www.corcoranmn.gov/public_services/police/press_releases_records_and_complaint_recognition/press_releases,List of Data Sources,200," + Press Releases - City of Corcoran ","","[""Press Releases""]",[],[],[],[],[] 661,http://lafayettepolice.us/1079/staff,Contact Info & Agency Meta,200,"Staff | Lafayette, IN - Official Website","","[""\r\n\r\nStaff\t\t""]",[],"[""Loading"", ""Contact Us"", ""FAQs"", ""Site Links""]",[],[],[] 662,https://delcopa.gov/publicrelations/releases/2021/covid_countiesvaccinestatement.html,Not Criminal Justice Related,200,"Southeast Pennsylvania Counties Issue Statement on COVID-19 Vaccine Distribution - Delaware County, Pennsylvania","","[""Southeast Pennsylvania Counties Issue Statement on COVID-19 Vaccine Distribution""]",[],"[""Public Relations Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] @@ -774,8 +774,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 665,https://delcopa.gov/ich/resources/covid19/pdf/coronavirustestingifnohealthcareprovider.pdf,Poor Data Source,200,"404 - Delaware County, Pennsylvania","","[""404 Error""]",[],"[""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] 666,https://rocklandmaine.gov/police-department/officer-duhamel-promoted-to-patrol-sergeant/attachment/f45111ed-37de-4a3d-b8e7-099f09cad7fb-15/,Poor Data Source,200,"F45111ED-37DE-4A3D-B8E7-099F09CAD7FB.jpeg | The City of Rockland, Maine","","[""F45111ED-37DE-4A3D-B8E7-099F09CAD7FB.jpeg""]",[],"[""All Current Alerts & Announcements"", ""Current Weather"", ""City of Rockland""]",[],[],[] 667,https://www.madera.gov/wp-content/uploads/2016/05/madera-south-copy.jpg,Poor Data Source,404,"","",,,,,, -668,https://www.fortworthtexas.gov/departments/police/public-safety/fw-pd-central-hemphill,Contact Info & Agency Meta,200," - Welcome to the Fort Worth Police Department +668,https://www.fortworthtexas.gov/departments/police/public-safety/fw-pd-central-hemphill,Contact Info & Agency Meta,200," + Welcome to the Fort Worth Police Department ","","[""Police Department""]","[""Learn what we're doing with the #FortWorthSafe Strategy"", ""Accident Reports"", ""Online Reporting"", ""Search One Address. Find Everything."", ""Executive Staff"", ""Inside FWPD"", ""Patrol Commanders"", ""Help Us Solve a Crime"", ""Community Camera Program"", ""Most Wanted"", ""CrimeMapping.com""]","[""#FortWorthSafe Strategy"", ""Professional Standards"", ""Procedural Justice"", ""Chief of Police Neil Noakes"", ""Executive Assistant Chief Robert Alldredge"", ""Assistant Chief Julie Swearingin"", ""Assistant Chief Joseph Sparrow"", ""Deputy Chief Buck Wheeler"", ""Deputy Chief Mark Barthen"", ""Deputy Chief Pedro \""Kiki\"" Criado"", ""Deputy Chief David Carabajal"", ""Deputy Chief Chad Mahaffey"", ""Deputy Chief Monica Martin"", ""Assistant Police Director Leo Luna"", ""Assistant Police Director Keith Morris"", ""Central Commander - Chris Daniels"", ""East Commander - Antione Williams"", ""North Commander - Sean Kenjura"", ""Northwest Commander - Jason Kim"", ""South Commander - Andre Smith"", ""West Commander - Stefanie RIcks"", ""Felicita Olguin, 81 years old"", ""Derek Locke, 30 years old"", ""Richard Hutchinson, 32 years old"", ""Trina Lane, 23 year-old black female"", ""Miguel Ruiz, DOB: 05/14/1997"", ""Nestor Moreno, DOB: 02/26/1973"", ""Shallen Clark, DOB: 11/17/1995"", ""Eric Sosa, DOB: 12/30/1981"", ""Jesus Roman, DOB: 06/20/2004"", ""Christopher Powell, DOB: 03/07/1973"", ""Brandon Stickel, DOB: 07/23/1997"", ""Fernando Trevino-Alvarado, DOB: 08/28/1975"", ""Ruben Buckner, DOB: 07/28/1968"", ""Larry D. Johnson Sr., DOB: 02/16/1964"", ""Resources"", ""Helpful Links"", ""Connect With FWPD""]",[],[],[] 669,https://delcopa.gov/publicrelations/releases/2019/pdf/2019stateofthecounty.pdf,Media Bulletins,200,"","",[],[],[],[],[],[] 670,https://police.greenvillesc.gov/304/health-wellness,Not Criminal Justice Related,200,"Employee Health Center | Greenville, SC - Official Website",Learn about the City's initiatives to promote healthy lifestyles and read about the award-winning Health and Wellness Program.,"[""\r\n\r\nEmployee Health Center\t\t""]","[""On-site Walk-in Clinic"", ""Award Winning Health and Wellness Program"", ""Annual Physicals"", ""Lunch and Learns"", ""Award Winning On-site Tobacco Cessation Program"", ""Bicycle Commuter Tax Provision"", ""Employee Assistance Program (EAP)"", ""Mobile RN Program"", ""Nurse Practitioner"", ""Vaccinations"", ""Vaccinations"", ""Other Wellness Programs""]","[""Loading"", ""Contacts""]","[""Human Resources""]",[],[] @@ -783,8 +783,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 672,https://police.bixbyok.gov/faq.aspx?qid=79,Resources,200,FAQs • Can I limit the number of SMS (text) messages I recei,"",[],"[""\n\u25bc\r\nNixle Alert System\t\t""]","[""Loading"", ""Categories"", ""Live Edit"", ""Helpful Links"", ""FAQs"", ""Site Links""]",[],[],[] 673,https://spdblotter.seattle.gov/2018/12/02/theater-cancels-matinee-police-investigate-after-theater-employees-discover-threats-on-facebook/,Media Bulletins,200,"Theater Cancels Matinee, Police Investigate After Theater Employees Discover Threats on Facebook - SPD Blotter","","[""Theater Cancels Matinee, Police Investigate After Theater Employees Discover Threats on Facebook""]","[""Find Posts By Topic"", ""You might also like..."", ""Police"", ""City-Wide Information"", ""Top Requests"", ""Policies""]","[""Animals"", ""Assistance"", ""For Businesses"", ""Civil Rights"", ""Elected Officials"", ""Explore the City"", ""Get Involved"", ""Immigrants and Refugees"", ""Issues and Initiatives"", ""Learning and Education"", ""Public Safety"", ""Transportation and Development"", ""Technology"", ""Utilities""]","[""Browse the Archive""]",[],[] 674,https://www.mass.gov/info-details/audit-of-the-massachusetts-cultural-council-objectives-scope-and-methodology,Not Criminal Justice Related,200,"Audit of the Massachusetts Cultural Council Objectives, Scope, and Methodology | Mass.gov",An overview of the purpose and process of auditing the Massachusetts Cultural Council,"[""\nAudit of the Massachusetts Cultural Council Objectives, Scope, and Methodology\n""]","[""Table of Contents\n for the audit, Audit of the Massachusetts Cultural Council"", ""Appendix\n "", ""Table of Contents"", ""Overview\n "", ""Grants to Individuals\n "", ""Cultural Organization Economic Recovery Program Grants\n "", ""ICP\n "", ""Cybersecurity Awareness Training\n "", ""Data Reliability\n "", ""Help Us Improve Mass.gov with your feedback""]","[""Go Smart"", ""Pearl"", ""MMARS""]",[],[],[] -675,https://www.montebelloca.gov/departments/police/services/pay_a_parking_ticket,Poor Data Source,200," - Pay a Parking Ticket - City of Montebello +675,https://www.montebelloca.gov/departments/police/services/pay_a_parking_ticket,Poor Data Source,200," + Pay a Parking Ticket - City of Montebello ","","[""City of Montebello""]","[""Pay a Parking Ticket""]","[""FREQUENTLY ASKED QUESTIONS / PAY A PARKING TICKET""]",[],[],[] 676,https://delcopa.gov/publicrelations/releases/2020/covid_twoadditionaldeaths.html,Not Criminal Justice Related,200,"Two Additional COVID-19 Related Deaths Reported in Delaware County - Delaware County, Pennsylvania","","[""Two Additional COVID-19 Related Deaths Reported in Delaware County""]",[],"[""Public Relations Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] 677,https://www.foxcrossingwi.gov/foxcrossingwi.gov/police/,Annual & Monthly Reports,200,Police Archives - Fox Crossing Fox Crossing,"","[""""]",[],[],[],[],[] @@ -803,8 +803,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 690,https://alpha.austin.gov/police-oversight/formal-complaint-when-department-issued-bwc-system-use-is-required/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] 691,https://www.southamptontownnypolice.gov/1469/kenyatta-nash,Poor Data Source,404,"","",,,,,, 692,https://www.elburn.il.us/police-department/,Personnel Records,200,"Police Department | Village of Elburn, Illinois","","[""Police Department"", ""AUTO STICKERS"", ""CHILD SAFETY SEAT CERTIFIED INSTALLATION"", ""CRIME PREVENTION"", ""FORMS AND DOCUMENTS"", ""LAWS/ORDINANCES"", ""LINKS OF INTEREST"", ""METRA INFORMATION"", ""METRA FAQ"", ""ONLINE REPORTING"", ""POLICE DEPARTMENT FAQ"", ""REGISTERED SEX OFFENDERS"", ""SCHOOL ZONE SAFETY"", ""STATE\u2019S ATTORNEY\u2019S OFFICE"", ""VACATION WATCH"", ""PROPOSED POLICE STATION INFO""]",[],"[""\nADMINISTRATION DIVISION\n"", ""\nCRIMINAL INVESTIGATIONS\n"", ""\nRECORDS\n"", ""\nPATROL\n"", ""\nCOMMUNITY SERVICE OFFICER\n"", ""\nCROSSING GUARDS\n""]","[""Chief\u2019s Message"", ""NEWS & PRESS RELEASES"", ""IMPORTANT LINKS"", ""Department Overview"", ""Annual & Quarterly Reports""]","[""ComEd Prepares for Ice Storms in Northern Illinois"", ""Proposed Police Station Updates"", ""Unscheduled Intercity Bus Permit"", ""Links"", ""Main Contact Info"", ""Follow Us""]",[] -693,https://ci.san-bernardino.ca.us/city_hall/police_department/contacting_sbpd,Contact Info & Agency Meta,200," - Contacting SBPD - City of San Bernardino +693,https://ci.san-bernardino.ca.us/city_hall/police_department/contacting_sbpd,Contact Info & Agency Meta,200," + Contacting SBPD - City of San Bernardino ","","[""City of San Bernardino California""]","[""Contacting SBPD""]",[],[],[],[] 694,http://www.tampa.gov/police/memorial/thank-you,Media Bulletins,200,A Message of Thanks - August 2009 | City of Tampa,Citizens of Tampa Tampa Fire Rescue Mayor Iorio Hillsborough County Sheriffs Office Tampa Business Community THANK YOU!,"[""A Message of Thanks - August 2009\n""]","[""Police Department"", ""Key Services"", ""Report A Problem"", ""Contact"", ""Connect With Us""]",[],[],[],[] 695,http://www.longbeach.gov/police/press-releases/update---arrest-made-in-murder-5900-block-of-l-b--blvd-/,Media Bulletins,200,MURDER - UPDATE,"","[""Long BeachPolice Department""]",[],[],[],[],[] @@ -831,8 +831,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 716,https://www.hickoryhillspd.us/2016/09/message-from-the-chief-of-police-2/,Media Bulletins,200,Message From The Chief of Police,"","[""Message From The Chief of Police""]","["""", ""Post navigation""]",[],"[""Report a Concern"", ""Investigative Tip Line"", ""Hot Links"", ""Contact Information""]",[],[] 717,https://www.mass.gov/doc/01222016-dmf-scoping-meeting-scheduled-for-february-8-2016-potential-changes-to-summertime/download,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] 718,https://police.birminghamal.gov/contacts/,Contact Info & Agency Meta,200,Contacts | Birmingham Police Department,"","[""\n\n\n Birmingham Police Department\n\n\t\t\t\t\tCommitment | Excellence | Integrity\t\t\t\t\n\n""]","[""Putting People First"", ""Contacts""]","[""Division/Precinct"", ""Address"", ""Phone Number""]","[""Hours & Info"", ""Upcoming Events"", ""CRIMESTOPPERS"", ""Police Information"", ""Quick Links"", ""I Need...""]",[],[] -719,https://sanramon.ca.gov/police/victim,Resources,200," - Victim's Rights Information - City of San Ramon +719,https://sanramon.ca.gov/police/victim,Resources,200," + Victim's Rights Information - City of San Ramon ","","[""Victim's Rights Information""]","[""Contact Us"", ""Victim's Rights"", ""Contact Us"", ""Useful Links""]",[],[],[],[] 720,https://delcopa.gov/ich/resources/covid19/pdf/contactidentification.pdf,Poor Data Source,200,"404 - Delaware County, Pennsylvania","","[""404 Error""]",[],"[""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] 721,https://delcopa.gov/publicrelations/releases/2022/delcolaunchesfreefraudsleuthsoftwaretohelpfightpropertyfraud.html,Not Criminal Justice Related,200,"Delaware County Launches Free FraudSleuth® Software to Help Residents Fight Property Fraud - Delaware County, Pennsylvania","","[""Delaware County Launches Free FraudSleuth\u00ae Software to Help Residents Fight Property Fraud""]",[],"[""Public Relations Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] @@ -849,21 +849,21 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 732,https://dagsboro.delaware.gov/wp-content/blogs.dir/106/files/police-department/newpolicecars2008-001.jpg,Poor Data Source,404,"","",,,,,, 733,https://www.ashevillenc.gov/news/asheville-police-be-a-connection-for-children-during-child-abuse-prevention-month/,Resources,200,Asheville Police: ‘Be A Connection’ for children during Child Abuse Prevention Month - The City of Asheville,"","[""Asheville Police: \u2018Be A Connection\u2019 for children during Child Abuse Prevention Month""]",[],[],[],[],[] 734,https://policeanalysis.tucsonaz.gov/items/9fb161581d264cf99cc9e6da47dafa36,Poor Data Source,200,Tucson Police Data & Analysis,"As part of our commitment to transparency and accountability, the Tucson Police Department is empowering community members to explore and download policing data.",[],[],[],[],[],[] -735,https://www.clintonvillewi.gov/government/departments/police/use_of_force_policies,Policies & Contracts,200," - Use of Force Policies - City of Clintonville +735,https://www.clintonvillewi.gov/government/departments/police/use_of_force_policies,Policies & Contracts,200," + Use of Force Policies - City of Clintonville ","","[""City of ClintonvilleTrucker Pride"", ""USE OF FORCE POLICY\n\nUSE OF LESS LETHAL WEAPONS POLICY\n\nUSE OF DEADLY FORCE POLICY""]","[""Use of Force Policies""]","[""City of Clintonville"", ""City Hall Hours of Operation""]",[],[],[] -736,https://www.auburnwa.gov/city_hall/police/community_programs/crime_prevention/crime_prevention_through_environmental_design,Resources,200," - Crime Prevention Through Environmental Design - City of Auburn +736,https://www.auburnwa.gov/city_hall/police/community_programs/crime_prevention/crime_prevention_through_environmental_design,Resources,200," + Crime Prevention Through Environmental Design - City of Auburn ","",[],[],"[""City Hall"", ""Residents"", ""Business"", ""Visitors""]",[],[],[] -737,https://www.newhopemn.gov/city_hall/police_department/community_services_crime_prevention,Resources,200," - Community Services & Crime Prevention - City of New Hope +737,https://www.newhopemn.gov/city_hall/police_department/community_services_crime_prevention,Resources,200," + Community Services & Crime Prevention - City of New Hope ","","[""City of New Hope"", ""\r\n \tCity of New HopeMinnesota""]","[""Community Services & Crime Prevention"", """", ""Annual Bike Rodeo"", ""Prevent Bike Theft""]","[""Contact:""]",[],[],[] -738,https://www.gurnee.il.us/events/2022/05/12/default-calendar/police-department-blood-drive,Misc Police Activity,200," - Gurnee Police Department Blood Drive +738,https://www.gurnee.il.us/events/2022/05/12/default-calendar/police-department-blood-drive,Misc Police Activity,200," + Gurnee Police Department Blood Drive ","","[""Events"", ""Events View Calendar""]","[""Gurnee Police Department Blood Drive""]","[""Village Hall""]",[],[],[] 739,https://delcopa.gov/courts/pretrialbail.html,Contact Info & Agency Meta,200,Bail Agency/Pre-Trial Bail - Delaware County Court of Common Pleas,"","[""Bail Agency/Pre-Trial Bail""]",[],"[""Mission Statement"", ""Bail Agency Procedures"", ""Video Teleconferencing"", ""Pre-Trial Services"", ""Hearings"", ""Veterans Court"", ""Technology Databases"", ""Contact Us"", ""Courts Quick Links"", ""Government Center Quick Links"", ""About Delaware County""]",[],[],[] -740,https://www.arlingtontx.gov/news/my_arlington_t_x/news_archive/2017_archived_news/january_2017/citizens_can_help_police_keep_neighborhoods,Media Bulletins,200," - Citizens Can Help Police Keep Neighborhoods Safe Through Dog Walker Watch Program - City of Arlington +740,https://www.arlingtontx.gov/news/my_arlington_t_x/news_archive/2017_archived_news/january_2017/citizens_can_help_police_keep_neighborhoods,Media Bulletins,200," + Citizens Can Help Police Keep Neighborhoods Safe Through Dog Walker Watch Program - City of Arlington ","","[""YOUR COMMUNITY NEWS AND EVENTS"", ""City of Arlington""]","[""Citizens Can Help Police Keep Neighborhoods Safe Through Dog Walker Watch Program""]","[""Dog Walker Watch Training Schedule""]",[],[],[] 741,http://www.longbeach.gov/police/press-releases/traffic-fatality-7th-and-santiago/,Poor Data Source,200,TRAFFIC FATALITY 7TH AND SANTIAGO,"","[""Long BeachPolice Department""]",[],[],[],[],[] 742,https://police.bixbyok.gov/faq.aspx?qid=107,Not Criminal Justice Related,200,FAQs • What times is Bixhoma Lake open?,"",[],"[""\n\u25bc\r\nParks-Lake Bixhoma\t\t""]","[""Loading"", ""Categories"", ""Live Edit"", ""Helpful Links"", ""FAQs"", ""Site Links""]",[],[],[] @@ -937,13 +937,13 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 810,https://delcopa.gov/courts/judges/scanlon.html,Not Criminal Justice Related,200,Judge Anthony D. Scanlon - Delaware County Court of Common Pleas,"","[""Judge Anthony D. Scanlon""]",[],"[""Contact Us"", ""Courts Quick Links"", ""Government Center Quick Links"", ""About Delaware County""]",[],[],[] 811,http://www.ryepolice.us/logs/police-logs-for-62817-7417,Calls for Service,200,Rye Police Department Police Logs for 6/28/17-7/4/17 - Rye Police Department,"","[""Police Logs for 6/28/17-7/4/17""]","[""Police Logs for 6/28/17-7/4/17""]","[""Navigation"", ""Follow Us"", ""Facebook"", ""Email Updates"", ""Storm Preparedness Guide""]",[],[],[] 812,https://www.east-windsor.nj.us/police-reports,Resources,200,"Official Website of East Windsor Township, New Jersey - Police Reports","",[],"[""Police Reports""]","[""RECORDS FEE SCHEDULE"", ""ALL FEES LISTED BELOW MUST BE PAID IN FULL\r\nPRIOR TO BEING SENT BY MAIL OR FACSIMILE - NO EXCEPTIONS"", ""I.\u00a0 INCIDENT (INVESTIGATION) REPORTS:"", ""II.\u00a0 ACCIDENT REPORTS:"", ""III.\u00a0DISCOVERY Requests from Attorneys/Defendants via mail"", ""IV. PERSONAL RECORDS (BACKGROUND) CHECK:"", ""V. ADDITIONAL REPRODUCTION FEES (In addition to fees listed above)""]",[],[],[] -813,https://www.ci.san-bernardino.ca.us/city_hall/police_department/records_bureau,Records Request Info,200," - Records Bureau - City of San Bernardino +813,https://www.ci.san-bernardino.ca.us/city_hall/police_department/records_bureau,Records Request Info,200," + Records Bureau - City of San Bernardino ","","[""City of San Bernardino California""]","[""Records Bureau""]",[],[],[],[] 814,https://www.rosslynfarmspa.gov/police-activity-reports/november-police-activity-report-2021/,Annual & Monthly Reports,200,Police Activity Report November 2021 - Police Activity Reports - Borough of Rosslyn Farms,"","[""Police Activity Report November 2021""]","[""Post navigation"", ""Special Notices"", ""Council News"", ""Police Activity Reports"", ""Today\u2019s Events"", ""Recent Posts"", ""Archives"", ""Categories"", ""Meta""]",[],[],[],[] 815,https://delcopa.gov/row/notices.html,Not Criminal Justice Related,200,"Notices - Delaware County, Pennsylvania","","[""Notices""]",[],"[""Register of Wills Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] -816,https://www.pleasantprairiewi.gov/news/2022_news/police_and_fire_station_design_contracts,Poor Data Source,200," - Police and Fire Station Design Contracts - Village of Pleasant Prairie +816,https://www.pleasantprairiewi.gov/news/2022_news/police_and_fire_station_design_contracts,Poor Data Source,200," + Police and Fire Station Design Contracts - Village of Pleasant Prairie ","",[],"[""Police and Fire Station Design Contracts""]","[""Follow Us on Social Media""]",[],[],[] 817,http://lafayettepolice.us/faq.aspx?qid=92,Media Bulletins,200,FAQs • I really hate the color and design of our license pla,"",[],"[""\n\u25bc\r\nPolice\t\t""]","[""Loading"", ""Categories"", ""Live Edit"", ""Contact Us"", ""FAQs"", ""Site Links""]",[],[],[] 818,https://bolivar.mo.us/shop-with-a-copr/img_1198-2/,Poor Data Source,200,"IMG_1198 - City of Bolivar, Missouri","","[""IMG_1198""]",[],[],[],[],[] @@ -955,13 +955,13 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 824,https://www.doj.state.or.us/venue/portland-police-bureau/,Contact Info & Agency Meta,200,Portland Police Bureau - Oregon Department of Justice : Media,"","["""", ""\nPortland Police Bureau\n"", ""Portland Police Bureau""]","[""Oregon Department of Justice"", ""Portland Police Bureau"", ""Upcoming Events""]","[""Attorney General Ellen F. Rosenblum""]",[],[],[] 825,https://www.mass.gov/doc/regional-assessment-center-initiative-memo-police-chief-and-deputy-police-chief-0/download,Policies & Contracts,200,"","",[],[],[],[],[],[] 826,https://www.mass.gov/info-details/audit-of-the-quinsigamond-community-college-foundation-objectives-scope-and-methodology,Not Criminal Justice Related,200,"Audit of the Quinsigamond Community College Foundation Objectives, Scope, and Methodology | Mass.gov",An overview of the purpose and process of auditing the Quinsigamond Community College Foundation.,"[""\nAudit of the Quinsigamond Community College Foundation Objectives, Scope, and Methodology\n""]","[""Table of Contents\n for the audit, Audit of the Quinsigamond Community College Foundation"", ""Table of Contents"", ""Overview\n "", ""Data Reliability\n "", ""Conclusion\n "", ""Help Us Improve Mass.gov with your feedback""]",[],[],[],[] -827,https://www.roseville.ca.us/government/departments/police_department/press_releases,Media Bulletins,200," - Press Releases - City of Roseville +827,https://www.roseville.ca.us/government/departments/police_department/press_releases,Media Bulletins,200," + Press Releases - City of Roseville ","","[""City of Roseville""]","[""Press Releases""]","[""Roseville Police Department ""]",[],[],[] 828,https://ose.louisiana.gov/event/police-forensic-scientist-3/,Training & Hiring Info,200,Police Forensic Scientist | Louisiana Office of State Examiner,"","["""", ""Police Forensic Scientist""]",[],"[""Competitive Level""]",[],[],"[""Recent Posts"", ""Archives"", ""Categories"", ""Meta""]" 829,https://detroitmi.gov/departments/police-department/detroit-police-department-shield-program/faith-based-partners,Resources,200,Faith-Based Partners | City of Detroit,"Why Join SHIELD? The Detroit Police Department Shield program is committed to an open line of communication between faith-based leaders and law enforcement agencies to effectively deter terrorism, homegrown violent extremists, and crimes that affect houses of worship. Benefits of DPD SHIELD Partnership We have a shared responsibility to provide for the safety and security of our community. The DPD SHIELD Program serves as the tool to accomplish this task; however, only by collaborating can we achieve success. As a member of the DPD SHIELD Program, you will have an opportunity to take an active role in helping to make Detroit a wonderful place to live, work, and raise a family. Resources Faith-Based Community Resources The Cybersecurity and Infrastructure Security Agency (CISA) in partnership with the Department of Homeland Security for Faith-Based and Neighborhood Partnerships and the Faith-Based Information Sharing and Analysis Organization have developed resources that assist in securing faith-based organization’s physical and cybersecurity. CISA (5) Ways to Improve the Safety and Security of Your Place of Worship or Community Spaces CISA Security Self-Assessment DHS Center for Faith-Based and Neighborhood Partnerships Resources The Power of Hello Guide for Houses of Worship Additional Resources The Faith-Based Information Sharing & Analysis Organization (FB-ISAO) CAIR - Best Practices for Mosque and Community Safety Synagogue Security Toolkit Secure Community Network ","[""\nFaith-Based Partners\n""]","[""Top Links"", ""Site Menu"", ""\nDetroit Police Shield FAQs\n\n""]","[""Why Join SHIELD?\u00a0"", ""\nBenefits of DPD SHIELD Partnership\u00a0"", ""Resources""]","[""CONTACTS""]",[],[] -830,https://www.ci.rohnert-park.ca.us/i_want_to__/police_transparency,List of Data Sources,200," - Transparency - City of Rohnert Park +830,https://www.ci.rohnert-park.ca.us/i_want_to__/police_transparency,List of Data Sources,200," + Transparency - City of Rohnert Park ","","[""City of Rohnert Park""]","[""Rohnert Park""]","[""Transparency""]",[],[],"[""The Rohnert Park Department of Public Safety believes in open and accessible government, meaningful engagement, and mutual accountability.""]" 831,https://delcopa.gov/sustainability/pdf/raise/populationforecast-2015-2045_2016.pdf,Not Criminal Justice Related,200,"404 - Delaware County, Pennsylvania","","[""404 Error""]",[],"[""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] 832,https://cityofpowell.us/police-agency/traffic-surveys/traffic-survey-report-4-2-18-1/,Poor Data Source,200,"City of Powell, Ohio | Traffic Survey Report 4-2-18 (1)","","[""\n Traffic Survey Report 4-2-18 (1)\n \n ""]","[""CONTACT INFO\n"", ""HELPFUL LINKS"", ""\n LET'S CONNECT\n ""]","[""you're at home in Powell""]","[""614.885.5380"", ""47 Hall Street, Powell, OH 43065"", ""Signup for our newsletter""]",[],[] @@ -976,8 +976,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 841,https://spdblotter.seattle.gov/2016/06/19/police-wound-knife-wielding-domestic-violence-suspect-during-confrontation-in-jackson-place-neighborhood/,Media Bulletins,200,Police Wound Knife-Wielding Domestic Violence Suspect During Confrontation in Jackson Place Neighborhood - SPD Blotter,"","[""Police Wound Knife-Wielding Domestic Violence Suspect During Confrontation in Jackson Place Neighborhood""]","[""Find Posts By Topic"", ""You might also like..."", ""Police"", ""City-Wide Information"", ""Top Requests"", ""Policies""]","[""Animals"", ""Assistance"", ""For Businesses"", ""Civil Rights"", ""Elected Officials"", ""Explore the City"", ""Get Involved"", ""Immigrants and Refugees"", ""Issues and Initiatives"", ""Learning and Education"", ""Public Safety"", ""Transportation and Development"", ""Technology"", ""Utilities""]","[""Browse the Archive""]",[],[] 842,http://www.longbeach.gov/police/press-releases/traffic-fatality----pacific-coast-highway710-freeway-overpass/,Media Bulletins,200,TRAFFIC FATALITY - PACIFIC COAST HIGHWAY &710 FREEWAY OVERPASS,"","[""Long BeachPolice Department""]",[],[],[],[],[] 843,https://www.mass.gov/doc/chicopee-maximum-capacity-sports-bar-grille-violation-4-8-13/download,Media Bulletins,200,"","",[],[],[],[],[],[] -844,https://www.montebelloca.gov/departments/police/news/all_news_articles/etch_catch,Misc Police Activity,200," - Etch & Catch - City of Montebello +844,https://www.montebelloca.gov/departments/police/news/all_news_articles/etch_catch,Misc Police Activity,200," + Etch & Catch - City of Montebello ","","[""City of Montebello""]","[""Etch & Catch""]",[],[],[],[] 845,https://delcopa.gov/employment/jobpostings/senioradministrativespecialist.html,Not Criminal Justice Related,200,"Senior Administrative Specialist - Delaware County, Pennsylvania","","[""Senior Administrative Specialist""]",[],"[""Delco Jobs Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]","[""Summary"", ""Essential Duties"", ""Qualifications"", ""Contact""]",[],[] 846,https://linden-nj.gov/parent-university-helping-cope-with-anxiety-in-your-children/,Not Criminal Justice Related,200,Parent University – Helping Cope With Anxiety In Your Child(ren) – City of Linden,"","[""\n\n\t\t\tParent University \u2013 Helping Cope With Anxiety In Your Child(ren)\n\t\t""]",[],"[""Side Menu"", ""Weather Info"", ""Coat Drive 2021"", ""Nixle Alerts"", ""Recent Public Notices"", ""New Online Forms & Applications"", ""Upcoming Events"", ""About Linden"", ""Upcoming Events"", ""Important Forms, Docs & Applications"", ""Linden City Hall""]","[""Local Time"", ""\n\t\t\t\t\t\t\t\t\tToday\t\t\t\t\t\t\t\t"", ""\n\t\t\t\t\t\t\t\t\t\tWednesday\t\t\t\t\t\t\t\t\t"", ""\n\t\t\t\t\t\t\t\t\t\tThursday\t\t\t\t\t\t\t\t\t"", ""\n\t\t\t\t\t\t\t\t\t\tFriday\t\t\t\t\t\t\t\t\t"", ""\n\n\t \t\t\t\t\tCoat Drive 2021\t \t\t\t\t\n"", ""\n\n\t\t \t\t\t\t\tPublic Notice for the Request for Qualifications for General Management Consulting Services.\t\t \t\t\t\t\n"", ""\n\n\t\t \t\t\t\t\tJanuary Planning Board Meeting \u2013 Cancelled\t\t \t\t\t\t\n"", ""\n\n\t\t \t\t\t\t\tNotice RE New City Administrator and Assistant City Administrator Job Positions Available In The City of Linden\t\t \t\t\t\t\n"", ""\n\n\t\t \t\t\t\t\tNotice RE New Clerk 2 Public Works Position Available In The City of Linden\t\t \t\t\t\t\n"", ""\n\n\t\t \t\t\t\t\tNotice RE Public Safety Telecommunicator Trainee Position Available In The Linden Police Department\t\t \t\t\t\t\n"", ""\n\n\t\t \t\t\t\t\tMixed Martial Arts\t\t \t\t\t\t\n"", ""\n\n\t\t \t\t\t\t\tMixed Martial Arts\t\t \t\t\t\t\n"", ""\n\n\t\t \t\t\t\t\tKids\u2019 Fitness and Tumbling\t\t \t\t\t\t\n"", ""\n\n\t\t \t\t\t\t\tIntro Boot Camp Exercise Class\t\t \t\t\t\t\n"", ""\n\n\t\t \t\t\t\t\tMixed Martial Arts\t\t \t\t\t\t\n"", ""\n\n\t\t \t\t\t\t\tMixed Martial Arts\t\t \t\t\t\t\n"", ""\n\n\t\t \t\t\t\t\tGuidance for Lead Hazard Evaluation Program in Pre-1978 Residential Rentals\t\t \t\t\t\t\n"", ""\n\n\t\t \t\t\t\t\tLead Hazard Owner Registration & Exemptions\t\t \t\t\t\t\n""]","[""\n\t\t\t\t\t\t\t\t\tJanuary 23, 2024\t\t\t\t\t\t\t\t"", ""\n\t\t\t\t\t\t\t\t\t\tJanuary 24, 2024\t\t\t\t\t\t\t\t\t"", ""\n\t\t\t\t\t\t\t\t\t\tJanuary 25, 2024\t\t\t\t\t\t\t\t\t"", ""\n\t\t\t\t\t\t\t\t\t\tJanuary 26, 2024\t\t\t\t\t\t\t\t\t""]","[""\n\n\t\t\t\t\t\t\t\t\tPrevious\t\t\t\t\t\t\t\t\n"", ""\n\n\t\t\t\t\t\t\t\t\tNext\t\t\t\t\t\t\t\t\n""]" @@ -1008,8 +1008,8 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 871,https://norfolkne.gov/government/departments/police-division/press-releases/august-14-press-release.html,Media Bulletins,200,"August 14 Press Release - City of Norfolk, NE","","[""City of Norfolk, NE"", ""Police Division"", ""August 14 Press Release""]",[],[],[],"[""Still looking for something?""]","[""Contact Us"", ""Pay or Apply..."", ""Government..."", ""Services..."", ""Business..."", ""Amenities...""]" 872,https://bouldercolorado.gov/news/boulder-police-looking-unlawful-sexual-contact-suspect,Media Bulletins,200,Boulder Police Looking for Unlawful Sexual Contact Suspect | City of Boulder,"","[""Boulder Police Looking for Unlawful Sexual Contact Suspect\n""]","[""Breadcrumb"", ""Details"", ""Boulder Police are working to identify a man that assaulted an adult woman "", ""Keep Reading""]","[""\nBoulder Police and Boulder County Sheriff\u2019s Office Arrest Man in Shooting Incident\n\n"", ""\nBoulder Police Investigating Fatal Traffic Crash\n\n"", ""\nBoulder Police and Fire Communications Receives National Certification\n\n"", ""\nJonBenet Ramsey Homicide Investigation Update\u2014December 2023\n\n""]",[],[],[] 873,http://police.portlandmaine.gov/225/fire-department-careers,Not Criminal Justice Related,200,"Fire Department Careers | Portland, ME - Official Website","The Portland Fire Department accepts employment applications when the need for an eligibility list is determined, which typically occurs on an annual basis. Hiring information and applications will be available on the HR website when the application period is open.","[""Fire Department Careers""]",[],[],[],[],[] -874,https://www.arlingtontx.gov/news/my_arlington_t_x/police_news_releases/fatality_crash_report__2019-00690088,Media Bulletins,200," - Fatality Crash Report #2019-00690088 - City of Arlington +874,https://www.arlingtontx.gov/news/my_arlington_t_x/police_news_releases/fatality_crash_report__2019-00690088,Media Bulletins,200," + Fatality Crash Report #2019-00690088 - City of Arlington ","","[""YOUR COMMUNITY NEWS AND EVENTS"", ""City of Arlington""]","[""Fatality Crash Report #2019-00690088""]",[],[],[],[] 875,https://norfolkne.gov/assets/site/documentcentral/police/2021-daily-reports/summary/031621summary.pdf,Dispatch Logs,200,"","",[],[],[],[],[],[] 876,http://www.ryepolice.us/announcements/state-of-new-hampshire-department-of-safety-press-release-extreme-heat/attachment/heat-press-release,Media Bulletins,200,Rye Police Department Heat Press Release - Rye Police Department,"","[""Heat Press Release""]","[""Heat Press Release""]","[""Navigation"", ""Follow Us"", ""Facebook"", ""Email Updates"", ""Storm Preparedness Guide""]",[],[],[] @@ -1019,15 +1019,15 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 880,https://www.littlerock.gov/news/new-little-rock-police-department-chief-to-hold-public-meetings-in-all-city-wards/,Media Bulletins,200,New Little Rock Police Department Chief to Hold Public Meetings in All City Wards | City of Little Rock,"",[],"[""\nMedia Release \n""]",[],[],[],[] 881,https://www.mass.gov/event/scoping-meeting-ma-response-to-anticipated-changes-to-federal-atlantic-large-whale-take-reduction-plan-affecting-trap-fisheries-2020-02-19t180000-0500-2020-02-19t200000-0500,Not Criminal Justice Related,200,Scoping Meeting: MA Response to Anticipated Changes to Federal Atlantic Large Whale Take Reduction Plan Affecting Trap Fisheries | Mass.gov,DMF has scheduled two scoping meetings to discuss the state’s response to anticipated changes to the federal Atlantic Large Whale Take Reduction Plan (ALWTRP).,"[""\nPublic Meeting Notice\u00a0\n Scoping Meeting: MA Response to Anticipated Changes to Federal Atlantic Large Whale Take Reduction Plan Affecting Trap Fisheries\n ""]","[""\n\nAddress\n"", ""Contact\n for Scoping Meeting: MA Response to Anticipated Changes to Federal Atlantic Large Whale Take Reduction Plan Affecting Trap Fisheries"", ""Overview\n of Scoping Meeting: MA Response to Anticipated Changes to Federal Atlantic Large Whale Take Reduction Plan Affecting Trap Fisheries"", ""Additional Resources\n for Scoping Meeting: MA Response to Anticipated Changes to Federal Atlantic Large Whale Take Reduction Plan Affecting Trap Fisheries"", ""Contact\n for Scoping Meeting: MA Response to Anticipated Changes to Federal Atlantic Large Whale Take Reduction Plan Affecting Trap Fisheries"", ""Participating Organizations\n "", ""Contact for Scoping Meeting: MA Response to Anticipated Changes to Federal Atlantic Large Whale Take Reduction Plan Affecting Trap Fisheries"", ""Upcoming Events\n for Scoping Meeting: MA Response to Anticipated Changes to Federal Atlantic Large Whale Take Reduction Plan Affecting Trap Fisheries"", ""Help Us Improve Mass.gov with your feedback""]","[""\n Division of Marine Fisheries\n "", ""\n Division of Marine Fisheries\n "", ""\n Division of Marine Fisheries\n ""]","[""\n\nPhone\n"", ""\n\nOnline\n"", ""\n\nFax\n"", ""\n\nPhone\n"", ""\n\nOnline\n"", ""\n\nFax\n"", ""\n\nPhone\n"", ""\n\nOnline\n"", ""\n\nFax\n""]",[],[] 882,https://wrightstown.us/police-reports/11-29-2015-12-05-2015/,Media Bulletins,200,11-29-2015 - 12-05-2015 - Village of Wrightstown,"","[""11-29-2015 \u2013 12-05-2015""]","[""Recent News"", ""\n\t\t\t\t\t\tUpcoming Events\t\t\t\t\t""]",[],"[""Village Hall"", ""Public Works"", ""Police Department"", ""Fire Department"", ""Join Us on Social Media""]",[],[] -883,https://sanramon.ca.gov/our_city/departments_and_divisions/police/alarms,Policies & Contracts,200," - Alarm Registration Program - City of San Ramon +883,https://sanramon.ca.gov/our_city/departments_and_divisions/police/alarms,Policies & Contracts,200," + Alarm Registration Program - City of San Ramon ","","[""Alarm Registration Program""]","[""Contact Us"", ""Alarm Registration Program"", ""Contact Us"", ""Useful Links""]",[],[],[],[] 884,http://www.longbeach.gov/police/press-releases/dui-driver-s-license-checkpoint-planned-this-weekend-3-/,Media Bulletins,200,DUI-DRIVER'S LICENSE CHECKPOINT PLANNED THIS WEEKEND(3),"","[""Long BeachPolice Department""]",[],[],[],[],[] 885,https://www.stcharlesil.gov/departments/police/overview/bike-patrol,Media Bulletins,200,"Bike Patrol | City of St Charles, IL","The St. Charles bicycle patrol unit is an ""as needed"" unit that was started in May of 1993 with the help of the staff from the Bike Rack here in St. Charles. The bicycle patrol is used to supplement the three patrol shifts during the summer months.","[""\n\n City of St. Charles, Illinois \n"", ""Bike Patrol""]","[""You are here"", ""Police Department"", ""\n Key Resources "", ""\n Connect With Us ""]",[],[],[],[] 886,https://ridgelandsc.gov/police-department/daily-arrest-reports-december-2019,Arrest Records,200,Town of Ridgeland,Town of Ridgeland,"[""Police Department""]","[""Daily Arrest Reports - December 2019""]",[],[],[],[] 887,https://barnegatpolice.us/wp-content/uploads/2018/05/contactuspageheader-300x135.jpg,Poor Data Source,200,"","",[],[],[],[],[],[] -888,https://www.bedminster.us/police_fire_rescue/far_hills__bedminster_fire_dept,Not Criminal Justice Related,200," - Far Hills-Bedminster Fire Dept. - Township of Bedminster +888,https://www.bedminster.us/police_fire_rescue/far_hills__bedminster_fire_dept,Not Criminal Justice Related,200," + Far Hills-Bedminster Fire Dept. - Township of Bedminster ","","[""Bedminster Township""]","[""Far Hills-Bedminster Fire Dept.""]","[""Bedminster Township""]",[],[],[] 889,https://brewermaine.gov/news/brewer-police-pull-woman-from-joshua-chamberlain-bridge/bridges-1gd-jpg/,Poor Data Source,200,"• The City of Brewer, Maine","","[""Brewer News""]",[],[],[],[],[] 890,https://www.mass.gov/how-to/register-for-cops-on-bicycles-with-education-for-bicyclists-cobweb,Misc Police Activity,403,"","",,,,,, @@ -1042,11 +1042,11 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 899,https://alpha.austin.gov/es/police-oversight/indefinite-suspension-of-officer-bryan-black-and-appeals-finding/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] 900,https://delcopa.gov/council/2017minutes/121317minutes.pdf,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] 901,http://www.ryepolice.us/pressrelease/stolen-f-350-with-dump-trailer,Media Bulletins,200,Rye Police Department Stolen F-350 with Dump Trailer - Rye Police Department,"","[""Stolen F-350 with Dump Trailer""]","[""Stolen F-350 with Dump Trailer""]","[""Navigation"", ""Follow Us"", ""Facebook"", ""Email Updates"", ""Storm Preparedness Guide""]",[],[],[] -902,https://www.williamsaz.gov/departments_and_services/police_department/forms,Poor Data Source,200," - Forms - City of Williams, AZ +902,https://www.williamsaz.gov/departments_and_services/police_department/forms,Poor Data Source,200," + Forms - City of Williams, AZ ","","[""City of Williams, Arizona""]","[""Forms""]","[""City of Williams, AZ""]",[],[],[] -903,https://www.arlingtontx.gov/news/my_arlington_t_x/news_archive/2017_archived_news/october_2017/arlington_polices_national_night_out_continues,Poor Data Source,200," - Despite the Rain, Arlington Police’s National Night Out Continues to Shine - City of Arlington +903,https://www.arlingtontx.gov/news/my_arlington_t_x/news_archive/2017_archived_news/october_2017/arlington_polices_national_night_out_continues,Poor Data Source,200," + Despite the Rain, Arlington Police’s National Night Out Continues to Shine - City of Arlington ","","[""YOUR COMMUNITY NEWS AND EVENTS"", ""City of Arlington""]","[""Despite the Rain, Arlington Police\u2019s National Night Out Continues to Shine""]",[],[],[],[] 904,http://lafayettepolice.us/144/find,Resources,200,"Find | Lafayette, IN - Official Website",Find quick access to pages that are viewed most often.,"[""\r\n\r\nFind\t\t""]",[],"[""Loading"", ""Contact Us"", ""FAQs"", ""Site Links""]","[""\nApartment Safety\n"", ""\nCarbon Monoxide Detectors\n"", ""\nHome Emergency Plans\n"", ""\nLive Council Meetings\n"", ""\nLPD Memorial Wall\n"", ""\nPolice Honor Guard\n""]",[],[] 905,http://www.longbeach.gov/insidelb/blogs/conversations-with-a-long-beach-police-department-crime-analyst/,Poor Data Source,200,Crime Analyst Helps Increase Safety in Long Beach Thanks To Measure A,"","[""InsideLB"", ""Crime Analyst Helps Increase Safety In Long Beach Thanks To Measure A""]",[],"[""Mayor"", ""City Council"", ""Rex Richardson"", ""Mary Zendejas"", ""Cindy Allen"", ""Kristina Duggan"", ""Daryl Supernaw"", ""Megan Kerr"", ""Suely Saro"", ""Roberto Uranga"", ""Al Austin"", ""Dr. Joni Ricks-Oddie"", ""Dawn McIntosh"", ""Laura L. Doud"", ""Doug Haubert"", ""Tom Modica"", ""Monique DeLaGarza"", ""City-Wide Elected Officials"", ""Appointed Officials"", ""Online Payments"", ""Online Services"", ""In-Person Services"", ""Opening a Business"", ""Doing Business With The City"", ""Resources"", ""Most Popular"", ""Online Resources"", ""Attractions"", ""Business Associations"", ""Travel Resources"", ""Departments"", ""Job Opportunities"", ""Information"", ""Series"", ""Do."", ""Discover."", ""Connect."", ""Ask.""]","["""", ""1st District"", ""2nd District"", ""3rd District"", ""4th District"", ""5th District"", ""6th District"", ""7th District"", ""8th District"", ""9th District"", ""City Attorney"", ""City Auditor"", ""City Prosecutor"", ""City Manager"", ""City Clerk""]",[],[] @@ -1085,12 +1085,12 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 938,https://coloradosprings.gov/police-department/article/news/drug-take-back-april-24th-2021,Media Bulletins,200,Drug Take Back April 24th 2021 | City of Colorado Springs,"","[""\nDrug Take Back April 24th 2021\n""]","[""Search"", ""Colorado Springs Weekly"", ""GoCOS!"", ""Connect with @CityofCOS""]",[],[],"[""REPORT ONLINE""]",[] 939,https://alpha.austin.gov/en/police-oversight/2020-06-08-4/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] 940,https://unioncitypa.us/police/uc-police-employment-application-2022/,Training & Hiring Info,200,"UC Police Employment Application 2022 | Union City, Pennsylvania",Download Application Packet,"[""UC Police Employment Application 2022""]",[],"[""Recent News"", ""Categories"", ""Categories"", ""Recent News""]","[""admin""]",[],[] -941,https://www.ci.northville.mi.us/services/police_department/service_fees,Policies & Contracts,200," - Fee schedule - City of Northville, MI +941,https://www.ci.northville.mi.us/services/police_department/service_fees,Policies & Contracts,200," + Fee schedule - City of Northville, MI ","","[""Fee schedule""]",[],[],[],[],[] 942,https://rockymountnc.gov/police/,Contact Info & Agency Meta,200,Police | Rocky Mount NC,"","[""Police Department""]","[""Robert Hassell""]","[""City raises starting salary for police officers to $60,000 annually""]","[""Police Department Menu""]",[],[] -943,https://ci.piedmont.ca.us/services___departments/police/transparency_portal/department_policies,Poor Data Source,200," - Department Policies - City of Piedmont +943,https://ci.piedmont.ca.us/services___departments/police/transparency_portal/department_policies,Poor Data Source,200," + Department Policies - City of Piedmont ","","[""\r\n City of\r\n Piedmont""]",[],[],[],[],[] 944,http://www.longbeach.gov/police/press-releases/murder-investigation3/,Media Bulletins,200,Murder Investigation,"","[""Long BeachPolice Department""]",[],[],[],[],[] 945,https://champaignil.gov/2013/12/04/champaign-police-make-arrest-in-roper-street-homicide/,Media Bulletins,200,Champaign Police Make Arrest in Roper Street Homicide - City of Champaign,"","[""Champaign Police Make Arrest in Roper Street Homicide""]","[""News Releases"", ""Department News""]",[],[],[],[] @@ -1123,15 +1123,15 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 972,https://beaumonttexas.gov/bpd-police-memorial-ceremony-thursday-may-19-2022-at-900-am/,Poor Data Source,404,"","",,,,,, 973,https://www.osc.state.ny.us/state-agencies/payroll-bulletins/state-police/sp-103-fitness-bonus-payment-fiscal-year-2007-08,Training & Hiring Info,200,State Police Bulletin No. SP-103 | Office of the New York State Comptroller,To notify the Division of State Police of the procedures for processing Fitness Bonus Payments,"[""\nState Police Bulletin No. SP-103\n"", "" ""]","[""Main navigation""]","[""How would you rate our website?""]","[""Disclaimer"", ""Purpose"", ""Affected Employees"", ""Background"", ""Effective Date(s)"", ""Eligibility"", ""Agency Actions"", ""Deduction Information"", ""Undeliverable Checks"", ""Payroll Register and Employee\u2019s Paycheck/Advice"", ""Questions"", ""Newsletter Sign-Up Confirmation"", ""Thank you for subscribing to the Comptroller's Weekly Newsletter!""]",[],[] 974,http://www.longbeach.gov/police/press-releases/two-cited-during-undercover-vice-operation/,Media Bulletins,200,TWO CITED DURING UNDERCOVER VICE OPERATION,"","[""Long BeachPolice Department""]",[],[],[],[],[] -975,https://www.jerseycitynj.gov/news/pressreleases20182017/jersey_city_police_department_reaches_record_numbe,Media Bulletins,200," - JCPD Reaches Record Numbers - City of Jersey City +975,https://www.jerseycitynj.gov/news/pressreleases20182017/jersey_city_police_department_reaches_record_numbe,Media Bulletins,200," + JCPD Reaches Record Numbers - City of Jersey City ","","[""Jersey City""]","[""JCPD Reaches Record Numbers""]",[],[],[],[] 976,https://delcopa.gov/publicrelations/releases/2019/pdf/youthmentalhealthfirstaiddec3.pdf,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] 977,https://www.roseville.ca.us/government/departments/police_department/resources/crime___arrest_information/neighborhood_police_activity_digests,Poor Data Source,404,"","",,,,,, 978,https://delcopa.gov/council/index.html,Not Criminal Justice Related,200,"County Council - Delaware County, Pennsylvania","","[""County Council""]",[],"[""MEMBERS OF THE DELAWARE COUNTY COUNCIL"", ""Helpful County Council Links"", ""County Council Function"", ""County Council Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] 979,https://www.waynesvillenc.gov/services/file-police-report,Contact Info & Agency Meta,200,"File a Police Report | The Town of Waynesville, NC","To file a police report, please call 828-456-5363 to arrange to have an officer meet you at the scene of the crime, or come into the Police Station at 9 South Main St and meet with an officer. Call 911 only for emergencies.","[""File a Police Report\n""]","[""Secondary navigation"", ""Main navigation"", ""Breadcrumb""]",[],"[""Contact Information"", ""Stay Connected""]",[],[] -980,https://sanramon.ca.gov/our_city/departments_and_divisions/police/divisions_and_units/youth_and_family/youth_resource_officer,Contact Info & Agency Meta,200," - Youth Resource Officer - City of San Ramon +980,https://sanramon.ca.gov/our_city/departments_and_divisions/police/divisions_and_units/youth_and_family/youth_resource_officer,Contact Info & Agency Meta,200," + Youth Resource Officer - City of San Ramon ","","[""Youth Resource Officer""]","[""Contact Us"", ""Youth Resource Officer"", ""Contact Us"", ""Useful Links""]",[],[],[],[] 981,https://www.mass.gov/locations/chicopee-retirement-system/locations,Not Criminal Justice Related,200,Locations | Mass.gov,"","[""\n Other locations related to Chicopee Retirement System\n ""]","[""""]",[],[],[],[] 982,https://martinsville.in.gov/departments-services/police-department/,Contact Info & Agency Meta,200,"Police Department | Martinsville, IN","It is the mission of the Martinsville Police Department to safeguard the lives and property of the people we serve, to reduce the incidence and fear of crime and to enhance public safety while working with our community to improve the quality of life.","[""\r\n\r\nPolice Department\t\t""]","[""Programs"", ""Services"", ""Golf Cart Inspections"", ""Connect with the Martinsville Police Department""]","[""Loading"", ""Curfew & Code Enforcement"", ""Operation Sheepdog"", ""Citizens Police Academy"", ""National Night out"", ""Coffee with a Cop"", ""Clothe a Child Project"", ""Dual Credit Partnership"", ""DARE Program"", ""Fraud Protection Presentations"", ""K9 Demonstrations for Students"", ""Free Home Safety Visits"", ""Vacation Watches"", ""Nuisance, Suspected Drug House"", ""Speed Trailer"", ""VIN Inspections"", ""Firearms License"", ""Parking Tickets"", ""Crash / Incident Reports"", ""Contact Us"", ""Hours"", ""Contact Us"", ""Quick Links"", ""Helpful Links""]","[""Police Department""]",[],[] @@ -1175,11 +1175,11 @@ id,url,label,http_response,html_title,meta_description,h1,h2,h3,h4,h5,h6 1020,https://norfolkne.gov/assets/site/documentcentral/police/2021-daily-reports/blotter/050321blotter.pdf,Daily Activity Logs,200,"","",[],[],[],[],[],[] 1021,https://delcopa.gov/controller/pdf/retirement/2018/0523retirementboardminutes.pdf,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] 1022,https://norfolkne.gov/assets/site/documentcentral/police/2021-daily-reports/blotter/060421blotter.pdf,Dispatch Recordings,200,"","",[],[],[],[],[],[] -1023,https://www.knoxvilletn.gov/government/mayors_office/c_o_v_i_d-19___coronavirus_/stress_and_coping/knox_well/general_adult_resources/kid___parent_resources,Not Criminal Justice Related,200," - Kid & Parent Resources - City of Knoxville +1023,https://www.knoxvilletn.gov/government/mayors_office/c_o_v_i_d-19___coronavirus_/stress_and_coping/knox_well/general_adult_resources/kid___parent_resources,Not Criminal Justice Related,200," + Kid & Parent Resources - City of Knoxville ",nothing*,"[""Kid & Parent Resources""]",[],[],[],[],[] 1024,https://norfolkne.gov/assets/site/documentcentral/police/2021-daily-reports/summary/060521summary.pdf,Dispatch Logs,200,"","",[],[],[],[],[],[] -1025,https://southcoffeyvilleok.gov/police-department/city-hall-south-coffeyville/,Not Criminal Justice Related,200," +1025,https://southcoffeyvilleok.gov/police-department/city-hall-south-coffeyville/,Not Criminal Justice Related,200," City Hall South Coffeyville Oklahoma -","",[],"[""\n City Hall South Coffeyville Oklahoma ""]","[""Contact Town of South Coffeyville"", """"]",[],[],[] 1026,https://champaignil.gov/2017/12/22/police-investigate-shooting-2400-block-n-neil-street/,Media Bulletins,200,Police Investigate Shooting - 2400 Block of N. Neil Street - City of Champaign,"","[""Police Investigate Shooting \u2013 2400 Block of N. Neil Street""]","[""News Releases"", ""Department News""]",[],[],[],[] 1027,http://police.portlandmaine.gov/279/general-assistance-reports,Poor Data Source,404,"","",,,,,, @@ -1207,8 +1207,8 @@ City Hall South Coffeyville Oklahoma -","",[],"[""\n City Hal 1049,https://sanfordfl.gov/government/police/,Contact Info & Agency Meta,200,"Police | Sanford, FL","It is the mission of the Sanford Police Department to enhance the quality of life in our city by working in partnership with the community, to enforce the laws, preserve the peace, reduce fear, and provide a safe environment.","[""\n\t\t\t\t\t\t\t\tPolice\t\t\t\t\t\t\t""]","[""Accreditation\n""]","[""Message from the Chief""]","[""Connect With Us"", ""Most Requested"", ""Explore"", ""Stay Connected"", ""City of Sanford, FL | The Friendly City""]",[],[] 1050,https://columbiacitypolice.us/documents/firearm responsibility.pdf,Resources,200,"","",[],[],[],[],[],[] 1051,https://santabarbaraca.gov/press-releases/magical-winter-wonderland-experience-deserving-families-hosted-santa-barbara-police,Not Criminal Justice Related,200,Magical Winter Wonderland Experience for Deserving Families hosted by the Santa Barbara Police Activities League | City of Santa Barbara,"The Santa Barbara Police Department and the Santa Barbara Police Activities League (PAL) would like to formally invite all members of the media to attend the 21st annual Winter Wonderland Event on Thursday, December 15, 2021. The event will be held between 6:00-8:00pm at the Carousel House located on Cabrillo Blvd.","[""Magical Winter Wonderland Experience for Deserving Families hosted by the Santa Barbara Police Activities League""]","[""Breadcrumb"", ""Contact"", ""This is the prefooter section"", ""Main Footer"", ""City Hall"", ""Mailing Address"", ""Newsletters""]",[],[],[],[] -1052,https://www.burienwa.gov/residents/public_safety/police/lead_program,Resources,200," - LEAD Program - City of Burien +1052,https://www.burienwa.gov/residents/public_safety/police/lead_program,Resources,200," + LEAD Program - City of Burien ","","[""City of Burien""]","[""LEAD Program""]",[],[],[],[] 1053,https://chandlerazpd.gov/2019/11/vehicle-burglary-crew-arrested-after-fleeing-from-police/,Media Bulletins,200,Vehicle Burglary Crew Arrested After Fleeing From Police – Chandler Police Department,"","[""Vehicle Burglary Crew Arrested After Fleeing From Police""]",[],"[""Quick Links"", ""News Archives"", ""\n\n\n\n"", ""\n\n\n\n"", ""\n\n\n\n"", ""\n\n\n\n""]","[""\n\n\t\tNovember 12, 2019\t\n"", "" Contact"", "" About the Department"", "" Latest News"", ""\n Courage, Pride, Dedication\n \n \u00a9 2024 Chandler Police Department \n""]",[],[] 1054,https://www.southamptontownnypolice.gov/182/teen-assessment-project,Resources,200,"Teen Assessment Project | Southampton, NY - Official Website","The Teen Assessment Project (TAP) survey asks lifestyle questions of students in grades 8, 10, and 12.","[""\r\n\r\nTeen Assessment Project\t\t""]",[],"[""Loading"", ""Site Tools"", ""Contact Us"", """", ""Contact Us"", ""Site Links""]","[""TAP Reports""]",[],[] @@ -1281,8 +1281,8 @@ City Hall South Coffeyville Oklahoma -","",[],"[""\n City Hal 1121,https://www.mass.gov/locations/state-police-boston-barracks/locations,Geographic,200,Locations | Mass.gov,"","[""\n Other locations related to State Police Boston Barracks\n ""]","[""Showing 1 - 5 of 5 results for:"", ""\n\nState Police Foxboro Barracks\u00a0\n\n"", ""\n\nState Police Framingham Barracks\u00a0\n\n"", ""\n\nState Police Government Center Barracks\u00a0\n\n"", ""\n\nState Police Milton Barracks\u00a0\n\n"", ""\n\nState Police South Boston Barracks\u00a0\n\n""]",[],[],[],[] 1122,https://www.mass.gov/doc/lynch-matthew-v-bridgewater-police-department-121913/download,Court Cases,200,"","",[],[],[],[],[],[] 1123,http://www.lafayettepolice.us/1587/cpz-history,Not Criminal Justice Related,200,"CPZ History | Lafayette, IN - Official Website","","[""\r\n\r\nCPZ History\t\t""]",[],"[""Loading"", ""1870's"", ""Contact Us"", ""FAQs"", ""Site Links""]",[],[],[] -1124,https://police.crystalmn.gov/g_o_v_e_r_n_m_e_n_t/departments_a-_z/assessing,Not Criminal Justice Related,200," - Assessments - City of Crystal +1124,https://police.crystalmn.gov/g_o_v_e_r_n_m_e_n_t/departments_a-_z/assessing,Not Criminal Justice Related,200," + Assessments - City of Crystal ",Links and information about City of Crystal assessing and property tax records.,"[""Assessments""]","[""City Assessment Contact""]","[""Sign up for a city newsletter or notification."", ""City Hall"", ""Regular Hours:""]","[""Monday - Friday""]",[],[] 1125,https://broadview-il.gov/documents/police-department-board-report-may-2022/,Poor Data Source,200,Police Department Board Report – May 2022 | Broadview,"","[""Police Department Board Report \u2013 May 2022""]",[],"[""Featured Gallery"", ""Categories"", ""About Broadview, IL"", ""Phone Numbers"", ""Join Our Newsletter"", ""Broadview Municipal Building""]","[""\n\nPolice Department Board Report \u2013 May 2022\n(339 kB)\n""]",[],[] 1126,https://statepatrol.nebraska.gov/nsp-investigating-milford-police-officer-involved-shooting,Poor Data Source,403,"","",,,,,, @@ -1305,11 +1305,11 @@ City Hall South Coffeyville Oklahoma -","",[],"[""\n City Hal 1143,https://www.southamptontownnypolice.gov/faq.aspx?qid=505,Poor Data Source,200,"FAQs • I renewed my registration with the DMV, but have yet ","",[],"[""\n\u25bc\r\nParks & Rec\t\t""]","[""Loading"", ""Site Tools"", ""Categories"", ""Live Edit"", ""Contact Us"", ""Site Links""]",[],[],[] 1144,https://manitowoccountywi.gov/departments/joint-dispatch-center/policefireems-contact-information/,Contact Info & Agency Meta,200,Manitowoc County - Police/Fire/EMS Contact Information - Manitowoc County,"","[""\n Police/Fire/EMS Contact Information ""]",[],"[""Manitowoc County Police, Fire and EMS""]",[],"[""\nDepartments\n""]","[""\nJoint Dispatch Center\n"", ""CONTACT"", ""ALERTS"", ""DIRECTORY"", ""LEGALS""]" 1145,http://www.lafayettepolice.us/2201/outdoor-maintenance,Resources,200,"Outdoor Maintenance | Lafayette, IN - Official Website",How to maintain your lawn and outdoor areas to reduce stormwater pollution.,"[""\r\n\r\nOutdoor Maintenance\t\t""]","[""Mowing"", ""Pets"", ""Car Washing"", ""Leaves and Fertilizer"", ""Swimming Pools"", ""Watering the Garden""]","[""Loading"", ""Contact Us"", ""FAQs"", ""Site Links""]",[],[],[] -1146,https://www.edmondswa.gov/government/departments/police_department/security_camera_registration,Resources,200," - Security Camera Registration - City of Edmonds, WA +1146,https://www.edmondswa.gov/government/departments/police_department/security_camera_registration,Resources,200," + Security Camera Registration - City of Edmonds, WA ","","[""City of Edmonds - Washington""]","[""Security Camera Registration""]","[""Edmonds Police Department"", ""Recruitment and Hiring""]",[],[],[] -1147,https://police.crystalmn.gov/police/contact_us/crime_report,Poor Data Source,200," - Crime Reporting System - City of Crystal-Police +1147,https://police.crystalmn.gov/police/contact_us/crime_report,Poor Data Source,200," + Crime Reporting System - City of Crystal-Police ","","[""Crime Reporting System""]",[],"[""Sign up for a city newsletter or notification."", ""Police Department"", ""Lobby Hours:""]","[""Bolded fields are required"", ""Monday - Friday""]",[],[] 1148,https://delcopa.gov/treasurer/pdf/2021reassessmentvalues/10.pdf,Annual & Monthly Reports,200,"","",[],[],[],[],[],[] 1149,https://www.dps.nm.gov/blog/2021/12/08/update-cancel-silver-alert-rio-rancho-police-department-eric-engquist/,Incident Reports,200,UPDATE: CANCEL SILVER ALERT – Rio Rancho Police Department – Eric Engquist - NM Department of Public Safety,"","[""UPDATE: CANCEL SILVER ALERT \u2013 Rio Rancho Police Department \u2013 Eric Engquist""]",[],"[""Location"", ""Sitemap"", ""Quick Links"", ""Social Media Links""]",[],[],[] @@ -1327,13 +1327,13 @@ City Hall South Coffeyville Oklahoma -","",[],"[""\n City Hal 1161,https://www.mass.gov/doc/fas-31-2018-hcpcs-code-revisions-new-prior-authorization-requirement-for-knee-arthroscopy/download,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] 1162,https://www.coppelltx.gov/1051/s-belt-line-reconstruction-updates,Not Criminal Justice Related,200,"S Belt Line Reconstruction Updates | Coppell, TX",Read the latest updates from the S Belt Line Reconstruction Project. Construction is expected to be completed in Spring 2023.,"[""\r\n\r\nS Belt Line Reconstruction Updates\t\t""]",[],"[""Loading"", ""Friday, January 19"", """", ""Friday, January 12"", """", ""Friday, January 05"", ""Friday, December 22"", ""Friday, December 15"", ""Friday, December 8"", ""Friday, December 1"", ""Friday, November 16"", """", ""Friday, November 10"", """", ""Friday, November 3"", ""Friday, October 27"", ""Friday, October 20"", ""Friday, October 13"", """", ""Friday, October 6"", ""Friday, September 29"", """", ""Friday, September 22"", """", ""Friday, September 15"", ""Friday, September 1"", ""Friday, August 25"", """", ""Friday, August 18"", """", ""Friday, August 11"", """", ""Friday, August 4"", ""Friday, July 28, 2023"", ""Friday, July 14, 2023"", """", ""Friday, July 7, 2023"", """", ""Friday, June 30, 2023"", """", ""Friday, June 16, 2023"", """", ""Friday, June 9, 2023"", """", ""Friday, May 29, 2023"", """", ""Friday, May 19, 2023"", """", ""Friday, May 12, 2023"", """", ""Friday, May 5, 2023"", """", ""Friday, April 28, 2023"", """", ""Friday, April 21, 2023"", """", ""Friday, April 14, 2023"", """", ""Friday, April 7, 2023"", """", """", ""Friday, March 31, 2023"", """", ""Friday, March 24, 2023"", """", ""Friday, March 17, 2023"", """", ""Friday, March 3, 2023"", """", ""Friday, February 17, 2023"", """", ""Friday, February 10, 2023"", """", ""Friday, February 3, 2023"", """", ""Friday, January 20, 2023"", """", ""Friday, January 13, 2023"", """", ""Friday, January 6, 2023"", """", ""Friday, December 16, 2022"", """", ""Friday, December 9, 2022"", """", ""Friday, December 2, 2022"", """", ""Friday, November 25, 2022"", """", ""Friday, November 18, 2022"", """", ""Friday, November 11, 2022"", """", ""Friday, November 4, 2022"", """", ""Friday, October 28, 2022"", """", """", ""Friday, October 21, 2022"", """", """", ""Friday, October 14, 2022"", ""Friday, October 7, 2022"", ""Friday, September 30, 2022"", ""Friday, September 16, 2022"", ""Friday, September 9, 2022"", ""Friday, September 2, 2022"", ""Friday, August 26, 2022"", ""Friday, August 19, 2022"", ""Friday, August 12, 2022"", ""Friday, August 5, 2022"", ""Friday, July 29, 2022"", ""Friday, July 22, 2022"", ""Friday, July 15, 2022"", ""Friday, July 8, 2022"", ""Friday, July 1, 2022"", ""Friday, June 24, 2022"", ""Friday, June 17, 2022"", ""Friday, June 10, 2022"", ""Friday, June 3, 2022"", ""Friday, May 27, 2022"", ""Friday, May 20, 2022"", ""Friday, May 13, 2022"", ""Friday, May 6, 2022"", ""Friday, April 29, 2022"", ""Friday, April 22, 2022"", ""Friday, April 15, 2022"", ""Friday, April 8, 2022"", ""Friday, April 1, 2022"", ""Friday, March 25, 2022"", ""Friday, March 18, 2022"", ""Friday, March 11, 2022"", ""Friday, March 4, 2022"", ""Contact Us""]","[""Public Works"", ""\n"", ""\n""]",[],[] 1163,https://delcopa.gov/planning/pubs/delco2035economicdevelopmentplan.html,Not Criminal Justice Related,200,Delaware County 2035 Economic Development Plan,"","[""Delaware County 2035 Economic Development Plan \n""]",[],"[""Planning Department Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] -1164,https://www.farmingtonmn.gov/government/departments/police/divisions/crime_scene_unit,Resources,200," - Crime Scene Unit - City of Farmington +1164,https://www.farmingtonmn.gov/government/departments/police/divisions/crime_scene_unit,Resources,200," + Crime Scene Unit - City of Farmington ","","[""City of Farmington""]","[""Crime Scene Unit""]",[],[],[],[] 1165,https://cityofpowell.us/reports/auto-draft-91/07-2017-police-report/,Annual & Monthly Reports,200,"City of Powell, Ohio | 07.2017 Police Report","","[""\n 07.2017 Police Report\n \n ""]","[""CONTACT INFO\n"", ""HELPFUL LINKS"", ""\n LET'S CONNECT\n ""]","[""you're at home in Powell""]","[""614.885.5380"", ""47 Hall Street, Powell, OH 43065"", ""Signup for our newsletter""]",[],[] 1166,https://beaumonttexas.gov/beaumont-police-investigating-aggravated-robbery-grant-irving-intersection/,Media Bulletins,404,"","",,,,,, -1167,https://www.roseville.ca.us/government/departments/police_department/contact_roseville_police/ride-_along_application,Poor Data Source,200," - Ride-Along Application - City of Roseville +1167,https://www.roseville.ca.us/government/departments/police_department/contact_roseville_police/ride-_along_application,Poor Data Source,200," + Ride-Along Application - City of Roseville ","","[""City of Roseville""]","[""Ride-Along Application""]","[""Roseville Police Department ""]",[],[],[] 1168,https://www.stpaul.gov/departments/police/department-history,Not Criminal Justice Related,200,Department History | Saint Paul Minnesota,Saint Paul Police History The Saint Paul Police Department is proud of its rich history of service. The department has grown since its beginning in 1854 to,"[""\nDepartment History\n""]","[""Main Navigation"", ""Popular Topics"", ""Breadcrumb"", ""\n In This Section\n "", ""Saint Paul Police History"", ""Badges of the Police Department"", ""Vehicles of the Police Department"", ""Uniforms of the Department"", ""Links to the Past"", ""Footer""]","[""\n You are using an unsupported browser. Please use Microsoft Edge.\n "", ""\n Contact The City\n "", ""Email Us"", ""Call 651-266-8989""]","[""Business Spotlight"", ""Featured"", ""Business Spotlight"", ""Featured""]",[],[] 1169,https://police.greenvillesc.gov/526/colonel-elias-earle-historic-district,Not Criminal Justice Related,-1,"","",,,,,, @@ -1366,8 +1366,8 @@ City Hall South Coffeyville Oklahoma -","",[],"[""\n City Hal 1196,https://alpha.austin.gov/en/police-oversight/notice-of-complaint-related-to-2022-0868/,Complaints & Misconduct,200,Maintenance Notice,"",[],[],[],[],[],[] 1197,https://delcopa.gov/hcd/pdfs/leadinformationforhomeowners.pdf,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] 1198,https://www.sandiego.gov/department-document/police-identify-attempted-murder-victim-oak-park,Media Bulletins,200,Police Identify Attempted Murder Victim In Oak Park | City of San Diego Official Website,"","[""City of San Diego Official Website""]","[""Main navigation"", ""Leisure"", ""Resident Resources"", ""Doing Business"", ""Library"", ""Public Safety"", ""City Hall"", ""Accessibility Tools"", ""Police Identify Attempted Murder Victim In Oak Park"", ""Footer""]",[],"[""Parks"", ""Outdoors"", ""Neighborhoods"", ""Recreational Activities"", ""Street Maintenance"", ""Plan"", ""Fix"", ""Build"", ""Programs & Events"", ""Services"", ""Kids & Teens"", ""eCollection"", ""Police"", ""Fire-Rescue"", ""Lifeguards"", ""City Officials"", ""City Government""]",[],[] -1199,https://ci.san-bernardino.ca.us/news/archived_news/downtown_specific_plan_scoping_meeting,Not Criminal Justice Related,200," - Downtown Specific Plan Scoping Meeting - City of San Bernardino +1199,https://ci.san-bernardino.ca.us/news/archived_news/downtown_specific_plan_scoping_meeting,Not Criminal Justice Related,200," + Downtown Specific Plan Scoping Meeting - City of San Bernardino ","","[""City of San Bernardino California""]","[""Downtown Specific Plan Scoping Meeting""]",[],[],[],[] 1200,https://springfield-or.gov/coffee-with-a-cop-scheduled-for-afternoon-on-november-4th/,Media Bulletins,200,Coffee With a Cop Scheduled for Afternoon on November 4th - City of Springfield Oregon,"","[""Coffee With a Cop Scheduled for Afternoon on November 4th""]",[],[],[],[],[] 1201,https://alpha.austin.gov/police-oversight/2020-08-17/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] @@ -1390,11 +1390,11 @@ City Hall South Coffeyville Oklahoma -","",[],"[""\n City Hal 1218,https://mukilteowa.gov/news/mukilteo-police-brings-awareness-to-domestic-violence/,Media Bulletins,200," City of Mukilteo | Mukilteo Police Brings Awareness to Domestic Violence - City of Mukilteo ","","[""\n\t\t Mukilteo Police Brings Awareness to Domestic Violence\t\t ""]","[""\n\t\t\t\t\t\tSign up for notifications\n\t\t\t\t\t""]",[],[],[],[] -1219,https://www.desmoineswa.gov/departments/police/programs_services/his_victim_notification_program,Resources,200," - ICE & HSI Victim Notification Program - City of Des Moines, WA +1219,https://www.desmoineswa.gov/departments/police/programs_services/his_victim_notification_program,Resources,200," + ICE & HSI Victim Notification Program - City of Des Moines, WA ","","[""City of Des Moines, WA""]","[""ICE & HSI Victim Notification Program""]",[],[],[],[] -1220,https://www.arlingtontx.gov/news/my_arlington_t_x/news_stories/police_chief_community_welcome,Media Bulletins,200," - Arlington to Host Community Event Jan. 25 to Welcome New Chief of Police Al Jones - City of Arlington +1220,https://www.arlingtontx.gov/news/my_arlington_t_x/news_stories/police_chief_community_welcome,Media Bulletins,200," + Arlington to Host Community Event Jan. 25 to Welcome New Chief of Police Al Jones - City of Arlington ","","[""YOUR COMMUNITY NEWS AND EVENTS"", ""City of Arlington""]","[""Arlington to Host Community Event Jan. 25 to Welcome New Chief of Police Al Jones""]",[],[],[],[] 1221,https://www.austintexas.gov/blog/austin-green-business-leader-featured-member-st-andrews-episcopal-school,Not Criminal Justice Related,200,Austin Green Business Leader | Featured Member: St. Andrew’s Episcopal School | AustinTexas.gov,You may have heard of the Austin Green Business Leader program but perhaps are still unsure of how the program works or who the members are. We’ll be featuring different members throughout the year to introduce the great businesses helping make Austin an even better place to live and do business!,"[""Austin Green Business Leader | Featured Member: St. Andrew\u2019s Episcopal School""]","[""Action Navigation"", ""GTranslate"", ""Main menu"", ""Frequently Viewed Departments"", ""Sustainable Austin Blog"", ""Share"", ""About this blog"", ""Tags"", ""Archives"", ""Pagination"", ""Footer Menu"", ""Second Footer Menu""]","[""Resident"", ""Business"", ""Government"", ""Departments"", ""Connect"", ""Austin Green Business Leader | Featured Member: St. Andrew\u2019s Episcopal School"", """", ""Who is St. Andrew's Episcopal School?"", ""What makes them a Green Business Leader?"", ""Is your business a green business?"", ""2023 December\n"", ""2023 December\n"", ""2023 November\n"", ""2023 November\n"", ""2023 November\n"", ""2023 October\n"", ""2023 October\n"", ""2023 September\n"", ""2023 August\n"", ""2023 August\n""]",[],[],[] 1222,https://vpd.vernonia-or.gov/blotter/2019/02/01/january-2019-police-blotter/,Dispatch Logs,200,January 2019 Police Blotter | Vernonia Police Department,January 2019,"[""Vernonia Police Blotter for January 2019""]",[],[],"[""Latest Blotter""]","[""REPORTS TAKEN"", ""CITATION/OTHER"", ""OCTOBER 2023 Police Blotter"", ""SEPTEMBER 2023 Police Blotter"", ""AUGUST 2023 Police Blotter"", ""JULY 2023 Police Blotter"", ""JUNE 2023 Police Blotter""]",[] @@ -1424,8 +1424,8 @@ City Hall South Coffeyville Oklahoma -","",[],"[""\n City Hal 1246,https://brecknocktownship.us/police-and-emergency-services/,Contact Info & Agency Meta,200,"Police and Emergency Services | Brecknock Township, PA","","[""Brecknock Township, PA"", ""Police and Emergency Services""]","[""Lancaster County \u2022 1026 Dry Tavern Rd \u2022 Denver, PA 17517""]","[""Main menu"", ""Latest News"", ""Upcoming Events""]",[],[],[] 1247,https://gonzalesca.gov/services/police/police-department-staff,Contact Info & Agency Meta,200,Police Department Staff | City of Gonzales,"Official City of Gonzales, CA website. Find the latest news, events, and information for residents and businesses....","[""The City of Gonzales, California"", ""The City of Gonzales, California""]","[""Top menu"", ""Police Department Staff""]","[""Side Menu for Services"", ""Keith Wise - Chief of Police"", ""JUAN MENDOZA - CAPTAIN"", ""SANTIAGO MELGOZA - Sergeant"", ""HERBERT BOWEN - SERGEANT"", ""CESAR CASTILLO - CORPORAL/ EXPLORER ADVISOR"", ""NATHAN CORDOBA - CORPORAL"", ""ALEX PRUNEDA - OFFICER"", ""MIGUEL PEREZ - SCHOOL RESOURCE OFFICER "", ""ULYSES FIERROS - OFFICER"", ""DAVID RIVERA - OFFICER"", ""TAYLOR RIVAS - OFFICER"", ""JOSHUA MACIAS - OFFICER"", ""ANDREA CASILLAS - RECORDS SUPERVISOR"", ""ESTHER VALDEZ - ADMINISTRATIVE ASSISTANT"", ""IVAN CORREA - Community Service Officer ""]","[""CITY OF GONZALES""]",[],[] 1248,https://bolivar.mo.us/shop-with-a-copr/img_1333-2/,Poor Data Source,200,"IMG_1333 - City of Bolivar, Missouri","","[""IMG_1333""]",[],[],[],[],[] -1249,https://www.rentonwa.gov/city_hall/police/police_services/8_can_t_wait/require_use_of_force_continuum,Policies & Contracts,200," - Require Use Of Force Continuum - City of Renton +1249,https://www.rentonwa.gov/city_hall/police/police_services/8_can_t_wait/require_use_of_force_continuum,Policies & Contracts,200," + Require Use Of Force Continuum - City of Renton ","","[""CITY OF RENTON\r\n\t\t\t\t\tWASHINGTON""]","[""Require Use Of Force Continuum""]",[],"[""POLICY 300.4 USE OF FORCE"", ""SOP 107.3 SPECTRUM OF FORCE"", ""Renton Police Department Comments"", ""Eight Can't Wait""]",[],[] 1250,https://chester-ny.gov/town-departments/police/house-check-request/,Resources,200,"House Check Request – Town of Chester, Orange County New York!","","[""\n \tHouse Check Request ""]",[],[],"[""Town Hall"", ""Police Department"", ""Follow us on YouTube"", ""\u00a9 The Town of Chester NY | All Rights Reserved""]",[],[] 1251,https://www.mass.gov/doc/reference-copy-of-2016-massdep-municipal-solid-waste-recycling-survey/download,Not Criminal Justice Related,200,"","",,,,,, @@ -1438,8 +1438,8 @@ City Hall South Coffeyville Oklahoma -","",[],"[""\n City Hal 1258,https://www.santamonica.gov/press/2022/09/21/santa-monica-police-holding-motorcycle-safety-enforcement-operation-september-23-2022,Media Bulletins,200,"santamonica.gov - Santa Monica Police Holding Motorcycle Safety Enforcement Operation September 23, 2022","","[""Santa Monica Police Holding Motorcycle Safety Enforcement Operation September 23, 2022""]","[""Media Contact"", ""Categories"", ""Departments""]",[],[],[],"[""Your City Hall"", ""Latest"", ""Legal"", ""follow us""]" 1259,https://www.providenceri.gov/hr/wellness/cop-9-elements-of-longevity-flyer-10-23/,Poor Data Source,200,City of Providence CoP 9 Elements of Longevity Flyer 10.23 - City of Providence,"","[""CoP 9 Elements of Longevity Flyer 10.23""]","[""Share this story"", ""Providence City Hall"", ""Follow Us on Social Media:""]","[""City Of Providence"", ""Mayor Brett Smiley"", ""SIGN UP FOR OUR WEEKLY E-NEWS | \nHaga clic aqu\u00ed para espa\u00f1ol"", ""Lists*""]",[],[],[] 1260,https://delcopa.gov/planning/pdf/mapping/media.pdf,Not Criminal Justice Related,200,"404 - Delaware County, Pennsylvania","","[""404 Error""]",[],"[""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] -1261,https://police.crystalmn.gov/emergency_center,Media Bulletins,200," - Emergency Center - City of Crystal-Police +1261,https://police.crystalmn.gov/emergency_center,Media Bulletins,200," + Emergency Center - City of Crystal-Police ","","[""Emergency Center""]",[],"[""Sign up for a city newsletter or notification."", ""Police Department"", ""Lobby Hours:""]","[""Monday - Friday""]",[],[] 1262,https://www.dps.nm.gov/blog/2021/07/07/state-police-officer-attacked-by-felon-with-a-loaded-gun-in-pecos-nm/,Media Bulletins,200,"State Police Officer Attacked by Felon with a Loaded Gun in Pecos, NM - NM Department of Public Safety","","[""State Police Officer Attacked by Felon with a Loaded Gun in Pecos, NM""]",[],"[""Location"", ""Sitemap"", ""Quick Links"", ""Social Media Links""]",[],[],[] 1263,https://alpha.austin.gov/es/police-oversight/notice-of-complaint-related-to-2022-0473/,Complaints & Misconduct,200,Maintenance Notice,"",[],[],[],[],[],[] @@ -1473,8 +1473,8 @@ City Hall South Coffeyville Oklahoma -","",[],"[""\n City Hal 1291,https://www.southamptontownnypolice.gov/faq.aspx?qid=373,Not Criminal Justice Related,200,FAQs • Should I have multiple phone numbers on file with my ,"",[],"[""\n\u25bc\r\nComptroller - Alarm Billing\t\t""]","[""Loading"", ""Site Tools"", ""Categories"", ""Live Edit"", ""Contact Us"", ""Site Links""]",[],[],[] 1292,https://pittsburghpa.gov/files/police/orders/ch1/16-01-standards-of-conduct.pdf,Poor Data Source,404,"","",,,,,, 1293,http://police.portlandmaine.gov/1167/ocean-gateway,Not Criminal Justice Related,200,"Ocean Gateway | Portland, ME - Official Website",Ocean Gateway,"[""Ocean Gateway""]",[],[],[],[],[] -1294,https://www.ci.san-bernardino.ca.us/news/archived_news/downtown_specific_plan_scoping_meeting,Not Criminal Justice Related,200," - Downtown Specific Plan Scoping Meeting - City of San Bernardino +1294,https://www.ci.san-bernardino.ca.us/news/archived_news/downtown_specific_plan_scoping_meeting,Not Criminal Justice Related,200," + Downtown Specific Plan Scoping Meeting - City of San Bernardino ","","[""City of San Bernardino California""]","[""Downtown Specific Plan Scoping Meeting""]",[],[],[],[] 1295,http://www.longbeach.gov/police/press-releases/traffic-fatality---burnett-street-and-pacific-avenue/,Media Bulletins,200,TRAFFIC FATALITY - BURNETT STREET AND PACIFIC AVENUE,"","[""Long BeachPolice Department""]",[],[],[],[],[] 1296,https://norfolkne.gov/assets/site/documentcentral/police/2022-daily-reports/blotter/011322blotter.pdf,Media Bulletins,404,"","",,,,,, @@ -1523,10 +1523,10 @@ City Hall South Coffeyville Oklahoma -","",[],"[""\n City Hal 1339,https://spdblotter.seattle.gov/2021/01/27/police-arrest-u-district-rape-suspect/,Media Bulletins,200,Police Arrest U-District Rape Suspect - SPD Blotter,"","[""Police Arrest U-District Rape Suspect""]","[""Find Posts By Topic"", ""You might also like..."", ""Police"", ""City-Wide Information"", ""Top Requests"", ""Policies""]","[""Animals"", ""Assistance"", ""For Businesses"", ""Civil Rights"", ""Elected Officials"", ""Explore the City"", ""Get Involved"", ""Immigrants and Refugees"", ""Issues and Initiatives"", ""Learning and Education"", ""Public Safety"", ""Transportation and Development"", ""Technology"", ""Utilities""]","[""Browse the Archive""]",[],[] 1340,https://beaumonttexas.gov/beaumont-police-investigating-overnight-shooting-at-2550-ih-10-east/,Poor Data Source,404,"","",,,,,, 1341,https://ose.louisiana.gov/event/police-communications-officer-ii/,Poor Data Source,200,Police Communications Officer II | Louisiana Office of State Examiner,"","["""", ""Police Communications Officer II""]",[],"[""Promotional Level""]",[],[],"[""Recent Posts"", ""Archives"", ""Categories"", ""Meta""]" -1342,http://www.longbeach.gov/police/how-do-i/prevent-crime/general-guidelines-for-retail-stores/,Resources,200,General Guidelines for Retail Stores,"
GENERAL GUIDELINES FOR RETAIL STORES - - Implementing these safety recommendations will make your business ""crime unfriendly."" Remember, most crimes are crimes of opportunity...don't allow your business to be an easy target! - +1342,http://www.longbeach.gov/police/how-do-i/prevent-crime/general-guidelines-for-retail-stores/,Resources,200,General Guidelines for Retail Stores,"
GENERAL GUIDELINES FOR RETAIL STORES + + Implementing these safety recommendations will make your business ""crime unfriendly."" Remember, most crimes are crimes of opportunity...don't allow your business to be an easy target! + Lighting is an important factor to consider when crime-proofing your business
","[""Police Department""]","[""GENERAL GUIDELINES FOR RETAIL STORES""]","[""Mayor"", ""City Council"", ""Rex Richardson"", ""Mary Zendejas"", ""Cindy Allen"", ""Kristina Duggan"", ""Daryl Supernaw"", ""Megan Kerr"", ""Suely Saro"", ""Roberto Uranga"", ""Al Austin"", ""Dr. Joni Ricks-Oddie"", ""Dawn McIntosh"", ""Laura L. Doud"", ""Doug Haubert"", ""Tom Modica"", ""Monique DeLaGarza"", ""City-Wide Elected Officials"", ""Appointed Officials"", ""Online Payments"", ""Online Services"", ""In-Person Services"", ""Opening a Business"", ""Doing Business With The City"", ""Resources"", ""Most Popular"", ""Online Resources"", ""Attractions"", ""Business Associations"", ""Travel Resources"", ""Departments"", ""Job Opportunities"", ""Information"", ""LBPD"", ""Employment"", ""Bureaus"", ""News & Events"", ""Crime Info"", ""How Do I"", ""How Do I"", ""Contact Us"", ""How To Prevent Crime"", ""Do."", ""Discover."", ""Connect."", ""Ask.""]","["""", ""1st District"", ""2nd District"", ""3rd District"", ""4th District"", ""5th District"", ""6th District"", ""7th District"", ""8th District"", ""9th District"", ""City Attorney"", ""City Auditor"", ""City Prosecutor"", ""City Manager"", ""City Clerk""]","[""File a Report Online"", ""Submit a Tip"", ""Submit a Commendation"", ""File a Complaint"", ""Ride Along Program"", ""\u00a0"", ""\u00a0\u00a0"", ""\u00a0"", ""Crime Lab Survey"", ""\u00a0""]",[] 1343,https://alpha.austin.gov/es/police-oversight/2020-06-17-7/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] 1344,http://www.lafayettepolice.us/faq.aspx?qid=68,Not Criminal Justice Related,200,"FAQs • How do I dispose of large items like carpet, sinks, s","",[],"[""\n\u25bc\r\nSanitation Department\t\t""]","[""Loading"", ""Categories"", ""Live Edit"", ""Contact Us"", ""FAQs"", ""Site Links""]",[],[],[] @@ -1584,12 +1584,12 @@ City Hall South Coffeyville Oklahoma -","",[],"[""\n City Hal 1396,http://www.lafayettepolice.us/faq.aspx?qid=208,Not Criminal Justice Related,200,FAQs • Are “floaties” or flotation devices allowed? ,"",[],"[""\n\u25bc\r\nParks and Recreation - Aquatics\t\t""]","[""Loading"", ""Categories"", ""Live Edit"", ""Contact Us"", ""FAQs"", ""Site Links""]",[],[],[] 1397,https://alpha.austin.gov/es/police-oversight/temporary-suspension-of-officer-jeremy-bohannon/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] 1398,https://alpha.austin.gov/police-oversight/temporary-suspension-of-officer-ryan-seweryn-2/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] -1399,https://www.ci.san-bernardino.ca.us/city_hall/police_department/crime_statistics/about_ucr_statistics/arrest_statistics/arrest_statistics-2009,Crime Statistics,200," - Arrest Statistics - 2009 - City of San Bernardino +1399,https://www.ci.san-bernardino.ca.us/city_hall/police_department/crime_statistics/about_ucr_statistics/arrest_statistics/arrest_statistics-2009,Crime Statistics,200," + Arrest Statistics - 2009 - City of San Bernardino ","","[""City of San Bernardino California""]","[""Arrest Statistics - 2009""]",[],[],[],[] 1400,https://www.mass.gov/locations/state-police-millbury-barracks/locations,Geographic,200,Locations | Mass.gov,"","[""\n Other locations related to State Police Millbury Barracks\n ""]","[""Showing 1 - 7 of 7 results for:"", ""\n\nState Police Athol Barracks\u00a0\n\n"", ""\n\nState Police Belchertown Barracks\u00a0\n\n"", ""\n\nState Police Brookfield Barracks\u00a0\n\n"", ""\n\nState Police Devens Barracks\u00a0\n\n"", ""\n\nState Police Holden Barracks\u00a0\n\n"", ""\n\nState Police Leominster Barracks\u00a0\n\n"", ""\n\nState Police Sturbridge Barracks\u00a0\n\n""]",[],[],[],[] 1401,https://www.coppelltx.gov/faq.aspx?qid=309,Not Criminal Justice Related,200,FAQs • Why did the City choose to participate in the program,"",[],"[""\n\u25bc\r\nTexas Power Switch\t\t""]","[""Loading"", ""Categories"", ""Live Edit""]",[],[],[] -1402,https://southcoffeyvilleok.gov/police-department/screen-shot-2016-09-27-at-4-41-47-pm/,Poor Data Source,200," +1402,https://southcoffeyvilleok.gov/police-department/screen-shot-2016-09-27-at-4-41-47-pm/,Poor Data Source,200," screen-shot-2016-09-27-at-4-41-47-pm -","",[],"[""\n screen-shot-2016-09-27-at-4-41-47-pm ""]","[""Contact Town of South Coffeyville"", """"]",[],[],[] 1403,http://www.longbeach.gov/police/press-releases/halloween-safety-tips/,Media Bulletins,200,HALLOWEEN SAFETY TIPS,"","[""Long BeachPolice Department""]",[],[],[],[],[] 1404,http://www.ryepolice.us/logs/police-logs-for-21716-22316,Calls for Service,200,Rye Police Department Police Logs for 2/17/16-2/23/16 - Rye Police Department,"","[""Police Logs for 2/17/16-2/23/16""]","[""Police Logs for 2/17/16-2/23/16""]","[""Navigation"", ""Follow Us"", ""Facebook"", ""Email Updates"", ""Storm Preparedness Guide""]",[],[],[] @@ -1603,8 +1603,8 @@ screen-shot-2016-09-27-at-4-41-47-pm -","",[],"[""\n screen-s 1412,https://oceansprings-ms.gov/form-pdf/ospd-police-reserve-application/,Poor Data Source,404,"","",,,,,, 1413,https://www.alamoheightstx.gov/public-safety/police/services/solicitor-information/,Resources,200,Solicitor Information - City of Alamo Heights,"","[""Solicitor Information""]","[""Definitions:""]",[],[],[],[] 1414,https://elkhartlakewi.gov/departments/police/meet-us/,Personnel Records,200,Meet Us - Village of Elkhart Lake,"","[""\nVILLAGE OF ELKHART LAKE POLICE DEPARTMENT STAFF\n""]","[""CONTACT US"", ""MORE ABOUT ELPD"", ""VILLAGE DEPARTMENTS""]","[""\nK-9 Copper\n"", ""\nMichael Meeusen, Chief of Police\n"", ""\nJeremiah Pritzl, Sergeant\n"", ""\nTravis Auch, School Resource Officer\n"", ""\nBrenda Garcia, Police Officer\n"", ""\nK-9 Copper\n"", ""\nBrad Abel, Police Officer\n"", ""\nRobert Toeller, Police Officer\n"", ""\nDylan Ninmer, Police Officer\n"", ""\nThomas Kultgen, Police Officer\n"", ""\nEvan Gilbert, Police Officer\n"", ""\nKelly Sippel, Police Officer\n"", ""\nPhil Schaefer, Police Officer\n"", ""\nTyler Olig, Police Officer\n"", ""\nAmy Gross, Police Officer\n"", ""\nMarcus Anderson, Police Officer\n"", ""\nNoah Bramstedt, Police Officer\n"", ""\nVILLAGE DEPARTMENTS\n"", ""\nVILLAGE SERVICES\n"", ""\nKEY VILLAGE CONTACTS\n""]",[],[],[] -1415,https://www.sanramon.ca.gov/our_city/departments_and_divisions/police/police_news/weekly_arrest_log,Arrest Records,200," - Weekly Arrest Log - City of San Ramon +1415,https://www.sanramon.ca.gov/our_city/departments_and_divisions/police/police_news/weekly_arrest_log,Arrest Records,200," + Weekly Arrest Log - City of San Ramon ","","[""Weekly Arrest Log""]","[""Contact Us"", ""Useful Links""]",[],[],[],[] 1416,https://www.dps.nm.gov/blog/2022/10/22/silver-alert-alamogordo-police-department-ralph-magruder/,Resources,200,SILVER ALERT – Otero County Sheriff's Office– Ralph Magruder - NM Department of Public Safety,"","[""SILVER ALERT \u2013 Otero County Sheriff\u2019s Office\u2013 Ralph Magruder""]",[],"[""Location"", ""Sitemap"", ""Quick Links"", ""Social Media Links""]",[],[],[] 1417,https://www.ashevillenc.gov/news/asheville-police-department-to-add-patrol-district-realign-existing-districts-in-2020/,Media Bulletins,200,"Asheville Police Department to add patrol district, realign existing districts in 2020 - The City of Asheville","","[""Asheville Police Department to add patrol district, realign existing districts in 2020""]",[],"[""What are patrol districts?"", ""Why does law enforcement utilize patrol districts and beats?"", ""What will happen to the downtown unit?""]",[],[],[] @@ -1628,8 +1628,8 @@ screen-shot-2016-09-27-at-4-41-47-pm -","",[],"[""\n screen-s 1435,https://www.mass.gov/directive/directive-93-7-exempt-sales-of-copying-machines-and-related-items,Not Criminal Justice Related,200,Directive 93-7: Exempt Sales of Copying Machines and Related Items | Mass.gov,"Sales and Use Tax ISSUE: When are retail sales of copying machines, related supplies, photocopies and service contracts exempt from sales tax? DIRECTIVE: Copying Machines. Retail sales of copying machines are subject to sales tax unless the copier is used directly and exclusively in an industrial plant in the actual manufacture of tangible personal property to be sold. See G.L. c. 64H, § 6(s). Supplies. The retail sale of copying machine supplies such as paper, toner and ink are exempt if the photocopies produced from these ingredient or component materials will be sold. See G.L. c. 64H, § 6(r). Retail sales of supplies that do not become an ingredient or component part of tangible personal property to be sold are exempt only if they are consumed and used directly and exclusively in an industrial plant in the actual manufacture of tangible personal property to be sold. See G.L. c. 64H, § 6(s). Photocopies. Retail sales of photocopies are subject to sales tax. Service Contracts. Generally, when the sales price of a service contract is separately stated from the sales price of the equipment and the purchase of the contract is optional, the purchase of the service contract is not subject to sales tax. The cost of a mandatory service contract which the buyer must purchase as part of the sale of the copying machine is included in the taxable sale price of the machine. See 830 CMR 64H.1.1(5)(g), for information regarding taxation of service contracts and replacement parts. Sales to Exempt Purchasers. Retail sales of tangible personal property, including copying machines, supplies and photocopies to government agencies or under certain circumstances to tax exempt organizations qualified under § 501(c)(3) of the Internal Revenue Code, are exempt from tax under G.L. c. 64H, § 6(d) and § 6(e) respectively. DISCUSSION OF LAW: General Laws Chapter 64H, § 2, imposes a tax upon retail sales in the commonwealth by any vendor of tangible personal property or telecommunications services unless specifically exempt. The definition of ""sales"" includes leases and rentals. G.L. c. 64H, § 1. However, the sale of any item of tangible personal property may be exempt if it is sold for an exempt use or if it is sold to an exempt purchaser. 1. Exempt Use a. Copying Machines General Laws Chapter 64H, § 6(s), exempts from taxation sales of machinery, and its replacement parts, used directly and exclusively in an industrial plant in the actual manufacture of tangible personal property to be sold. Machinery is ""used directly and exclusively"" in the manufacture of tangible personal property to be sold only where it is used solely during a manufacturing operation to cause a direct and immediate physical change upon such property. Id. An industrial plant is a factory at a fixed location primarily engaged in the manufacture, conversion or processing of tangible personal property to be sold in the regular course of business. b. Supplies General Laws Chapter 64H, § 6(r), exempts from taxation sales of materials, tools and fuel, or their substitutes, which become an ingredient or component part of tangible personal property to be sold. Materials, tools and fuel which do not become an ingredient or component part of tangible personal property to be sold may be exempt if they are consumed and used directly and exclusively in an industrial plant in the actual manufacture of tangible personal property to be sold. Id. A material, tool or fuel is ""consumed and used directly and exclusively in an industrial plant in the actual manufacture of tangible personal property to be sold"" only if its normal useful life is less than one year, or if its cost is allowable as an ordinary and necessary business expense for federal income tax purposes. Id. 2. Exempt Purchaser General Laws Chapter 64H, § 6(d), exempts from sales tax sales to the United States, the commonwealth, or their respective agencies. Sales to organizations exempt from taxation pursuant to section 501(c)(3) of the Internal Revenue Code (""tax exempt""), are exempt from sales tax provided that the tangible personal property sold is used in the conduct of the organization's exempt enterprise, and the organization obtains a certificate from the Commissioner of Revenue stating it is entitled to the exemption, and the vendor keeps a proper record of the sale. See G.L. c. 64H, § 6(e). EXAMPLES: 1. A company operating a photoprocessing business at a fixed location purchases a copying machine. The company's primary activity is the manufacturing of photographic images to be sold in the regular course of the company's business. The copying machine is used solely to cause a direct and immediate physical change upon the property to be sold during photoprocessing operations. The company also purchases supplies for the copying machine. The company's premises qualifies as a ""factory"" since the primary activity there consists of using mechanical power in photoprocessing manufacturing operations. See Letter Rulings 85-40 and 89-7, and Directive 88-9. The company's premises qualifies as an ""industrial plant"" because it consists of a factory at a fixed location used primarily for the manufacture of tangible personal property to be sold in the regular course of the company's business. The sale of the copying machine is exempt from tax since the machine is used directly and exclusively in an industrial plant in the actual manufacture of tangible personal property to be sold. The sales of supplies used in this machine are exempt if the supplies become an ingredient or component part of tangible personal property to be sold. Supplies that do not become an ingredient or component part of the tangible personal property sold are exempt only if they are consumed and used directly and exclusively in the industrial plant in the actual manufacture of tangible personal property to be sold. Sales of the photocopies are generally taxable. 2. Copying machines are leased for use by various ""tax exempt"" organizations that qualify for exemption under G.L. c. 64H, § 6(e) as discussed above and government entities, such as public universities and public libraries. These organizations and entities also purchase supplies for the copying machines, and make the copying machines availables to the general public. Leases of the copying machines and sales of supplies to qualified ""tax exempt"" organizations are exempt from taxation. Leases of the copying machines and sales of supplies to the federal government and its agencies, and to the commonwealth and its agencies, are exempt from taxation. Sales of tangible personal property by such ""tax exempt"" organizations and government agencies, however, are generally taxable. Thus, sales of photocopies by these institutions are generally subject to tax. See G.L. c. 64H, § 1, (definition of ""retailer""); see also DOR Directive 91-1 and Letter Ruling 92-3. CONCLUSION: Depending on the facts of each transaction, retail sales of copying machines, although generally taxable, may be exempt from taxation pursuant to G.L. c. 64H, § 6(d), § 6(e) or § 6(s). Sales of copying machine supplies, also generally taxable, may be exempt from taxation pursuant to G.L. c. 64H, § 6(d), § 6(e), § 6(r), or § 6(s). Generally, sales of photocopies are subject to tax. Exempt Usage. When claiming an exemption based on use pursuant to G.L. c. 64H, § 6(r) or § 6(s), a properly completed Form ST-12 certifying that the property is being purchased for an exempt use must be presented by the purchaser to the vendor. See 830 CMR 64H.8.1(5). Exempt Purchaser. When claiming an exemption as an exempt purchaser pursuant to G.L. c. 64H, § 6(d) or § 6(e), a properly completed Form ST-5 with an ST-2 copy (required for tax exempt organizations only) certifying that the purchaser is exempt must be presented by the purchaser to the vendor. See 830 CMR 64H.8.1(5). If a government entity claims the exemption but does not offer an Exempt Purchaser Certificate the vendor, to sell tax free, must obtain adequate documentation, generally, a copy of the government check, verifying that the purchaser is a government entity. /s/Mitchell Adams Mitchell Adams Commissioner of Revenue MA:HMP:kt December 21, 1993 DOR-D 93-7","[""\nDirective\u00a0\n Directive 93-7: Exempt Sales of Copying Machines and Related Items\n ""]","[""Table of Contents"", ""Help Us Improve Mass.gov with your feedback""]",[],[],[],[] 1436,http://www.longbeach.gov/police/press-releases/defendant-sentenced-to-45-years-for-charges-relating-to-human-trafficking/,Media Bulletins,200,DEFENDANT SENTENCED TO 45 YEARS FOR CHARGES RELATING TO HUMAN TRAFFICKING,"","[""Long BeachPolice Department""]",[],[],[],[],[] 1437,https://delcopa.gov/publicrelations/releases/2018/2019doglicenses.html,Resources,200,"2019 Dog Licenses now available - Delaware County, Pennsylvania","","[""2019 Dog Licenses now available""]",[],"[""Public Relations Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] -1438,https://www.knoxvilletn.gov/government/mayors_office/c_o_v_i_d-19___coronavirus_/stress_and_coping/knox_well/kid___parent_resources,Resources,200," - Kid & Parent Resources - City of Knoxville +1438,https://www.knoxvilletn.gov/government/mayors_office/c_o_v_i_d-19___coronavirus_/stress_and_coping/knox_well/kid___parent_resources,Resources,200," + Kid & Parent Resources - City of Knoxville ",nothing*,"[""Kid & Parent Resources""]",[],[],[],[],[] 1439,https://spdblotter.seattle.gov/2016/08/17/police-search-for-leads-on-teen-girls-suspected-in-south-seattle-bleach-attacks/,Media Bulletins,200,Police Search for Leads on Teen Girls Suspected In South Seattle Bleach Attacks - SPD Blotter,"","[""Police Search for Leads on Teen Girls Suspected In South Seattle Bleach Attacks""]","[""Find Posts By Topic"", ""You might also like..."", ""Police"", ""City-Wide Information"", ""Top Requests"", ""Policies""]","[""Animals"", ""Assistance"", ""For Businesses"", ""Civil Rights"", ""Elected Officials"", ""Explore the City"", ""Get Involved"", ""Immigrants and Refugees"", ""Issues and Initiatives"", ""Learning and Education"", ""Public Safety"", ""Transportation and Development"", ""Technology"", ""Utilities""]","[""Browse the Archive""]",[],[] 1440,https://www.chesterfield.in.gov/departments/police/,Resources,200,Police Department – Town of Chesterfield,"","[""Menu"", ""Town of Chesterfield"", ""Police Department"", ""I Want to\u2026"", ""Recent News"", ""Upcoming Events""]","[""A Progressive Community Est. 1858"", """"]","[""Police and Accident Reports""]",[],[],[] @@ -1651,17 +1651,17 @@ screen-shot-2016-09-27-at-4-41-47-pm -","",[],"[""\n screen-s 1456,https://www.mass.gov/doc/hamm-brendan-v-boston-police-department-111308/download,Court Cases,200,"","",[],[],[],[],[],[] 1457,https://www.coppelltx.gov/666/sustainability-data,Poor Data Source,404,"","",,,,,, 1458,https://edenny.gov/town-of-eden-police-reform-plan/,Contact Info & Agency Meta,200,"Town of Eden Police Reform Plan | Town of Eden, New York","","[""Town of Eden Police Reform Plan""]",[],[],"[""Contact Information""]",[],[] -1459,https://police.crystalmn.gov/r_e_s_i_d_e_n_t/community_development/permits_and_inspections,Resources,200," - Permits and Inspections - City of Crystal +1459,https://police.crystalmn.gov/r_e_s_i_d_e_n_t/community_development/permits_and_inspections,Resources,200," + Permits and Inspections - City of Crystal ",Links and information about permits and inspections in the City of Crystal.,"[""Permits and Inspections""]",[],"[""Sign up for a city newsletter or notification."", ""City Hall"", ""Regular Hours:""]","[""Monday - Friday""]",[],[] 1460,https://www.mass.gov/news/police-arrest-juvenile-for-homicide-in-adams-death,Media Bulletins,200,Police Arrest Juvenile For Homicide In Adams Death | Mass.gov,"Authorities arrested a juvenile for homicide in the death of Benjamin Martinez, 34, of Springfield.","[""\nPress Release\u00a0\n Police Arrest Juvenile For Homicide In Adams Death\n ""]","[""Media Contact for Police Arrest Juvenile For Homicide In Adams Death"", ""Media Contact\n for Police Arrest Juvenile For Homicide In Adams Death"", ""\n\nBerkshire District Attorney's Office\u00a0\n\n"", ""Media Contact for Police Arrest Juvenile For Homicide In Adams Death"", ""Help Us Improve Mass.gov with your feedback""]","[""\n Andrew McKeever, Director of Communications\n "", ""\n Andrew McKeever, Director of Communications\n "", ""\n Andrew McKeever, Director of Communications\n ""]","[""\n\nPhone\n"", ""\n\nOnline\n"", ""\n\nPhone\n"", ""\n\nOnline\n"", ""\n\nPhone\n"", ""\n\nOnline\n""]",[],[] -1461,https://www.roseville.ca.us/government/departments/police_department/social_services/shop_with_a_cop,Misc Police Activity,200," - Shop with a cop - City of Roseville +1461,https://www.roseville.ca.us/government/departments/police_department/social_services/shop_with_a_cop,Misc Police Activity,200," + Shop with a cop - City of Roseville ","","[""City of Roseville""]","[""Shop with a cop""]","[""Roseville Police Department ""]",[],[],[] 1462,https://alpha.austin.gov/en/police-oversight/2020-06-12-3/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] 1463,https://www.mass.gov/regulations/515-cmr-500-standards-of-skill-for-special-state-police-officers,Training & Hiring Info,200,515 CMR 5.00: Standards of skill for special state police officers | Mass.gov,"515 CMR 5.00 ensures proper standards of skill for special state police officers pursuant to the terms and provisions of M.G.L. c. 22C, § 69. Download a PDF copy of the regulation below.","[""\nRegulation\u00a0\n 515 CMR 5.00: Standards of skill for special state police officers\n ""]","[""Table of Contents\n for the law library, 515 CMR"", ""Contact for 515 CMR 5.00: Standards of skill for special state police officers"", ""Table of Contents"", ""Downloads\n for 515 CMR 5.00: Standards of skill for special state police officers"", ""Contact\n for 515 CMR 5.00: Standards of skill for special state police officers"", ""Contact for 515 CMR 5.00: Standards of skill for special state police officers"", ""Help Us Improve Mass.gov with your feedback""]","[""\n Trial Court Law Libraries\n "", ""\n Trial Court Law Libraries\n "", ""\n Trial Court Law Libraries\n ""]","[""\n\nOnline\n"", ""\n\nOnline\n"", ""\n\nOnline\n""]",[],[] -1464,https://www.ci.rohnert-park.ca.us/city_hall/departments/public_safety/police_services/permits___licensing/solicitors_peddlers_permit,Resources,200," - Solicitors/Peddlers Permit - City of Rohnert Park +1464,https://www.ci.rohnert-park.ca.us/city_hall/departments/public_safety/police_services/permits___licensing/solicitors_peddlers_permit,Resources,200," + Solicitors/Peddlers Permit - City of Rohnert Park ","","[""City of Rohnert Park""]","[""Rohnert Park""]","[""Solicitors/Peddlers Permit""]","[""\nSolicitors/Peddlers Permit""]",[],[] 1465,https://council.seattle.gov/2011/07/14/seattle-city-council-seeking-candidates-for-police-accountability-review-board/,Media Bulletins,200,Seattle City Council seeking candidates for police accountability review board - Seattle City Council Blog,"","[""Seattle City Council seeking candidates for police accountability review board""]",[],"[""HELPFUL LINKS"", ""Make your voice heard"", ""Councilmembers""]",[],[],[] 1466,https://directory.arkansas.gov/agency/arkansas-fire-and-police-pension-review-board/questions/,Poor Data Source,200,State Directory – Arkansas.gov,"","["" Flag Status""]","[""\n\n\t\t\t\t\t\tDiscover More\t\t\t\t\t\n"", ""\n\n\t\t\t\t\t\tDiscover More\t\t\t\t\t\n"", ""\n\n\t\t\t\t\t\tDiscover More\t\t\t\t\t\n"", ""\n\n\t\t\t\t\t\tDiscover More\t\t\t\t\t\n"", ""What can we help you find?"", ""Search the Directories"", ""Flag Status"", """"]","[""Government Resources"", ""Business Resources"", ""Residents Resources"", ""Visiting Resources"", ""State Directory"", ""Agencies"", ""Services"", ""Employees"", ""Your Arkansas.gov"", ""Top Online Services"", ""helpful information""]","[""Was the information on this page helpful?""]",[],[] @@ -1682,8 +1682,8 @@ screen-shot-2016-09-27-at-4-41-47-pm -","",[],"[""\n screen-s 1481,https://www.mass.gov/doc/fitzgibbon-daniel-v-boston-police-department-related-superior-court-decision-32113/download,Court Cases,200,"","",[],[],[],[],[],[] 1482,https://delcopa.gov/pdf/2021budget.pdf,Policies & Contracts,200,"","",[],[],[],[],[],[] 1483,http://www.longbeach.gov/police/about-the-lbpd/bureaus/investigations-bureau/detective-division/auto-theft-detail-and-t.r.a.p/,Resources,200,Auto Theft Detail and T.R.A.P.,"","[""Police Department""]","[""Auto Theft Detail And T.R.A.P""]","[""Mayor"", ""City Council"", ""Rex Richardson"", ""Mary Zendejas"", ""Cindy Allen"", ""Kristina Duggan"", ""Daryl Supernaw"", ""Megan Kerr"", ""Suely Saro"", ""Roberto Uranga"", ""Al Austin"", ""Dr. Joni Ricks-Oddie"", ""Dawn McIntosh"", ""Laura L. Doud"", ""Doug Haubert"", ""Tom Modica"", ""Monique DeLaGarza"", ""City-Wide Elected Officials"", ""Appointed Officials"", ""Online Payments"", ""Online Services"", ""In-Person Services"", ""Opening a Business"", ""Doing Business With The City"", ""Resources"", ""Most Popular"", ""Online Resources"", ""Attractions"", ""Business Associations"", ""Travel Resources"", ""Departments"", ""Job Opportunities"", ""Information"", ""LBPD"", ""Employment"", ""Bureaus"", ""News & Events"", ""Crime Info"", ""How Do I"", ""How Do I"", ""Contact Us"", ""\u00a0TASK FORCE FOR REGIONAL AUTO THEFT PREVENTION (T.R.A.P.)"", ""Do."", ""Discover."", ""Connect."", ""Ask.""]","["""", ""1st District"", ""2nd District"", ""3rd District"", ""4th District"", ""5th District"", ""6th District"", ""7th District"", ""8th District"", ""9th District"", ""City Attorney"", ""City Auditor"", ""City Prosecutor"", ""City Manager"", ""City Clerk"", ""\u00a0REPORTING AUTO THEFT"", ""\u00a0CHECKING YOUR AUTO THEFT CASE STATUS"", ""\u00a0RENTAL CAR THEFTS AND EMBEZZLEMENT"", ""\u00a0FAILURE TO RETURN A BORROWED CAR"", ""\u00a0LAWS PERTAINING TO AUTO THEFT\u00a0""]","[""Long Beach Police non-emergency (562) 435-6711"", ""Long Beach Police business desks:"", ""File a Report Online"", ""Submit a Tip"", ""Submit a Commendation"", ""File a Complaint"", ""Ride Along Program"", ""\u00a0"", ""\u00a0"", ""\u00a0"", ""\u00a0"", ""Crime Lab Survey"", ""\u00a0""]",[] -1484,https://www.ci.san-ramon.ca.us/our_city/departments_and_divisions/police/srpd-downloads,Poor Data Source,200," - SRPD Downloads - City of San Ramon +1484,https://www.ci.san-ramon.ca.us/our_city/departments_and_divisions/police/srpd-downloads,Poor Data Source,200," + SRPD Downloads - City of San Ramon ","","[""SRPD Downloads""]","[""Contact Us"", ""Useful Links""]",[],[],[],[] 1485,https://www.antioch.il.gov/event/police-fire-commission-special-meeting-4/,Poor Data Source,200,"Police & Fire Commission Special Meeting - Antioch, IL","","[""Police & Fire Commission Special Meeting""]",[],[],[],[],[] 1486,http://www.longbeach.gov/police/press-releases/murder-investigation---2300-block-of-elm-avenue/,Media Bulletins,200,MURDER INVESTIGATION - 2300 BLOCK OF ELM AVENUE,"","[""Long BeachPolice Department""]",[],[],[],[],[] @@ -1706,10 +1706,10 @@ screen-shot-2016-09-27-at-4-41-47-pm -","",[],"[""\n screen-s 1503,http://www.longbeach.gov/police/press-releases/dui-enforcement-operations-planned-this-weekend-3-/,Media Bulletins,200,DUI ENFORCEMENT OPERATIONS PLANNED THIS WEEKEND(3),"","[""Long BeachPolice Department""]",[],[],[],[],[] 1504,https://www.mass.gov/event/2022-lowell-police-open-house-2022-01-10t170000-0500-2022-01-10t190000-0500,Poor Data Source,200,2022 Lowell Police Open House | Mass.gov,"","[""\n 2022 Lowell Police Open House\n ""]","[""Overview\n of 2022 Lowell Police Open House"", ""Participating Organizations\n "", ""Help Us Improve Mass.gov with your feedback""]",[],[],[],[] 1505,https://www.lynchburgvapolice.gov/wp-content/uploads/2022/10/suspect-express-lane-76-gas-10.27.2022-e1666893965762.png,Poor Data Source,404,"","",,,,,, -1506,https://southcoffeyvilleok.gov/police-department/contact/,Contact Info & Agency Meta,200," +1506,https://southcoffeyvilleok.gov/police-department/contact/,Contact Info & Agency Meta,200," Contact Police Department -","",[],"[""\n Contact Police Department "", ""South Coffeyville Police Department""]","[""Contact Town of South Coffeyville"", """"]",[],"[""\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tCall Us\t\t\t\t\t\t\t\t\t\t\t\t\t"", ""\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tEmail us at\t\t\t\t\t\t\t\t\t\t\t\t\t"", ""\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tVisit the Police Station\t\t\t\t\t\t\t\t\t\t\t\t\t"", ""\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tJoin the SCPD\t\t\t\t\t\t\t\t\t\t\t\t\t"", ""\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tDonate to SCPD\t\t\t\t\t\t\t\t\t\t\t\t\t"", ""\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tSend Us Mail\t\t\t\t\t\t\t\t\t\t\t\t\t""]",[] -1507,https://www.pleasantprairiewi.gov/departments/police/retail_theft_reporting,Resources,200," - Retail Theft Reporting - Village of Pleasant Prairie +1507,https://www.pleasantprairiewi.gov/departments/police/retail_theft_reporting,Resources,200," + Retail Theft Reporting - Village of Pleasant Prairie ","",[],"[""Retail Theft Reporting""]","[""Follow Us on Social Media""]","[""PLEASANT PRAIRIE POLICE DEPARTMENT RETAIL THEFT REPORTING PROCEDURE"", ""INSTRUCTIONS FOR STORE EMPLOYEES""]","[""Before reporting a Retail Theft, please follow below for proper reporting procedures:"", ""\u2022\u00a0\u00a0Contact the Pleasant Prairie Police Department immediately if:"", ""\u2022 Complete a Retail Theft Packet if any of the below situations apply:"", ""\u2022 Do not call if you do not wish to prosecute or can\u2019t articulate what was taken."", """", ""\n\nPlease call or deliver the completed packet within 7 days of the theft:""]",[] 1508,https://norfolkne.gov/assets/site/documentcentral/police/2022-daily-reports/summary/042622summary.pdf,Poor Data Source,404,"","",,,,,, 1509,https://delcopa.gov/council/2020minutes/05202020minutes.pdf,Poor Data Source,200,"","",[],[],[],[],[],[] @@ -1739,8 +1739,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 1533,https://www.sandiego.gov/department-document/police-identify-emerald-hills-homicide-victim,Media Bulletins,200,Police Identify Emerald Hills Homicide Victim | City of San Diego Official Website,"","[""City of San Diego Official Website""]","[""Main navigation"", ""Leisure"", ""Resident Resources"", ""Doing Business"", ""Library"", ""Public Safety"", ""City Hall"", ""Accessibility Tools"", ""Police Identify Emerald Hills Homicide Victim"", ""Footer""]",[],"[""Parks"", ""Outdoors"", ""Neighborhoods"", ""Recreational Activities"", ""Street Maintenance"", ""Plan"", ""Fix"", ""Build"", ""Programs & Events"", ""Services"", ""Kids & Teens"", ""eCollection"", ""Police"", ""Fire-Rescue"", ""Lifeguards"", ""City Officials"", ""City Government""]",[],[] 1534,https://rocklandmaine.gov/police-department/pedestrian-safety-crosswalk-safety/attachment/crosswalk-enforcement-2/,Poor Data Source,200,"Crosswalk Enforcement | The City of Rockland, Maine","","[""Crosswalk Enforcement""]",[],"[""All Current Alerts & Announcements"", ""Current Weather"", ""City of Rockland""]",[],[],[] 1535,https://alpha.austin.gov/police-oversight/formal-complaint-impartial-attitude-and-courtesy-and-other-policy-violations-6/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] -1536,https://ci.piedmont.ca.us/services___departments/police/services/request_a_report,Resources,200," - Request a Report - City of Piedmont +1536,https://ci.piedmont.ca.us/services___departments/police/services/request_a_report,Resources,200," + Request a Report - City of Piedmont ","","[""\r\n City of\r\n Piedmont""]",[],"[""\n"", ""How to Obtain a Police Report or Records Release""]",[],[],[] 1537,http://www.longbeach.gov/police/press-releases/dui---driver-s-license-checkpoint-planned-this-weekend-2147407661/,Media Bulletins,200,DUI & Driver's License Checkpoint Planned this Weekend,"","[""Long BeachPolice Department""]",[],[],[],[],[] 1538,http://www.longbeach.gov/police/press-releases/sexual-assault-suspect-arrested--additional-victims-sought/,Media Bulletins,200,SEXUAL ASSAULT SUSPECT ARRESTED; ADDITIONAL VICTIMS SOUGHT,"","[""Long BeachPolice Department""]",[],[],[],[],[] @@ -1750,8 +1750,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 1542,https://alpha.austin.gov/es/police-oversight/formal-complaint-2020-1346/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] 1543,http://www.longbeach.gov/police/press-releases/officer-involved-shootings-occur-after-suspect-fires-at-officers--leads-police-on-vehicle-pursuit/,Media Bulletins,200,OFFICER INVOLVED SHOOTINGS OCCUR AFTER SUSPECT FIRES AT OFFICERS; LEADS POLICE ON VEHICLE PURSUIT,"","[""Long BeachPolice Department""]",[],[],[],[],[] 1544,https://www.coppelltx.gov/903/coppell-recreation-and-development-corpo,Not Criminal Justice Related,200,"Coppell Recreation and Development Corporation | Coppell, TX",Learn more about this voter authorized sales tax revenue fund.,"[""\r\n\r\nCoppell Recreation and Development Corporation\t\t""]","[""Question or Comment? ""]","[""Loading"", ""Contact Us""]","[""Strategic Financial Engagement""]",[],[] -1545,https://www.sanramon.ca.gov/our_city/departments_and_divisions/police/victims_rights_information/domestic_violence,Resources,200," - Domestic Violence - City of San Ramon +1545,https://www.sanramon.ca.gov/our_city/departments_and_divisions/police/victims_rights_information/domestic_violence,Resources,200," + Domestic Violence - City of San Ramon ","","[""Domestic Violence""]","[""Contact Us"", ""Contact Us"", ""Useful Links""]","[""RESOURCE INFORMATION FOR VICTIMS OF DOMESTIC VIOLENCE""]",[],[],[] 1546,https://www.mass.gov/doc/cruceta-neysa-v-boston-police-department-4512/download,Court Cases,200,"","",[],[],[],[],[],[] 1547,https://www.montgomeryohio.gov/police-department-2020-annual-report/office-otte-sro/,Poor Data Source,200,"- Montgomery, Ohio","","[""""]","[""Primary menu links"", ""Action toolbar"", ""Welcome"", ""Engage"", ""Help"", ""Mental Health Resource""]",[],[],[],[] @@ -1759,8 +1759,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 1549,https://norfolkne.gov/assets/site/documentcentral/police/2021-daily-reports/arrests/092421arrests.pdf,Arrest Records,200,"","",[],[],[],[],[],[] 1550,https://champaignil.gov/2014/04/23/fire-and-police-memorial-public-dedication-ceremony/,Not Criminal Justice Related,200,Fire and Police Memorial Public Dedication Ceremony - Update - City of Champaign,"","[""Fire and Police Memorial Public Dedication Ceremony \u2013 Update""]","[""News Releases"", ""Department News""]",[],[],[],[] 1551,https://alpha.austin.gov/en/police-oversight/notice-of-complaint-related-to-2022-0976/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] -1552,https://www.pleasantprairiewi.gov/departments/police/news/police_and_fire___rescue_news_archive/2017_news_releases/police_continue_missing_person_investigation,Media Bulletins,200," - Police Continue Missing Person Investigation - Village of Pleasant Prairie +1552,https://www.pleasantprairiewi.gov/departments/police/news/police_and_fire___rescue_news_archive/2017_news_releases/police_continue_missing_person_investigation,Media Bulletins,200," + Police Continue Missing Person Investigation - Village of Pleasant Prairie ","",[],"[""Police Continue Missing Person Investigation""]","[""Follow Us on Social Media""]",[],[],[] 1553,https://alpha.austin.gov/en/police-oversight/notice-of-complaint-related-to-2022-0129/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] 1554,http://www.longbeach.gov/police/press-releases/business-license-operation-conducted/,Media Bulletins,200,BUSINESS LICENSE OPERATION CONDUCTED,"","[""Long BeachPolice Department""]",[],[],[],[],[] @@ -1769,8 +1769,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 1557,http://www.longbeach.gov/police/press-releases/robbery-suspects-arrested/,Media Bulletins,200,ROBBERY SUSPECTS ARRESTED,"","[""Long BeachPolice Department""]",[],[],[],[],[] 1558,https://delcopa.gov/jdboard/pdfs/minutes_2021_09_21.pdf,Misc Police Activity,200,"","",[],[],[],[],[],[] 1559,https://police.kingstontn.gov/team/raymond-gold/,Poor Data Source,200,Raymond Gold – Kingston Police Department,"",[],[],[],[],[],[] -1560,https://www.montebelloca.gov/departments/police/news/all_news_articles/national_night_out_2021,Misc Police Activity,200," - National Night Out 2021 - City of Montebello +1560,https://www.montebelloca.gov/departments/police/news/all_news_articles/national_night_out_2021,Misc Police Activity,200," + National Night Out 2021 - City of Montebello ","","[""City of Montebello""]","[""National Night Out 2021""]",[],[],[],[] 1561,https://www.lynchburgvapolice.gov/wp-content/uploads/2021/05/headlamp-2940-scaled.jpg,Poor Data Source,200,"","",[],[],[],[],[],[] 1562,http://www.ryepolice.us/logs/police-logs-for-4-22-20-4-28-20,Daily Activity Logs,200,Rye Police Department Police Logs for 4/22/20-4/28/20 - Rye Police Department,"","[""Police Logs for 4/22/20-4/28/20""]","[""Police Logs for 4/22/20-4/28/20""]","[""Navigation"", ""Follow Us"", ""Facebook"", ""Email Updates"", ""Storm Preparedness Guide""]",[],[],[] @@ -1815,8 +1815,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 1601,https://delcopa.gov/courts/domesticrelations/forms/directdepositenrollment.pdf,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] 1602,http://www.longbeach.gov/police/press-releases/traffic-fatality3/,Media Bulletins,200,Traffic Fatality (Carson & California),"","[""Long BeachPolice Department""]",[],[],[],[],[] 1603,https://www.knoxvilletn.gov/government/city_departments_offices/community_empowerment/police_advisory_review_committee,Misc Police Activity,404,"","",,,,,, -1604,https://www.arlingtontx.gov/news/my_arlington_t_x/news_archive/2018_archived_news/september_2018/two_arlington_police_officers_honored_by_governor,Media Bulletins,200," - Two Arlington Police Officers Honored by Governor with Star of Texas Award - City of Arlington +1604,https://www.arlingtontx.gov/news/my_arlington_t_x/news_archive/2018_archived_news/september_2018/two_arlington_police_officers_honored_by_governor,Media Bulletins,200," + Two Arlington Police Officers Honored by Governor with Star of Texas Award - City of Arlington ","","[""YOUR COMMUNITY NEWS AND EVENTS"", ""City of Arlington""]","[""Two Arlington Police Officers Honored by Governor with Star of Texas Award""]",[],[],[],[] 1605,https://www.colma.ca.gov/question/how-do-i-get-a-copy-of-a-birth-certificate/,Resources,200,How do I get a copy of a birth certificate? - Town of Colma,"","[""How do I get a copy of a birth certificate?""]","[""Primary menu links"", ""Action toolbar"", ""Contact"", ""Subscribe"", ""Connect""]",[],[],[],[] 1606,https://beaumonttexas.gov/beaumont-police-traffic-division-investigating-a-fatality-crash-eastex-frwy-and-chinn-ln/,Poor Data Source,404,"","",,,,,, @@ -1832,8 +1832,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 1616,https://delcopa.gov/sustainability/presentations/22/12_victordonnay_v2.pptx,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] 1617,https://coloradosprings.gov/police-department/page/cspd-community-survey,Poor Data Source,403,"","",,,,,, 1618,http://chico.ca.us/post/chico-police-officer-mark-bass-honored-chico-noon-exchange-74th-annual-peace-officer-year,Media Bulletins,404,"","",,,,,, -1619,https://www.roseville.ca.us/government/departments/police_department/community_services/my_neighborhood_officer/beat_4,Resources,200," - Beat 4 - City of Roseville +1619,https://www.roseville.ca.us/government/departments/police_department/community_services/my_neighborhood_officer/beat_4,Resources,200," + Beat 4 - City of Roseville ","","[""City of Roseville""]","[""Beat 4""]","[""Roseville Police Department ""]",[],[],[] 1620,http://www.longbeach.gov/police/press-releases/murder-suicide-1500-block-of-park-avenue/,Media Bulletins,200,MURDER SUICIDE 1500 BLOCK OF PARK AVENUE,"","[""Long BeachPolice Department""]",[],[],[],[],[] 1621,https://www.happyvalleyor.gov/services/police-department/reporting-accidents/,Resources,200,Reporting Accidents | City of Happy Valley,"","[""Reporting Accidents""]","[""City Hall"", ""Business"", ""Community"", ""How Do I?""]","[""City of Happy Valley"", ""Government"", ""Take Action""]","[""\n16000 SE Misty Drive, Happy Valley, OR 97086\n"", ""(503) 783-3800 | [email\u00a0protected]""]","[""Oregon law requires that drivers involved in an accident file an accident report if the accident involves any of the following conditions:""]","[""General"", ""Departments"", ""Boards & Commissions"", ""General"", ""Resources"", ""Divisions"", ""General"", ""Amenities"", ""Services""]" @@ -1844,16 +1844,16 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 1626,http://www.longbeach.gov/police/press-releases/traffic-fatality-spring-street-west-of-el-dorado-park/,Media Bulletins,200,TRAFFIC FATALITY - Spring Street West of El Dorado Park,"","[""Long BeachPolice Department""]",[],[],[],[],[] 1627,https://www.southamptontownnypolice.gov/faq.aspx?qid=510,Resources,200,FAQs • How can I purchase a Village permit? ,"",[],"[""\n\u25bc\r\nParks & Rec\t\t""]","[""Loading"", ""Site Tools"", ""Categories"", ""Live Edit"", ""Contact Us"", ""Site Links""]",[],[],[] 1628,https://alpha.austin.gov/en/police-oversight/formal-complaint-impartial-attitude-and-courtesy-42/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] -1629,https://ci.newcastle.wa.us/departments/police/e-_alerts,Resources,200," - E-News - City of Newcastle +1629,https://ci.newcastle.wa.us/departments/police/e-_alerts,Resources,200," + E-News - City of Newcastle ","",[],"[""City of Newcastle""]",[],"[""City of NewcastleWashington"", ""Newsletters"", ""Public Meeting Notices"", ""Employment Opportunities""]",[],[] 1630,http://www.longbeach.gov/police/press-releases/traffic-fatality-pch--myrtle-ave/,Media Bulletins,200,Traffic Fatality PCH / Myrtle Ave,"","[""Long BeachPolice Department""]",[],[],[],[],[] 1631,https://www.mass.gov/doc/05-14-15-police-and-school-officials-attend-da-morrisseys-safe-and-supportive-schools-0/download,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] 1632,https://www.mass.gov/doc/emergencywaiverpcopdf/download,Poor Data Source,200,"","",[],[],[],[],[],[] 1633,https://www.antioch.il.gov/wpfb-file/12-13-11-police-pension-fund-agenda-pdf-4/,Policies & Contracts,200,"12-13-11 Police Pension Fund Agenda - Antioch, IL",13491 12 13 11 police pension fund agenda pdf commissions agendas 2011 1625758338 7fbda0786265e371ec5e6ffad4bd173e 56c15fa57ff824b7283a17b27825a5436651578c6fa9ea2e742221c5e8297cba 217x300 _1l28v3ffmhil thumb jpg 2017 05 17 08 41 32 0 157 55 39 34 2021 06 02 49 25 pdf application num_pages pagefailed_1 pagefailed_2 pagefailed_3 pagefailed_4 pagefailed_5 pagefailed_6 pagefailed_7 pagefailed_8 pagefailed_9 pagefailed_10 pagefailed_11 pagefailed_12 pagefailed_13 pagefailed_14 pagefailed_15 pagefailed_16 pagefailed_17,"[""12-13-11 Police Pension Fund Agenda""]",[],[],[],[],[] 1634,https://www.mass.gov/doc/state-police-academy-rules-and-regulations/download,Training & Hiring Info,200,"","",[],[],[],[],[],[] -1635,https://www.crystalmn.gov/how_do_i____/contact/police_department,Contact Info & Agency Meta,200," - Contact Us - City of Crystal-Police +1635,https://www.crystalmn.gov/how_do_i____/contact/police_department,Contact Info & Agency Meta,200," + Contact Us - City of Crystal-Police ",Locations and contact information to the City of Crystal Police Department.,"[""Contact Us""]","[""Deputy Police Chief"", ""Police Chief""]","[""Sign up for a city newsletter or notification."", ""Police Department"", ""Lobby Hours:""]","[""Monday - Friday""]",[],[] 1636,https://www.roundrocktexas.gov/news/police-investigate-new-years-eve-auto-pedestrian-collision/,Media Bulletins,200,Police investigate New Year's Eve auto-pedestrian collision - City of Round Rock,"",[],[],"[""Police investigate New Year\u2019s Eve auto-pedestrian collision""]","[""Site Search"", ""Follow Us""]",[],[] 1637,http://www.longbeach.gov/police/press-releases/murder-investigation8/,Media Bulletins,200,MURDER INVESTIGATION,"","[""Long BeachPolice Department""]",[],[],[],[],[] @@ -1878,8 +1878,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 1656,https://www.mass.gov/info-details/audit-of-the-worcester-state-university-objectives-scope-and-methodology,Not Criminal Justice Related,200,"Audit of the Worcester State University Objectives, Scope, and Methodology | Mass.gov",An overview of the purpose and process of auditing the Worcester State University,"[""\nAudit of the Worcester State University Objectives, Scope, and Methodology\n""]","[""Table of Contents\n for the audit, Audit of the Worcester State University"", ""Table of Contents"", ""Overview\n "", ""Data Reliability\n "", ""Conclusion\n "", ""Help Us Improve Mass.gov with your feedback""]",[],[],[],[] 1657,https://wrightstown.us/police-crime-prevention-programs/neighborhood-watch/img_2876/,Poor Data Source,200,IMG_2876 - Village of Wrightstown,"","[""IMG_2876""]","[""Recent News"", ""\n\t\t\t\t\t\tUpcoming Events\t\t\t\t\t""]",[],"[""Village Hall"", ""Public Works"", ""Police Department"", ""Fire Department"", ""Join Us on Social Media""]",[],[] 1658,https://southamptontownnypolice.gov/214/transportation-traffic-safety,Not Criminal Justice Related,200,"Municipal Work's - Transportation & Traffic Safety | Southampton, NY - Official Website",Find out what the responsibilities are for the Intermodal Transportation Division.,"[""\r\n\r\nMunicipal Work's - Transportation & Traffic Safety\t\t""]","[""Traffic Safety"", ""Transportation Commission"", ""Public Transportation"", """"]","[""Loading"", ""Site Tools"", ""Contact Us"", ""Department of Municipal Works"", ""FAQs"", ""Contact Us"", ""Site Links""]",[],[],[] -1659,https://www.rentonwa.gov/city_hall/police/staff_services,Resources,200," - Staff Services - City of Renton +1659,https://www.rentonwa.gov/city_hall/police/staff_services,Resources,200," + Staff Services - City of Renton ","Staff services provide Fingerprint Services, Concealed Pistol License, Public Record Requests, Med-Project Kiosk.","[""CITY OF RENTON\r\n\t\t\t\t\tWASHINGTON""]","[""Staff Services""]",[],"[""Concealed Pistol License"", ""Do you live within the Renton City limits?"", ""For an Original Concealed Pistol License"", ""Fee"", ""Renewing Concealed Pistol Licenses"", ""Fees"", ""Public Records Requests"", ""Med-Project Kiosk"", ""Not Accepted""]","[""S. Cour, Manager""]","[""Staff Services Division""]" 1660,http://beaverpolice.us/staff-members/eric-schwartz/,Poor Data Source,404,"","",,,,,, 1661,https://alpha.austin.gov/police-oversight/notice-of-complaint-related-to-2022-0159/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] @@ -1897,8 +1897,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 1673,https://www.coppelltx.gov/faq.aspx?qid=249,Resources,200,FAQs • Can the City stop the installation of 5G/Small Cell u,"",[],"[""\n\u25bc\r\n5G / Small Cell\t\t""]","[""Loading"", ""Categories"", ""Live Edit""]",[],[],[] 1674,https://www.hayward-ca.gov/police-department/programs/business-watch-program,Resources,200,Business Watch Program | City of Hayward - Official website,"Lessen the Opportunities for the CriminalsTake control of what happens in your business community and lessen your chances of becoming a victim. Through ""Business Watch,"" you will be making crimes against yourself and your fellow business neighbors as difficult as possible.What is Business Watch?Business Watch is a crime prevention program that enlists the active participation",[],"[""Business Watch Program"", ""You are here. So is everything else."", ""Search form""]",[],"[""Lessen the Opportunities for the Criminals"", ""What is Business Watch?"", ""What are the Benefits of participating in Business Watch?"", ""How do I start a Business Watch?"", ""How do I learn more about Business Watch?"", ""Receive crime bulletins and alerts"", ""Report\n Problems"", ""Ask\n Questions"", ""Make a\n Suggestion"", ""Translate"", ""Search""]",[],[] 1675,http://www.longbeach.gov/police/press-releases/residential-burglary-suspect-arrested/,Media Bulletins,200,RESIDENTIAL BURGLARY SUSPECT ARRESTED,"","[""Long BeachPolice Department""]",[],[],[],[],[] -1676,https://www.burienwa.gov/news_events/city_newsroom/news_announcements/burien_police_chief_promoted_within_kcso,Media Bulletins,200," - Burien Police Chief Promoted Within KCSO - City of Burien +1676,https://www.burienwa.gov/news_events/city_newsroom/news_announcements/burien_police_chief_promoted_within_kcso,Media Bulletins,200," + Burien Police Chief Promoted Within KCSO - City of Burien ","Burien Police Chief Theodore “Ted” Boe has accepted a promotion to serve as Patrol Operations Division Chief for King County Sheriff’s Office, effective January 1, 2023.","[""City of Burien""]","[""Burien Police Chief Promoted Within KCSO""]",[],[],[],[] 1677,https://www.lynchburgvapolice.gov/news-updates/update-news-release-incident-involving-lpd-officer/,Media Bulletins,200,[UPDATE] NEWS RELEASE: INCIDENT INVOLVING LPD OFFICER - Lynchburg Police Department,"","[""[UPDATE] NEWS RELEASE: INCIDENT INVOLVING LPD OFFICER""]",[],[],"[""Contact Us"", ""Site Links"", ""Site Links""]",[],[] 1678,https://delcopa.gov/vsc/,Not Criminal Justice Related,200,Untitled Document,"",[],[],[],[],[],[] @@ -1910,25 +1910,25 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 1684,https://norfolkne.gov/assets/site/documentcentral/police/archived-calls-for-service/2017-calls-for-service/march2017cfs.pdf,Calls for Service,200,"","",[],[],[],[],[],[] 1685,https://norfolkne.gov/assets/site/documentcentral/police/2021-daily-reports/summary/111821summary.pdf,Dispatch Logs,200,"","",[],[],[],[],[],[] 1686,http://www.greenvillenc.gov/government/police/mental-health-crisis-services,Poor Data Source,404,"","",,,,,, -1687,https://www.roseville.ca.us/government/departments/electric_utility/rebates___energy_savings/your_trusted_solar_advisor_copy,Not Criminal Justice Related,200," - Your Trusted Solar Advisor - City of Roseville +1687,https://www.roseville.ca.us/government/departments/electric_utility/rebates___energy_savings/your_trusted_solar_advisor_copy,Not Criminal Justice Related,200," + Your Trusted Solar Advisor - City of Roseville ","","[""City of Roseville""]","[""Your Trusted Solar Advisor""]","[""\nCONTACT US"", ""City of Roseville""]",[],[],[] 1688,https://delcopa.gov/publicrelations/releases/2020/covidtesting_canceledmillbournesept.html,Not Criminal Justice Related,200,"Delaware County Cancels COVID-19 Public Testing Site in Millbourne - Delaware County, Pennsylvania","","[""Delaware County Cancels COVID-19 Public Testing Site in Millbourne""]",[],"[""Public Relations Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]","[""September 17 drive-thru and walk-up testing for Delaware County residents and workers canceled""]",[],[] 1689,https://www.lynchburgvapolice.gov/wp-content/uploads/2021/06/lynchburg-police-patch-new-w-red.png,Poor Data Source,404,"","",,,,,, 1690,http://www.longbeach.gov/police/press-releases/charges-filed-in-2002-murder/,Media Bulletins,200,Charges Filed in 2002 Murder,"","[""Long BeachPolice Department""]",[],[],[],[],[] -1691,https://www.gurnee.il.us/events/2017/06/10/default-calendar/2017-outrun-the-cops!,Not Criminal Justice Related,200," - 2017 Outrun The Cops! +1691,https://www.gurnee.il.us/events/2017/06/10/default-calendar/2017-outrun-the-cops!,Not Criminal Justice Related,200," + 2017 Outrun The Cops! ","","[""Events"", ""Events View Calendar""]","[""2017 Outrun The Cops!""]","[""Village Hall""]",[],[],[] 1692,https://norfolkne.gov/assets/site/documentcentral/police/2021-daily-reports/blotter/092921blotter.pdf,Dispatch Logs,200,"","",[],[],[],[],[],[] 1693,https://santabarbaraca.gov/government/departments/santa-barbara-police-department,Contact Info & Agency Meta,200,Santa Barbara Police Department | City of Santa Barbara,For any Emergency Dial: 9-1-1 Non-Emergency Dispatch: 805-882-8900,"[""Santa Barbara Police Department""]","[""For any Emergency Dial: 9-1-1"", ""\u00a0Non-Emergency Dispatch: 805-882-8900"", ""Police Department Information"", ""News Feed & Media Releases"", ""Contact Us"", ""This is the prefooter section"", ""Main Footer"", ""City Hall"", ""Mailing Address"", ""Newsletters""]",[],[],"[""Currently, the Police Department Lobby will be open for in-person service during the following days and times:"", ""CCW APPLICATION INFORMATION"", ""WEAPONS/RANGE QUALIFICATIONS AND TRAINING"", ""APPLY FOR A CCW""]",[] -1694,https://www.pleasantprairiewi.gov/departments/police/news/police_and_fire___rescue_news_archive/2019_news_releases/19-_year-_old_suffers_fatal_gunshot_wound_update,Not Criminal Justice Related,200," - 19-Year-Old Suffers Fatal Gunshot Wound Update - Village of Pleasant Prairie +1694,https://www.pleasantprairiewi.gov/departments/police/news/police_and_fire___rescue_news_archive/2019_news_releases/19-_year-_old_suffers_fatal_gunshot_wound_update,Not Criminal Justice Related,200," + 19-Year-Old Suffers Fatal Gunshot Wound Update - Village of Pleasant Prairie ","",[],"[""19-Year-Old Suffers Fatal Gunshot Wound Update""]","[""Follow Us on Social Media""]",[],[],[] 1695,https://www.prescott-az.gov/services-safety/police/police-program-and-services/,Contact Info & Agency Meta,200,Prescott Police | Prescott Police Department | Dedicated to Public Safety,Prescott Police Department provides the highest level of service in a collaborative effort with our community. Public Safety is Job #1.,[],"[""PUBLIC SAFETY IS JOB ONE!"", ""Keep in Touch""]","[""PrescottPolice"", ""Values"", ""Crime Prevention""]",[],[],[] 1696,https://norfolkne.gov/assets/site/documentcentral/police/2021-daily-reports/summary/060721summary1.pdf,Dispatch Logs,200,"","",[],[],[],[],[],[] 1697,https://delcopa.gov/planning/programsandinitiatives/naturalresourceprotection.html,Resources,200,Natural Resource Protection,"","[""Natural Resource Protection""]","["" Natural Resource Protection Assistance\n"", "" Natural Heritage Inventory\n""]","[""Planning Department Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] -1698,https://www.edmondswa.gov/services/police,Contact Info & Agency Meta,200," - Police Department - City of Edmonds, WA +1698,https://www.edmondswa.gov/services/police,Contact Info & Agency Meta,200," + Police Department - City of Edmonds, WA ","","[""City of Edmonds - Washington""]","[""Police Department""]","[""Service\u00a0 Integrity\u00a0 Respect\u00a0 Stewardship"", ""Michelle Bennett\n\nChief of Police"", ""Edmonds Police Department"", ""Recruitment and Hiring""]",[],[],[] 1699,https://www.southamptontownnypolice.gov/faq.aspx?qid=79,Not Criminal Justice Related,200,FAQs • How do I report overcrowding conditions in a bar or n,"",[],"[""\n\u25bc\r\nPublic Safety - Code Enforcement\t\t""]","[""Loading"", ""Site Tools"", ""Categories"", ""Live Edit"", ""Contact Us"", ""Site Links""]",[],[],[] 1700,https://coloradosprings.gov/police-department/page/coffee-cop,Not Criminal Justice Related,200,Coffee with a Cop | City of Colorado Springs,"","[""\nCoffee with a Cop\n""]","[""Search"", ""Colorado Springs Weekly"", ""GoCOS!"", ""Connect with @CityofCOS""]",[],[],"[""REPORT ONLINE""]",[] @@ -1947,22 +1947,22 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 1713,https://www.lynchburgvapolice.gov/wp-content/uploads/2022/02/20220201_162001000_ios.jpg,Poor Data Source,404,"","",,,,,, 1714,http://www.longbeach.gov/police/press-releases/murder-1200-block-of-e--17th-street/,Media Bulletins,200,MURDER 1200 block of E. 17th Street,"","[""Long BeachPolice Department""]",[],[],[],[],[] 1715,https://www.mass.gov/doc/municipal-police-training-committee-mptc-meeting-minutes-101619/download,Misc Police Activity,200,"","",[],[],[],[],[],[] -1716,https://www.arlingtontx.gov/news/my_arlington_t_x/news_stories/arlington_police_chief_announces_retirement,Media Bulletins,200," - Arlington Police Chief Announces Retirement - City of Arlington +1716,https://www.arlingtontx.gov/news/my_arlington_t_x/news_stories/arlington_police_chief_announces_retirement,Media Bulletins,200," + Arlington Police Chief Announces Retirement - City of Arlington ","","[""YOUR COMMUNITY NEWS AND EVENTS"", ""City of Arlington""]","[""Arlington Police Chief Announces Retirement""]",[],[],[],[] 1717,https://coloradosprings.gov/article/news/balltoberfest-collects-donated-sports-balls-police-departments-play-cos,Not Criminal Justice Related,200,Balltoberfest collects donated sports balls for police department's Play COS | City of Colorado Springs,"","[""\nBalltoberfest collects donated sports balls for police department's Play COS\n""]","[""Search"", ""Colorado Springs Weekly"", ""GoCOS!"", ""Connect with @CityofCOS""]","[""About the Play COS Program""]",[],"[""REPORT ONLINE""]",[] 1718,https://www.florenceaz.gov/jobs/police-records-clerk/,Poor Data Source,404,"","",,,,,, 1719,https://coloradosprings.gov/police-department/article/news/homicide-investigation-3500-block-south,Media Bulletins,200,Homicide Investigation: 3500 Block of South Chelton Loop | City of Colorado Springs,"","[""\nHomicide Investigation: 3500 Block of South Chelton Loop\n""]","[""Search"", ""Colorado Springs Weekly"", ""GoCOS!"", ""Connect with @CityofCOS""]",[],[],"[""REPORT ONLINE""]",[] 1720,http://www.longbeach.gov/police/press-releases/murder--9th-st----locust-ave--/,Media Bulletins,200,Murder (9th St. & Locust Ave.),"","[""Long BeachPolice Department""]",[],[],[],[],[] -1721,https://www.pleasantprairiewi.gov/news/2021_news/police_department_celebrates_50_years_of_service,Media Bulletins,200," - Police Department Celebrates 50 Years of Service - Village of Pleasant Prairie +1721,https://www.pleasantprairiewi.gov/news/2021_news/police_department_celebrates_50_years_of_service,Media Bulletins,200," + Police Department Celebrates 50 Years of Service - Village of Pleasant Prairie ","",[],"[""Police Department Celebrates 50 Years of Service""]","[""Follow Us on Social Media""]",[],[],[] 1722,https://www.sandiego.gov/department-document/san-diego-police-announce-arrests-home-invasion-series,Media Bulletins,200,San Diego Police Announce Arrests in Home Invasion Series | City of San Diego Official Website,"","[""City of San Diego Official Website""]","[""Main navigation"", ""Leisure"", ""Resident Resources"", ""Doing Business"", ""Library"", ""Public Safety"", ""City Hall"", ""Accessibility Tools"", ""San Diego Police Announce Arrests in Home Invasion Series"", ""Footer""]",[],"[""Parks"", ""Outdoors"", ""Neighborhoods"", ""Recreational Activities"", ""Street Maintenance"", ""Plan"", ""Fix"", ""Build"", ""Programs & Events"", ""Services"", ""Kids & Teens"", ""eCollection"", ""Police"", ""Fire-Rescue"", ""Lifeguards"", ""City Officials"", ""City Government""]",[],[] 1723,http://www.ryepolice.us/pressrelease/birchwood-drive-reckless-conduct-press-release/attachment/hordon,Poor Data Source,200,Rye Police Department hordon - Rye Police Department,"","[""hordon""]","[""hordon""]","[""Navigation"", ""Follow Us"", ""Facebook"", ""Email Updates"", ""Storm Preparedness Guide""]",[],[],[] 1724,https://champaignil.gov/police/about-us/policies-and-procedures/,Policies & Contracts,200,Policies and Procedures - City of Champaign,"","[""Policies and Procedures""]","[""Police Department"", ""Quick Links"", ""Police Department News"", ""Contact Us""]",[],[],[],[] 1725,http://www.longbeach.gov/police/press-releases/dui-enforcement-operation-planned-st--patrick-s-day/,Media Bulletins,200,DUI ENFORCEMENT OPERATION PLANNED ST. PATRICK'S DAY,"","[""Long BeachPolice Department""]",[],[],[],[],[] -1726,https://civicpride.jacksontn.gov/government/public_notices___press_releases/newjpdchiefofpolice,Not Criminal Justice Related,200," - Mayor's Civic Pride Awards - City of Jackson, TN +1726,https://civicpride.jacksontn.gov/government/public_notices___press_releases/newjpdchiefofpolice,Not Criminal Justice Related,200," + Mayor's Civic Pride Awards - City of Jackson, TN ",Welcome to the official website of City of Jackson in Tennessee.,"[""City of Jackson TN"", ""2023 Mayor's Civic Pride Award Nominations"", ""City of Jackson TN""]","[""Mayor's Civic Pride Awards""]","[""JUDGING CRITERIA""]",[],[],[] 1727,https://police.greenvillesc.gov/1643/photo-gallery,Resources,200,"Photo Gallery | Greenville, SC - Official Website",View photos from the Comp Plan Steering Committee,"[""\r\n\r\nPhoto Gallery\t\t""]",[],"[""Loading""]",[],[],[] 1728,https://alpha.austin.gov/en/police-oversight/formal-complaint-purpose-and-scoperesponsibility-to-the-community-and-other-policy-violations-13/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] @@ -1976,19 +1976,19 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 1736,https://www.michigan.gov/som/government/state-license-search/l/law-enforcement-officer-police,Poor Data Source,200,SOM - 404 - Page Not Found,"","[""404 - Page Not Found""]","[""About""]","[""Popular on michigan.gov"", ""How Do I..."", ""Careers""]",[],[],[] 1737,https://www.colma.ca.gov/documents/jd-police-commander/,Training & Hiring Info,200,Police Commander - Town of Colma,"","[""\n\n Police Commander""]","[""Primary menu links"", ""Action toolbar"", ""Documents and forms"", ""Contact"", ""Subscribe"", ""Connect""]",[],[],[],[] 1738,https://alpha.austin.gov/en/health-safety/accountability-and-transparency-in-policing/police-feedback-and-records/how-to-use-official-documents/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] -1739,https://civicpride.jacksontn.gov/government/departments/police/divisions/administrative/law_enforcement_technologies,Not Criminal Justice Related,200," - Mayor's Civic Pride Awards - City of Jackson, TN +1739,https://civicpride.jacksontn.gov/government/departments/police/divisions/administrative/law_enforcement_technologies,Not Criminal Justice Related,200," + Mayor's Civic Pride Awards - City of Jackson, TN ",Welcome to the official website of City of Jackson in Tennessee.,"[""City of Jackson TN"", ""2023 Mayor's Civic Pride Award Nominations"", ""City of Jackson TN""]","[""Mayor's Civic Pride Awards""]","[""JUDGING CRITERIA""]",[],[],[] 1740,https://norfolkne.gov/assets/site/documentcentral/police/2022-daily-reports/arrests/021622arrests.pdf,Poor Data Source,404,"","",,,,,, 1741,https://delcopa.gov/ojs/ojsforms/cifinfosheet.pdf,Resources,200,"","",[],[],[],[],[],[] 1742,http://www.longbeach.gov/police/press-releases/l-b-p-d--academy-graduation-ceremony-held-today/,Media Bulletins,200,L.B.P.D. ACADEMY GRADUATION CEREMONY HELD TODAY,"","[""Long BeachPolice Department""]",[],[],[],[],[] 1743,https://ethics.ny.gov/news/jcope-settles-public-officers-law-violation-former-mta-employee,Media Bulletins,200,JCOPE Settles Public Officers Law Violation with Former MTA Employee | New York State Commission on Ethics and Lobbying in Government,"","[""\n New York State\n Commission on Ethics and Lobbying in Government\n"", ""\nJCOPE Settles Public Officers Law Violation with Former MTA Employee\n""]","[""SHARE"", ""\n Contact Communications and Public Information Office\n"", ""CONNECT WITH US""]","[""\nShivanand Kalipersadsingh Substantial Basis Investigation Report and Settlement Agreement\n\n"", ""Contact us by phone:"", ""Contact us by email:"", ""Mailing Address:"", ""Translation Services""]",[],[],[] -1744,https://sanramon.ca.gov/our_city/departments_and_divisions/police/community_programs/youth_services/station_tours,Resources,200," - Station Tours - City of San Ramon +1744,https://sanramon.ca.gov/our_city/departments_and_divisions/police/community_programs/youth_services/station_tours,Resources,200," + Station Tours - City of San Ramon ","","[""Station Tours""]","[""Contact Us"", ""Station Tours"", ""Contact Us"", ""Useful Links""]",[],[],[],[] 1745,http://police.portlandmaine.gov/293/elder-services,Resources,200,"Elder Services | Portland, ME - Official Website",Our mission is to creatively and collaboratively address issues that present hardships for Portland residents as they age.,"[""Elder Services""]",[],[],[],[],[] -1746,https://www.ci.san-ramon.ca.us/our_city/departments_and_divisions/police/fee_and_forms/violation_of_city_ordinance,Resources,200," - Violation of City Ordinance - City of San Ramon +1746,https://www.ci.san-ramon.ca.us/our_city/departments_and_divisions/police/fee_and_forms/violation_of_city_ordinance,Resources,200," + Violation of City Ordinance - City of San Ramon ","","[""Violation of City Ordinance""]","[""Contact Us"", ""Useful Links""]",[],[],[],[] 1747,https://www.mass.gov/doc/wallace-patrick-v-beverly-police-department-11608/download,Court Cases,200,"","",[],[],[],[],[],[] 1748,https://norfolkne.gov/assets/site/documentcentral/police/2021-daily-reports/blotter/093021blotter.pdf,Dispatch Logs,200,"","",[],[],[],[],[],[] @@ -2003,8 +2003,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 1757,https://delcopa.gov/publicrelations/releases/2020/blackhistorymonth.html,Not Criminal Justice Related,200,"Delaware County Celebrates Black History Month - Delaware County, Pennsylvania","","[""Delaware County Celebrates Black History Month""]",[],"[""Public Relations Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]","[""Council Vice Chair Dr. Monica Taylor speaks to students \r\n\t at Drexel Hill Middle School""]",[],[] 1758,http://www.longbeach.gov/police/press-releases/traffic-fatality-14-/,Media Bulletins,200,TRAFFIC FATALITY(14),"","[""Long BeachPolice Department""]",[],[],[],[],[] 1759,https://www.foxcrossingwi.gov/departments/police-department/history/badge1/,Poor Data Source,200,badge1 - Fox Crossing Fox Crossing,"",[],"[""History \u00bb badge1""]",[],[],[],[] -1760,https://www.knoxvilletn.gov/archived_news_stories/2008/police_explorer_class_orientation,Not Criminal Justice Related,200," - Police Explorer Class Orientation - City of Knoxville +1760,https://www.knoxvilletn.gov/archived_news_stories/2008/police_explorer_class_orientation,Not Criminal Justice Related,200," + Police Explorer Class Orientation - City of Knoxville ",communications*,"[""Police Explorer Class Orientation"", ""Communications Director"", ""Police Explorer Class Orientation""]",[],[],[],[],[] 1761,https://coloradosprings.gov/police-department/article/news/officer-involved-shooting-march-7-2022,Officer Involved Shootings,200,"Officer-Involved Shooting March 7, 2022 | City of Colorado Springs","","[""\nOfficer-Involved Shooting March 7, 2022\n""]","[""Search"", ""Colorado Springs Weekly"", ""GoCOS!"", ""Connect with @CityofCOS""]",[],[],"[""REPORT ONLINE""]",[] 1762,https://coloradosprings.gov/police-department/article/news/cspd-accident-alert-status-may-7-11-2021,Media Bulletins,200,"CSPD on Accident Alert Status from May 7 – 11, 2021 | City of Colorado Springs","","[""\nCSPD on Accident Alert Status from May 7 \u2013 11, 2021\n""]","[""Search"", ""Colorado Springs Weekly"", ""GoCOS!"", ""Connect with @CityofCOS""]",[],[],"[""REPORT ONLINE""]",[] @@ -2012,14 +2012,14 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 1764,https://www.osc.state.ny.us/local-government/audits/fire-company-or-department/2015/12/18/copenhagen-fire-department-controls-over-financial-activities,Not Criminal Justice Related,200,Copenhagen Fire Department – Controls Over Financial Activities (2015M-270) | Office of the New York State Comptroller,Copenhagen Fire Department – Controls Over Financial Activities (2015M-270),"[""\nCopenhagen Fire Department \u2013 Controls Over Financial Activities (2015M-270)\n"", "" ""]","[""Main navigation""]","[""Local Government and School Accountability Contact Information:"", ""How would you rate our website?""]","[""Disclaimer"", ""Purpose of Audit"", ""Background"", ""Key Findings"", ""Key Recommendations"", ""Newsletter Sign-Up Confirmation"", ""Thank you for subscribing to the Comptroller's Weekly Newsletter!""]",[],[] 1765,https://hilliardohio.gov/hilliard-polices-sgt-higgins-retires-april/,Media Bulletins,200,Hilliard Police’s Sgt. Higgins retires April 9 - City of Hilliard,John Higgins isn’t sure if serving as a AAA School Safety Officer at Harrisburg Elementary School in 1975 inspired him to become a police officer or was,"[""News"", ""Hilliard Police\u2019s Sgt. Higgins retires April 9""]",[],[],"[""Recent Articles"", ""Hilliard Newsletter"", ""City Hall and Admin"", ""Hilliard Mayor's Court"", ""Division of Police"", ""Police Assistance"", ""Police Records and General Assistance"", ""Norwich Township Fire"", ""Hilliard Recreation & Parks"", ""Hilliard Newsletter"", ""Quick Links"", ""Stay connected with us""]",[],"[""Click the \u2018x\u2019 to opt out.""]" 1766,https://delcopa.gov/courts/specialtycourts/pdf/drugtreatment/treatment court - general rules.pdf,Resources,200,"","",[],[],[],[],[],[] -1767,https://www.arlingtontx.gov/news/my_arlington_t_x/news_archive/2018_archived_news/july_2018/july_2018_arlington_police_community_newsletter,Media Bulletins,200," - July 2018 Arlington Police Community Newsletter Available - City of Arlington +1767,https://www.arlingtontx.gov/news/my_arlington_t_x/news_archive/2018_archived_news/july_2018/july_2018_arlington_police_community_newsletter,Media Bulletins,200," + July 2018 Arlington Police Community Newsletter Available - City of Arlington ","","[""YOUR COMMUNITY NEWS AND EVENTS"", ""City of Arlington""]","[""July 2018 Arlington Police Community Newsletter Available""]",[],[],[],[] 1768,http://www.longbeach.gov/police/how-do-i/get-inmate-information/,Resources,200,Get Inmate Information,Long Beach Police Department- Get Inmate Information,"[""Police Department""]","[""REMOTE INMATE VISITATION"", ""INMATE INFORMATION""]","[""Mayor"", ""City Council"", ""Rex Richardson"", ""Mary Zendejas"", ""Cindy Allen"", ""Kristina Duggan"", ""Daryl Supernaw"", ""Megan Kerr"", ""Suely Saro"", ""Roberto Uranga"", ""Al Austin"", ""Dr. Joni Ricks-Oddie"", ""Dawn McIntosh"", ""Laura L. Doud"", ""Doug Haubert"", ""Tom Modica"", ""Monique DeLaGarza"", ""City-Wide Elected Officials"", ""Appointed Officials"", ""Online Payments"", ""Online Services"", ""In-Person Services"", ""Opening a Business"", ""Doing Business With The City"", ""Resources"", ""Most Popular"", ""Online Resources"", ""Attractions"", ""Business Associations"", ""Travel Resources"", ""Departments"", ""Job Opportunities"", ""Information"", ""LBPD"", ""Employment"", ""Bureaus"", ""News & Events"", ""Crime Info"", ""How Do I"", ""How Do I"", ""Contact Us"", """", ""Do."", ""Discover."", ""Connect."", ""Ask.""]","["""", ""1st District"", ""2nd District"", ""3rd District"", ""4th District"", ""5th District"", ""6th District"", ""7th District"", ""8th District"", ""9th District"", ""City Attorney"", ""City Auditor"", ""City Prosecutor"", ""City Manager"", ""City Clerk"", ""Have a question about visitation of inmates housed at the Long Beach Police Department?"", ""Call (562) 570-7260"", ""Have a question about visitation of inmates housed at the Los Angeles County Jail?"", ""Call (213) 473-6080""]","[""File a Report Online"", ""Submit a Tip"", ""Submit a Commendation"", ""File a Complaint"", ""Ride Along Program"", ""\u00a0"", ""\u00a0"", ""\u00a0"", ""\u00a0"", ""Crime Lab Survey"", ""\u00a0""]",[] 1769,http://www.lafayettepolice.us/726/home-emergency-plans,Contact Info & Agency Meta,200,"Home Emergency Plans | Lafayette, IN - Official Website",Make a fire escape plan and practice the safe ways to get out of the house if there is a fire.,"[""\r\n\r\nHome Emergency Plans\t\t""]",[],"[""Loading"", ""Contact Us"", ""FAQs"", ""Site Links""]",[],[],[] 1770,https://delcopa.gov/council/2019minutes/010919minutes.pdf,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] 1771,https://covington.va.us/city-government/city-departments/police/,Media Bulletins,200,Police - Covington City,"","[""\nPolice\n"", ""\nPolice\n""]","[""\nCovington Appoints New Chief of Police and Director of Public Safety\n"", ""\nTOP ONLINE LINKS\n""]","[""Wish to make a complaint?"", ""OFFICER COMMENDATION"", ""THE AWARE FOUNDATION, INC.""]","[""NOTICES"", ""\nMAPLE AVENUE PROJECT UPDATE "", ""\nROUTE 18 THERMO STRIPING "", ""CALENDAR""]",[],[] -1772,https://www.southamptontownnypolice.gov/899/law-enforcement-career-exploring-program,Training & Hiring Info,200,"Law Enforcement Career Exploring Program | Southampton, NY - Official Website","Law Enforcement Career Exploring is open to young men and women ages 14 and not yet 21 years old with an interest in learning more about careers in the field of law enforcement. +1772,https://www.southamptontownnypolice.gov/899/law-enforcement-career-exploring-program,Training & Hiring Info,200,"Law Enforcement Career Exploring Program | Southampton, NY - Official Website","Law Enforcement Career Exploring is open to young men and women ages 14 and not yet 21 years old with an interest in learning more about careers in the field of law enforcement. ","[""\r\n\r\nLaw Enforcement Career Exploring Program\t\t""]","[""Law Enforcement Career Exploring Program""]","[""Loading"", ""Site Tools"", ""Contact Us"", ""Contact Us"", ""Site Links""]",[],[],[] 1773,https://delcopa.gov/sustainability/presentations/22/11_kellysanders_v1.pptx,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] 1774,https://alpha.austin.gov/police-oversight/notice-of-complaint-related-to-2022-0725/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] @@ -2052,8 +2052,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 1801,https://delcopa.gov/courts/domesticrelations/changeofaddress.html,Resources,200,"Copies of your Court Orders- Delaware County, Pennsylvania","","[""Change Your Address""]",[],"[""Domestic Relations Navigation"", ""Contact Us"", ""Courts Quick Links"", ""Government Center Quick Links"", ""About Delaware County""]",[],[],[] 1802,https://www.newcarrolltonmd.gov/government/departments/police_department/how_do_i__/vehicle_release,Contact Info & Agency Meta,404,"","",,,,,, 1803,https://www.colma.ca.gov/document_taxonomy/police-department/,List of Data Sources,200,Police Department Archives - Town of Colma,"","[""Document Types: Police Department""]","[""Primary menu links"", ""Action toolbar"", ""PD Press Release \u2013 C23-0912-05"", ""Colma PD Press Release \u2013 C23-0501-04"", ""Colma PD Press Release \u2013 C23-0424-04 and C23-0426-07"", ""Press Release \u2013 BART Fare Evasion Detail"", ""Press Release \u2013 C22-0420-01"", ""Press Release C22-0106-04"", ""CPD Press Release C21-0913-02"", ""PD Press Release C21-0111-01"", ""Press Release \u2013 C20-1212-01"", ""Press Release \u2013 C20-1127-01"", ""Posts navigation"", ""Contact"", ""Subscribe"", ""Connect""]",[],[],[],[] -1804,https://www.fortworthtexas.gov/departments/police/professional-standards,List of Data Sources,200," - Professional Standards Division +1804,https://www.fortworthtexas.gov/departments/police/professional-standards,List of Data Sources,200," + Professional Standards Division ","","[""Police Department""]","[""Professional Standards Division"", ""Search One Address. Find Everything.""]","[""Support Services"", ""Internal Affairs Mission & Purpose"", ""Misconduct Investigation Examples"", ""Complaint Process"", ""Disposition"", ""Legal Stuff"", ""Public Information Requests"", ""Resources"", ""Helpful Links"", ""Connect With FWPD""]",[],[],[] 1805,https://brookfieldil.gov/police-pension-board-012920/,Poor Data Source,404,"","",,,,,, 1806,https://alpha.austin.gov/police-oversight/notice-of-complaint-related-to-2022-0373/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] @@ -2075,8 +2075,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 1822,http://lafayettepolice.us/441/how-you-can-help,Not Criminal Justice Related,200,"How You Can Help | Lafayette, IN - Official Website","The City of Lafayette is improving water quality in the Wabash River and other streams with significant investments in its sanitary and stormwater capital programs, but every little bit helps. ","[""\r\n\r\nHow You Can Help\t\t""]","[""Learn More"", "" Resources""]","[""Loading"", ""Contact Us"", ""FAQs"", ""Site Links""]",[],[],[] 1823,https://www.woburnma.gov/government/police/policies-and-procedures-for-issuing-a-ltc-with-application/,Training & Hiring Info,200,Policies and Procedures for Issuing a LTC With Application - City of Woburn,"","[""Policies and Procedures for Issuing a LTC With Application""]",[],"[""Get Text & Email Updates!""]","[""Post Details""]",[],[] 1824,http://www.longbeach.gov/police/press-releases/murder-anaheim-st.--walnut-ave/,Media Bulletins,200,MURDER (Anaheim St. & Walnut Ave.),"","[""Long BeachPolice Department""]",[],[],[],[],[] -1825,https://www.ci.rohnert-park.ca.us/services/emergency_services/police_and_fire_services,Resources,200," - Public Safety - City of Rohnert Park +1825,https://www.ci.rohnert-park.ca.us/services/emergency_services/police_and_fire_services,Resources,200," + Public Safety - City of Rohnert Park ","","[""City of Rohnert Park""]","[""Events"", ""Rohnert Park""]","[""Public Safety""]","[""Public Safety""]",[],[] 1826,http://www.longbeach.gov/police/press-releases/critical-missing-person-rosa-ella-brady/,Media Bulletins,200,CRITICAL MISSING PERSON-ROSA ELLA BRADY,"","[""Long BeachPolice Department""]",[],[],[],[],[] 1827,https://cityofpowell.us/powell-police-chief-stephen-hrytzik-elected-section-iv-representative-of-fbi-national-academy-associates/chiefhrytzik_credit_klattephotography/,Contact Info & Agency Meta,200,"City of Powell, Ohio | ChiefHrytzik_credit_KlattePhotography","","[""\n ChiefHrytzik_credit_KlattePhotography\n \n ""]","[""CONTACT INFO\n"", ""HELPFUL LINKS"", ""\n LET'S CONNECT\n ""]","[""you're at home in Powell""]","[""614.885.5380"", ""47 Hall Street, Powell, OH 43065"", ""Signup for our newsletter""]",[],[] @@ -2104,8 +2104,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 1849,https://delcopa.gov/publicrelations/releases/2020/flushot_broomall.html,Not Criminal Justice Related,200,"Delaware County Hosts Public Flu Shot Clinic October 16 and 17 in Broomall - Delaware County, Pennsylvania","","[""Delaware County Hosts Public Flu Shot Clinic October 16 and 17 in Broomall""]",[],"[""Public Relations Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] 1850,https://alpha.austin.gov/es/police-oversight/notice-of-complaint-related-to-2022-0323/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] 1851,https://norfolkne.gov/assets/site/documentcentral/police/2022-daily-reports/blotter/092022blotter.pdf,Dispatch Logs,404,"","",,,,,, -1852,https://www.roseville.ca.us/government/departments/police_department/divisions/k-9,Misc Police Activity,200," - K-9 - City of Roseville +1852,https://www.roseville.ca.us/government/departments/police_department/divisions/k-9,Misc Police Activity,200," + K-9 - City of Roseville ","","[""City of Roseville""]","[""K-9""]","[""Roseville Police Department ""]",[],[],[] 1853,http://www.longbeach.gov/police/press-releases/dui-checkpoint-nets-one-arrest2/,Media Bulletins,200,DUI CHECKPOINT NETS TWO ARRESTS,"","[""Long BeachPolice Department""]",[],[],[],[],[] 1854,https://alpha.austin.gov/police-oversight/know-your-rights-video-series/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] @@ -2113,8 +2113,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 1856,https://delcopa.gov/planning/demodata/municipalinformation.html,Poor Data Source,200,"404 - Delaware County, Pennsylvania","","[""404 Error""]",[],"[""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] 1857,https://alpha.austin.gov/en/police-oversight/written-reprimand-of-officer-david-freston/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] 1858,https://norfolkne.gov/assets/site/documentcentral/police/2021-daily-reports/blotter/122421blotter.pdf,Dispatch Logs,200,"","",[],[],[],[],[],[] -1859,https://www.pleasantprairiewi.gov/news/2014_news/police_department_live,Poor Data Source,200," - Police Department Live - Village of Pleasant Prairie +1859,https://www.pleasantprairiewi.gov/news/2014_news/police_department_live,Poor Data Source,200," + Police Department Live - Village of Pleasant Prairie ","",[],"[""Police Department Live""]","[""Follow Us on Social Media""]",[],[],[] 1860,https://delcopa.gov/publicrelations/releases/2021/emergencybroadbandbenefitprogram.html,Not Criminal Justice Related,200,"Emergency Broadband Benefit Program - Delaware County, Pennsylvania","","[""Emergency Broadband Benefit Program""]",[],"[""Public Relations Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] 1861,https://www.osc.state.ny.us/state-agencies/payroll-bulletins/state-police/sp-216-april-2021-increases-location-pay-supplemental-location-pay-expanded,Media Bulletins,200,State Police Bulletin No. SP-216 | Office of the New York State Comptroller,State Police Bulletin No. SP-216,"[""\nState Police Bulletin No. SP-216\n"", "" ""]","[""Main navigation""]","[""How would you rate our website?""]","[""Disclaimer"", ""Purpose"", ""Affected Employees"", ""Background"", ""Effective Dates"", ""Eligibility Criteria"", ""OSC Actions"", ""Agency Actions"", ""Control-D Report Available After Processing"", ""Tax Information"", ""Payroll Register and Employee\u2019s Paycheck/Advice"", ""Questions"", ""Newsletter Sign-Up Confirmation"", ""Thank you for subscribing to the Comptroller's Weekly Newsletter!""]",[],[] @@ -2126,20 +2126,20 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 1867,https://www.mass.gov/doc/chelmsford-police-department-promotion-investigation-report/download,Court Cases,200,"","",[],[],[],[],[],[] 1868,https://www.troyny.gov/photos-troy-police-department-appoints-new-officers/,Media Bulletins,404,"","",,,,,, 1869,http://www.paloshillspolice.us/wp-content/uploads/2013/05/redlight.jpg,Poor Data Source,404,"","",,,,,, -1870,https://www.bedminster.us/police_fire_rescue/police_department,Contact Info & Agency Meta,200," - Police - Township of Bedminster +1870,https://www.bedminster.us/police_fire_rescue/police_department,Contact Info & Agency Meta,200," + Police - Township of Bedminster ","","[""Bedminster Township""]","[""Police""]","[""Bedminster Township""]",[],[],[] 1871,https://scrantonpa.gov/your-government/police-department/juvenile-unit/,Contact Info & Agency Meta,200,Juvenile Unit – City of Scranton,"","[""Juvenile Unit""]","[""Quick Links"", ""City of Scranton""]",[],[],[],[] 1872,http://www.longbeach.gov/police/press-releases/applications-for-volunteer-senior-police-partners-program-now-being-accepted/,Media Bulletins,200,APPLICATIONS FOR VOLUNTEER SENIOR POLICE PARTNER PROGRAM NOW BEING ACCEPTED,"","[""Long BeachPolice Department""]",[],[],[],[],[] 1873,https://www.va.gov/eastern-oklahoma-health-care/stories/va-suicide-prevention-program-recognizes-tulsa-police-officer/,Media Bulletins,200,VA Suicide Prevention Program Recognizes Tulsa Police Officer | VA Eastern Oklahoma Health Care | Veterans Affairs,"On Sept. 28, Mark Morgan, director, Eastern Oklahoma VA Health Care System, presented a VA challenge coin to Tulsa Police Officer Demita Kinnard in recognition of her assistance to the VA Suicide Prevention Program.","[""VA Suicide Prevention Program recognizes Tulsa Police Officer""]",[],[],[],[],[] 1874,https://champaignil.gov/2017/09/07/now-cgtv-champaign-police-department-employee-awards-ceremony/,Not Criminal Justice Related,200,Now on CGTV: Champaign Police Department Employee Awards Ceremony - City of Champaign,"","[""Now on CGTV: Champaign Police Department Employee Awards Ceremony""]","[""News Releases"", ""Department News""]",[],[],[],[] 1875,https://alpha.austin.gov/es/police-oversight/notice-of-complaint-related-to-2022-0647/,Complaints & Misconduct,200,Maintenance Notice,"",[],[],[],[],[],[] -1876,http://www.longbeach.gov/police/about-the-lbpd/employment/long-beach-mounted-police/,Misc Police Activity,200,Long Beach Mounted Police,"LONG BEACH MOUNTED POLICE - - The Long Beach Mounted Police is a non-profit corporation with a duly elected Board of Directors. They maintain their own insurance and oversee other business matters and investments. Membership includes riders and non-riders who are supporters of equestrian activities. +1876,http://www.longbeach.gov/police/about-the-lbpd/employment/long-beach-mounted-police/,Misc Police Activity,200,Long Beach Mounted Police,"
LONG BEACH MOUNTED POLICE + + The Long Beach Mounted Police is a non-profit corporation with a duly elected Board of Directors. They maintain their own insurance and oversee other business matters and investments. Membership includes riders and non-riders who are supporters of equestrian activities. For mo
","[""Police Department""]","[""LONG BEACH MOUNTED POLICE""]","[""Mayor"", ""City Council"", ""Rex Richardson"", ""Mary Zendejas"", ""Cindy Allen"", ""Kristina Duggan"", ""Daryl Supernaw"", ""Megan Kerr"", ""Suely Saro"", ""Roberto Uranga"", ""Al Austin"", ""Dr. Joni Ricks-Oddie"", ""Dawn McIntosh"", ""Laura L. Doud"", ""Doug Haubert"", ""Tom Modica"", ""Monique DeLaGarza"", ""City-Wide Elected Officials"", ""Appointed Officials"", ""Online Payments"", ""Online Services"", ""In-Person Services"", ""Opening a Business"", ""Doing Business With The City"", ""Resources"", ""Most Popular"", ""Online Resources"", ""Attractions"", ""Business Associations"", ""Travel Resources"", ""Departments"", ""Job Opportunities"", ""Information"", ""LBPD"", ""Employment"", ""Bureaus"", ""News & Events"", ""Crime Info"", ""How Do I"", ""How Do I"", ""Contact Us"", ""Volunteer Opportunities"", ""Do."", ""Discover."", ""Connect."", ""Ask.""]","["""", ""1st District"", ""2nd District"", ""3rd District"", ""4th District"", ""5th District"", ""6th District"", ""7th District"", ""8th District"", ""9th District"", ""City Attorney"", ""City Auditor"", ""City Prosecutor"", ""City Manager"", ""City Clerk""]","[""File a Report Online"", ""Submit a Tip"", ""Submit a Commendation"", ""File a Complaint"", ""Ride Along Program"", ""\u00a0"", ""\u00a0\u00a0"", ""\u00a0"", ""Crime Lab Survey"", ""\u00a0""]",[] -1877,https://www.arlingtontx.gov/news/my_arlington_t_x/news_archive/2016_archived_news/may_2016/arlington_honors_police_salutes_sacrifice,Media Bulletins,200," - Arlington Honors Police Service, Salutes Sacrifice - City of Arlington +1877,https://www.arlingtontx.gov/news/my_arlington_t_x/news_archive/2016_archived_news/may_2016/arlington_honors_police_salutes_sacrifice,Media Bulletins,200," + Arlington Honors Police Service, Salutes Sacrifice - City of Arlington ","","[""YOUR COMMUNITY NEWS AND EVENTS"", ""City of Arlington""]","[""Arlington Honors Police Service, Salutes Sacrifice""]",[],[],[],[] 1878,https://delcopa.gov/sustainability/pdf/raise/eastcostgreenwaytrailfeasibilitystudy_2009.pdf,Not Criminal Justice Related,200,"404 - Delaware County, Pennsylvania","","[""404 Error""]",[],"[""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] 1879,http://www.longbeach.gov/police/press-releases/murder-1600-block-of-pine-avenue/,Media Bulletins,200,Murder (1600 Block of Pine Avenue),"","[""Long BeachPolice Department""]",[],[],[],[],[] @@ -2160,14 +2160,14 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 1894,https://www.tukwilawa.gov/departments/police/police-department-services/online-reporting/,Resources,200,Online Reporting - City of Tukwila,"","[""Online Reporting""]",[],"[""Government""]","[""\nCity of Tukwila\n""]","[""I am a..."", ""Online Services"", ""Most Requested Forms""]",[] 1895,https://www.sandiego.gov/police/recruiting/contact,Contact Info & Agency Meta,200,Join Us Contact | City of San Diego Official Website,The following contact information and form are for theSDPD Recruiting Unit only. SeeContact Police Dispatchfor dispatch information and the dispatch contact form.,"[""City of San Diego Official Website"", ""Join Us Contact\n""]","[""Main navigation"", ""Leisure"", ""Resident Resources"", ""Doing Business"", ""Library"", ""Public Safety"", ""City Hall"", ""Accessibility Tools"", """", ""Footer""]","[""Recruiting Officers"", ""Dispatch Recruiting""]","[""Parks"", ""Outdoors"", ""Neighborhoods"", ""Recreational Activities"", ""Street Maintenance"", ""Plan"", ""Fix"", ""Build"", ""Programs & Events"", ""Services"", ""Kids & Teens"", ""eCollection"", ""Police"", ""Fire-Rescue"", ""Lifeguards"", ""City Officials"", ""City Government""]",[],[] 1896,https://delcopa.gov/publicrelations/releases/2021/sheriffsofficeaccreditation.html,Media Bulletins,200,"Delaware County Sheriff's Office Earns Law Enforcement Accreditation - Delaware County, Pennsylvania","","[""Delaware County Sheriff's Office Earns Law Enforcement Accreditation""]",[],"[""Public Relations Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] -1897,https://www.roseville.ca.us/news/what_s_happening_in_roseville/police_thank_local_community,Media Bulletins,200," - Police thank local community for RPAL support - City of Roseville +1897,https://www.roseville.ca.us/news/what_s_happening_in_roseville/police_thank_local_community,Media Bulletins,200," + Police thank local community for RPAL support - City of Roseville ",Residents of a newly developed Fiddyment Farm neighborhood came together on July Fourth in celebration and support of the greater Roseville community.,"[""City of Roseville""]","[""Police thank local community for RPAL support"", ""Police thank you local community for RPAL support"", ""Featured Stories""]","[""Check out our Job Fair!"", ""Anticipating the future"", ""Keeping Roseville green: waste audits in your neighborhood"", ""Food, fun & dancing - Join us at the Senior (50+) Prom"", ""Original Stories Author Panel Discusses California\u2019s Indigenous History and Future at the Maidu Museum February 17"", ""City of Roseville""]",[],[],[] 1898,http://www.longbeach.gov/police/press-releases/l-b-p-d--dui-checkpoint-proves-effective/,Media Bulletins,200,L.B.P.D. DUI CHECKPOINT PROVES EFFECTIVE,"","[""Long BeachPolice Department""]",[],[],[],[],[] 1899,https://www.sandiego.gov/department-document/police-officer-cleared-shooting-jury-finds-actions-were-reasonable,Officer Involved Shootings,200,Police Officer Cleared in Shooting; Jury Finds Actions Were Reasonable | City of San Diego Official Website,"","[""City of San Diego Official Website""]","[""Main navigation"", ""Leisure"", ""Resident Resources"", ""Doing Business"", ""Library"", ""Public Safety"", ""City Hall"", ""Accessibility Tools"", ""Police Officer Cleared in Shooting; Jury Finds Actions Were Reasonable"", ""Footer""]",[],"[""Parks"", ""Outdoors"", ""Neighborhoods"", ""Recreational Activities"", ""Street Maintenance"", ""Plan"", ""Fix"", ""Build"", ""Programs & Events"", ""Services"", ""Kids & Teens"", ""eCollection"", ""Police"", ""Fire-Rescue"", ""Lifeguards"", ""City Officials"", ""City Government""]",[],[] 1900,https://www.roundrocktexas.gov/news/police-seek-assistance-locating-robbery-suspect-3/,Media Bulletins,200,Bank robbery suspect arrested following public assistance - City of Round Rock,"",[],[],"[""Bank robbery suspect arrested following public assistance""]","[""Site Search"", ""Follow Us""]",[],[] -1901,https://www.plymouthmi.gov/government/departments/police/forms_and_documents/i_c_m_a_public_safety_reports,Annual & Monthly Reports,200," - ICMA Public Safety Reports - City of Plymouth, MI +1901,https://www.plymouthmi.gov/government/departments/police/forms_and_documents/i_c_m_a_public_safety_reports,Annual & Monthly Reports,200," + ICMA Public Safety Reports - City of Plymouth, MI ","","[""ICMA Public Safety Reports""]",[],[],[],[],[] 1902,https://alpha.austin.gov/police-oversight/notice-of-complaint-related-to-2022-0351/,Complaints & Misconduct,200,Maintenance Notice,"",[],[],[],[],[],[] 1903,https://www.stpaul.gov/departments/police/connect-with-department/minnesota-crime-alert-network,Contact Info & Agency Meta,200,Minnesota Crime Alert Network | Saint Paul Minnesota,"Minnesota Crime Alert Network The Saint Paul Police Department, Bureau of Criminal Apprehension and the Minnesota Department of Public Safety are inviting","[""\nMinnesota Crime Alert Network\n""]","[""Main Navigation"", ""Popular Topics"", ""Breadcrumb"", ""Minnesota Crime Alert Network"", ""Footer""]","[""\n You are using an unsupported browser. Please use Microsoft Edge.\n "", ""\n Contact The City\n "", ""Email Us"", ""Call 651-266-8989""]","[""Business Spotlight"", ""Featured"", ""Business Spotlight"", ""Featured""]",[],[] @@ -2197,8 +2197,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 1927,http://www.longbeach.gov/police/press-releases/fireworks-seized/,Media Bulletins,200,FIREWORKS SEIZED,"","[""Long BeachPolice Department""]",[],[],[],[],[] 1928,https://alpha.austin.gov/es/police-oversight/formal-complaint-responsibility-to-the-community-2/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] 1929,https://alpha.austin.gov/police-oversight/notice-of-complaint-related-to-2022-0014/,Complaints & Misconduct,200,Maintenance Notice,"",[],[],[],[],[],[] -1930,https://www.ci.san-ramon.ca.us/our_city/departments_and_divisions/police/victims_rights_information/survivor_of_sexual_assault,Resources,200," - Survivor of Sexual Assault - City of San Ramon +1930,https://www.ci.san-ramon.ca.us/our_city/departments_and_divisions/police/victims_rights_information/survivor_of_sexual_assault,Resources,200," + Survivor of Sexual Assault - City of San Ramon ","","[""Survivor of Sexual Assault""]","[""YOUR RIGHTS AS A SURVIVOR OF SEXUAL ASSAULT:"", ""Contact Us"", ""Useful Links""]","[""YOU HAVE THE RIGHT TO"", ""YOU HAVE THE RIGHT TO"", ""YOU HAVE THE RIGHT TO""]",[],[],[] 1931,https://www.elrenook.gov/departments/police-department/services-resources/resource-numbers/,Contact Info & Agency Meta,404,"","",,,,,, 1932,https://www.attorneygeneral.utah.gov/wp-content/uploads/2015/03/img_7489-copy-2.jpg,Media Bulletins,404,"","",,,,,, @@ -2215,18 +2215,18 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 1943,https://joinmpd.dc.gov/metropolitan-police/reserve-police-officer,Training & Hiring Info,200,Reserve Police Officer | joinmpd.dc.gov,Reserve Police Officer,"[""Reserve Police Officer""]","[""joinmpd.dc.gov"", ""Main menu"", ""Main menu"", ""Navigation""]","[""Becoming a Reserve Officer""]",[],[],[] 1944,https://alpha.austin.gov/police-oversight/notice-of-complaint-related-to-2022-0932/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] 1945,https://delcopa.gov/ojs/ojsforms/praecipetosettlediscontinue.pdf,Resources,200,"","",[],[],[],[],[],[] -1946,http://www.longbeach.gov/police/about-the-lbpd/bureaus/investigations-bureau/officer-involved-shooting-investigation-process/,Policies & Contracts,200,OFFICER INVOLVED SHOOTING INVESTIGATION PROCESS,"- OFFICER INVOLVED SHOOTING INVESTIGATION PROCESS - To demonstrate the level of investigation, review, evaluation, and actions our Department takes when an officer involved shooting occurs, an overview of the process is provided below: +1946,http://www.longbeach.gov/police/about-the-lbpd/bureaus/investigations-bureau/officer-involved-shooting-investigation-process/,Policies & Contracts,200,OFFICER INVOLVED SHOOTING INVESTIGATION PROCESS,"
+ OFFICER INVOLVED SHOOTING INVESTIGATION PROCESS + To demonstrate the level of investigation, review, evaluation, and actions our Department takes when an officer involved shooting occurs, an overview of the process is provided below: Homicide Detail detectives, field supervisors, and departmental manager
","[""Police Department""]",[],"[""Mayor"", ""City Council"", ""Rex Richardson"", ""Mary Zendejas"", ""Cindy Allen"", ""Kristina Duggan"", ""Daryl Supernaw"", ""Megan Kerr"", ""Suely Saro"", ""Roberto Uranga"", ""Al Austin"", ""Dr. Joni Ricks-Oddie"", ""Dawn McIntosh"", ""Laura L. Doud"", ""Doug Haubert"", ""Tom Modica"", ""Monique DeLaGarza"", ""City-Wide Elected Officials"", ""Appointed Officials"", ""Online Payments"", ""Online Services"", ""In-Person Services"", ""Opening a Business"", ""Doing Business With The City"", ""Resources"", ""Most Popular"", ""Online Resources"", ""Attractions"", ""Business Associations"", ""Travel Resources"", ""Departments"", ""Job Opportunities"", ""Information"", ""LBPD"", ""Employment"", ""Bureaus"", ""News & Events"", ""Crime Info"", ""How Do I"", ""How Do I"", ""Contact Us"", ""OFFICER INVOLVED SHOOTING INVESTIGATION PROCESS"", ""Do."", ""Discover."", ""Connect."", ""Ask.""]","["""", ""1st District"", ""2nd District"", ""3rd District"", ""4th District"", ""5th District"", ""6th District"", ""7th District"", ""8th District"", ""9th District"", ""City Attorney"", ""City Auditor"", ""City Prosecutor"", ""City Manager"", ""City Clerk""]","[""File a Report Online"", ""Submit a Tip"", ""Submit a Commendation"", ""File a Complaint"", ""Ride Along Program"", ""\u00a0"", ""\u00a0"", ""\u00a0"", ""\u00a0"", ""Crime Lab Survey"", ""\u00a0""]",[] 1947,https://delcopa.gov/council/2020minutes/10072020minutes.pdf,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] -1948,https://www.ci.rohnert-park.ca.us/city_hall/departments/public_works/drainage___stormwater/creeks__environmental_information/copeland_test,Not Criminal Justice Related,200," - Copeland Test - City of Rohnert Park +1948,https://www.ci.rohnert-park.ca.us/city_hall/departments/public_works/drainage___stormwater/creeks__environmental_information/copeland_test,Not Criminal Justice Related,200," + Copeland Test - City of Rohnert Park ","","[""City of Rohnert Park""]","[""Rohnert Park""]","[""Copeland Test"", ""Daily Acts is making its way to Rohnert Park!""]",[],[],[] 1949,https://champaignil.gov/2022/08/27/champaign-police-investigating-overnight-shooting-incidents/,Media Bulletins,200,Champaign Police Investigating Overnight Shooting Incidents - City of Champaign,"","[""Champaign Police Investigating Overnight Shooting Incidents""]","[""News Releases"", ""Department News""]",[],[],[],[] 1950,https://delcopa.gov/publicrelations/releases/2020/pdf/delawarecountynovemberflushotclinics_mercyfitz.pdf,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] -1951,https://www.jacksontn.gov/government/departments/police/daily_arrest_reports,Poor Data Source,200," - Daily Arrest Reports - City of Jackson, TN +1951,https://www.jacksontn.gov/government/departments/police/daily_arrest_reports,Poor Data Source,200," + Daily Arrest Reports - City of Jackson, TN ",Welcome to the official website of City of Jackson in Tennessee.,"[""City of Jackson TN"", ""City of Jackson TN""]","[""Daily Arrest Reports""]",[],[],[],[] 1952,https://alpha.austin.gov/police-oversight/2020-06-4-17/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] 1953,https://louisvilleky.gov/police/forms/submit-crime-tip,Resources,403,"","",,,,,, @@ -2288,13 +2288,13 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 2007,https://www.arlingtontx.gov/city_hall/departments/police/community/crime_prevention,Poor Data Source,404,"","",,,,,, 2008,http://www.longbeach.gov/police/press-releases/automotive-business-compliance-checks-conducted/,Media Bulletins,200,AUTOMOTIVE BUSINESS COMPLIANCE CHECKS CONDUCTED,"","[""Long BeachPolice Department""]",[],[],[],[],[] 2009,https://alpha.austin.gov/es/police-oversight/2020-09-17-7/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] -2010,https://www.ci.san-bernardino.ca.us/city_hall/police_department/online_services,Resources,200," - Online Services - City of San Bernardino +2010,https://www.ci.san-bernardino.ca.us/city_hall/police_department/online_services,Resources,200," + Online Services - City of San Bernardino ","","[""City of San Bernardino California""]","[""Online Services""]",[],[],[],[] 2011,https://www.foxcrossingwi.gov/departments/police-department/history/30712442_10155740250625958_5846323570807930880_n/,Poor Data Source,200,30712442_10155740250625958_5846323570807930880_n - Fox Crossing Fox Crossing,"",[],"[""History \u00bb 30712442_10155740250625958_5846323570807930880_n""]",[],[],[],[] 2012,https://www.mass.gov/doc/riva-albert-v-boston-police-department-related-superior-court-decision-21210/download,Court Cases,200,"","",[],[],[],[],[],[] -2013,https://police.crystalmn.gov/our_city/boards_and_commissions/parks___recreation_commission,Not Criminal Justice Related,200," - Parks and Recreation Commission - City of Crystal +2013,https://police.crystalmn.gov/our_city/boards_and_commissions/parks___recreation_commission,Not Criminal Justice Related,200," + Parks and Recreation Commission - City of Crystal ",Information related to the City of Crystal Parks & Recreation Commission.,"[""Parks and Recreation Commission""]","[""Recreation Director""]","[""Sign up for a city newsletter or notification."", ""City Hall"", ""Regular Hours:""]","[""Monday - Friday""]",[],[] 2014,https://alpha.austin.gov/es/police-oversight/notice-of-complaint-related-to-2022-0871/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] 2015,http://www.longbeach.gov/police/press-releases/robbery-suspect-arrested-and-charged-2-/,Media Bulletins,200,ROBBERY SUSPECT ARRESTED AND CHARGED(2),"","[""Long BeachPolice Department""]",[],[],[],[],[] @@ -2320,8 +2320,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 2035,https://delcopa.gov/courts/pdf/21noticetothebarpublic_boardofmanagers_juveniledetentioncenter.pdf,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] 2036,http://www.longbeach.gov/police/press-releases/juvenile-held-in-connection-with-robbery-case/,Media Bulletins,200,JUVENILE HELD IN CONNECTION WITH ROBBERY CASE,"","[""Long BeachPolice Department""]",[],[],[],[],[] 2037,http://www.longbeach.gov/police/press-releases/significant-crime-reduction-during-first-year-metro-blue-line-contract/,Media Bulletins,200,SIGNIFICANT CRIME REDUCTION DURING FIRST YEAR METRO BLUE LINE CONTRACT,"","[""Long BeachPolice Department""]",[],[],[],[],[] -2038,https://www.pleasantprairiewi.gov/departments/police/news/police_and_fire___rescue_news_archive/2017_news_releases/police_launch_community_camera_partnership_program,Media Bulletins,200," - Police Launch Community Camera Partnership Program - Village of Pleasant Prairie +2038,https://www.pleasantprairiewi.gov/departments/police/news/police_and_fire___rescue_news_archive/2017_news_releases/police_launch_community_camera_partnership_program,Media Bulletins,200," + Police Launch Community Camera Partnership Program - Village of Pleasant Prairie ","",[],"[""Police Launch Community Camera Partnership Program""]","[""Follow Us on Social Media""]",[],[],[] 2039,https://spdblotter.seattle.gov/2017/03/13/suspected-prowler-arrested-after-police-spot-him-peering-into-cars-at-downtown-garage/,Media Bulletins,200,Suspected Prowler Arrested After Police Spot Him Peering Into Cars at Downtown Garage - SPD Blotter,"","[""Suspected Prowler Arrested After Police Spot Him Peering Into Cars at Downtown Garage""]","[""Find Posts By Topic"", ""You might also like..."", ""Police"", ""City-Wide Information"", ""Top Requests"", ""Policies""]","[""Animals"", ""Assistance"", ""For Businesses"", ""Civil Rights"", ""Elected Officials"", ""Explore the City"", ""Get Involved"", ""Immigrants and Refugees"", ""Issues and Initiatives"", ""Learning and Education"", ""Public Safety"", ""Transportation and Development"", ""Technology"", ""Utilities""]","[""Browse the Archive""]",[],[] 2040,http://www.norwoodma.gov/departments/police/report_a_tip.php,Resources,200,"Welcome to Town of Norwood, Massachusetts","Welcome to Town of Norwood, Massachusetts","[""Report a Tip""]",[],[],[],[],[] @@ -2337,8 +2337,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 2050,https://spdblotter.seattle.gov/2022/06/30/police-arrest-woman-for-shooting-outside-capitol-hill-apartment/,Media Bulletins,200,Police Arrest Woman for Shooting Outside Capitol Hill Apartment - SPD Blotter,"","[""Police Arrest Woman for Shooting Outside Capitol Hill Apartment""]","[""Find Posts By Topic"", ""You might also like..."", ""Police"", ""City-Wide Information"", ""Top Requests"", ""Policies""]","[""Animals"", ""Assistance"", ""For Businesses"", ""Civil Rights"", ""Elected Officials"", ""Explore the City"", ""Get Involved"", ""Immigrants and Refugees"", ""Issues and Initiatives"", ""Learning and Education"", ""Public Safety"", ""Transportation and Development"", ""Technology"", ""Utilities""]","[""Browse the Archive""]",[],[] 2051,https://www.mass.gov/info-details/audit-of-the-office-of-the-commissioner-of-probation-objectives-scope-and-methodology,Not Criminal Justice Related,200,"Audit of the Office of the Commissioner of Probation Objectives, Scope, and Methodology | Mass.gov",An overview of the purpose and process of auditing the Office of the Commissioner of Probation.,"[""\nAudit of the Office of the Commissioner of Probation Objectives, Scope, and Methodology\n""]","[""Table of Contents\n for the audit, Audit of the Office of the Commissioner of Probation (OCP)"", ""Appendix\n "", ""Table of Contents"", ""Overview\n "", ""Enrollment of GPS and SCRAM Participants\n "", ""Monitoring of GPS Alerts\n "", ""Monitoring of SCRAM Alerts\n "", ""Review of Juvenile Record Requests\n "", ""Data Reliability\n "", ""Help Us Improve Mass.gov with your feedback""]",[],[],[],[] 2052,https://www.mass.gov/doc/national-environmental-policy-act-review-scoping-summary-report-i-90-allston-multimodal-project/download,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] -2053,https://www.pleasantprairiewi.gov/departments/police/news/police_and_fire___rescue_news_archive/2020_news_releases/police_continue_manhunt,Media Bulletins,200," - Police Continue Manhunt - Village of Pleasant Prairie +2053,https://www.pleasantprairiewi.gov/departments/police/news/police_and_fire___rescue_news_archive/2020_news_releases/police_continue_manhunt,Media Bulletins,200," + Police Continue Manhunt - Village of Pleasant Prairie ","",[],"[""Police Continue Manhunt""]","[""Follow Us on Social Media""]",[],[],[] 2054,http://www.longbeach.gov/police/press-releases/felony-suspect-arrested/,Media Bulletins,200,FELONY SUSPECT ARRESTED,"","[""Long BeachPolice Department""]",[],[],[],[],[] 2055,https://southamptontownnypolice.gov/1543/policies-for-the-zba,Policies & Contracts,200,"Policies for the ZBA | Southampton, NY - Official Website","","[""\r\n\r\nPolicies for the ZBA \t\t""]",[],"[""Loading"", ""Site Tools"", ""Contact Us"", ""Site Links""]",[],[],[] @@ -2355,8 +2355,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 2066,https://www.coppelltx.gov/555/nancy-monroe,Not Criminal Justice Related,404,"","",,,,,, 2067,http://www.ryepolice.us/wp-content/uploads/wallis-sands-half-marathon-route.jpg,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] 2068,http://www.longbeach.gov/police/press-releases/murder-orange-and-washington/,Media Bulletins,200,MURDER-Orange and Washington,"","[""Long BeachPolice Department""]",[],[],[],[],[] -2069,https://www.arlingtontx.gov/news/my_arlington_t_x/news_archive/2014_archived_news/october_2014/uta_spotlight_arlington_police_students_celebrate,Media Bulletins,200," - UTA Spotlight: Arlington Police, Students Celebrate National Night Out - City of Arlington +2069,https://www.arlingtontx.gov/news/my_arlington_t_x/news_archive/2014_archived_news/october_2014/uta_spotlight_arlington_police_students_celebrate,Media Bulletins,200," + UTA Spotlight: Arlington Police, Students Celebrate National Night Out - City of Arlington ","","[""YOUR COMMUNITY NEWS AND EVENTS"", ""City of Arlington""]","[""UTA Spotlight: Arlington Police, Students Celebrate National Night Out""]",[],[],[],[] 2070,https://police.greenvillesc.gov/faq.aspx?qid=222,Complaints & Misconduct,200,FAQs • How can I file a complaint about an officer?,"",[],"[""\n\u25bc\r\nPolice Department\t\t""]","[""Loading"", ""Categories"", ""Live Edit""]",[],[],[] 2071,https://beaumonttexas.gov/police-investigating-aggravated-assault-4600-block-detroit/,Poor Data Source,404,"","",,,,,, @@ -2406,8 +2406,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 2115,https://www.naperville.il.us/services/naperville-police-department/programs-and-services/internship-program/,Training & Hiring Info,200,Internship Program | The City of Naperville,"The NPD Internship Program provides an inclusive, high-quality, safe and advanced educational experience for qualified individuals considering a career in the field of law enforcement.","[""Internship Program""]","[""Programs and Services "", ""Mission Statement"", ""Intern Testimonials"", ""\nNaperville Police Department\n""]","[""Explore""]",[],"[""Helping Residents Build a Better Community"", ""Resources for Doing Business in Naperville""]",[] 2116,https://www.antioch.il.gov/wpfb-file/11-02-16-police-pension-agenda-pdf-3/,Poor Data Source,200,"11-02-16 Police Pension Agenda - Antioch, IL",10564 11 02 16 police pension agenda pdf commissions fund agendas 2016 1477667300 c4564de1e4399e021859da3cf353db29 213x300 _yl6booqzxldd thumb jpg 10 28 08 20 0 pdf application trustees mary c dominiak ed macek jerry t johnson scott a pierce jay jozwiak ted p poulos lawrence m hanson mayor lori k romine village clerk agenda of antioch lake,"[""11-02-16 Police Pension Agenda""]",[],[],[],[],[] 2117,https://police.crystalmn.gov/how_do_i_/report_an_issue/street_light_outage,Not Criminal Justice Related,200,Xcel Energy,"",[],[],[],[],[],[] -2118,https://www.gurnee.il.us/government/departments/police-department/community-involvement/gurnee-citizen-police-academy/gurnee-citizen-police-academy/week-12,Training & Hiring Info,200," - Gurnee Citizen Police Academy +2118,https://www.gurnee.il.us/government/departments/police-department/community-involvement/gurnee-citizen-police-academy/gurnee-citizen-police-academy/week-12,Training & Hiring Info,200," + Gurnee Citizen Police Academy ","","[""Police Department""]","[""Gurnee Citizen Police Academy"", ""Youth Citizen Police Academy""]","[""Now accepting applications for the Spring 2024 session!"", ""Click here to register for the Gurnee Citizen Police Academy"", ""Village Hall""]",[],[],[] 2119,https://biloxi.ms.us/police-fire-showcase-is-saturday-at-point-cadet/,Not Criminal Justice Related,200,"Police, fire showcase is Saturday at Point Cadet","","[""Police, fire showcase is Saturday at Point Cadet""]",[],[],[],[],[] 2120,https://www.southamptontownnypolice.gov/faq.aspx?qid=413,Resources,200,FAQs • How will you alert the public on updates on beach dri,"",[],"[""\n\u25bc\r\nTrustees - Endangered Species\t\t""]","[""Loading"", ""Site Tools"", ""Categories"", ""Live Edit"", ""Contact Us"", ""Site Links""]",[],[],[] @@ -2428,8 +2428,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 2135,https://norfolkne.gov/assets/site/documentcentral/police/2021-daily-reports/summary/080321summary.pdf,Daily Activity Logs,200,"","",[],[],[],[],[],[] 2136,http://www.longbeach.gov/police/press-releases/dui---driver-s-license-checkpoint-planned-this-weekend/,Media Bulletins,200,DUI - DRIVER'S LICENSE CHECKPOINT PLANNED THIS WEEKEND,"","[""Long BeachPolice Department""]",[],[],[],[],[] 2137,https://alpha.austin.gov/police-oversight/formal-complaint-responsibility-to-know-and-compl-2/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] -2138,https://www.gurnee.il.us/government/departments/police-department/community-involvement/gurnee-citizen-police-academy/gurnee-citizen-police-academy/week-4,Media Bulletins,200," - Gurnee Citizen Police Academy +2138,https://www.gurnee.il.us/government/departments/police-department/community-involvement/gurnee-citizen-police-academy/gurnee-citizen-police-academy/week-4,Media Bulletins,200," + Gurnee Citizen Police Academy ","","[""Police Department""]","[""Gurnee Citizen Police Academy"", ""Youth Citizen Police Academy""]","[""Now accepting applications for the Spring 2024 session!"", ""Click here to register for the Gurnee Citizen Police Academy"", ""Village Hall""]",[],[],[] 2139,https://www.roundrocktexas.gov/wp-content/uploads/2019/12/coffee_cop.png,Poor Data Source,200,"","",[],[],[],[],[],[] 2140,http://www.longbeach.gov/police/press-releases/robbery-suspect-arrested-and-charged-1-/,Media Bulletins,200,ROBBERY SUSPECT ARRESTED AND CHARGED(1),"","[""Long BeachPolice Department""]",[],[],[],[],[] @@ -2444,8 +2444,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 2149,https://delcopa.gov/publicrelations/releases/18pdfs/18efilingprogramoct11.pdf,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] 2150,http://www.longbeach.gov/police/press-releases/traffic-fatality-7th-and-olive/,Media Bulletins,200,TRAFFIC FATALITY 7TH AND OLIVE,"","[""Long BeachPolice Department""]",[],[],[],[],[] 2151,https://www.antioch.il.gov/wpfb-file/11-07-16-police-and-fire-agenda-pdf-5/,Poor Data Source,200,"11-07-16 Police And Fire Agenda - Antioch, IL",11 07 16 police and fire agenda pdf commissions commission agendas 2016 2017 05 17 08 41 32 0000,"[""11-07-16 Police And Fire Agenda""]",[],[],[],[],[] -2152,https://sanramon.ca.gov/policenews,List of Data Sources,200," - Police News - City of San Ramon +2152,https://sanramon.ca.gov/policenews,List of Data Sources,200," + Police News - City of San Ramon ","","[""Police News""]","[""Contact Us"", ""Useful Links""]","["">>>Read Archived Police News""]",[],[],[] 2153,https://spdblotter.seattle.gov/2015/06/19/police-sting-blackmailer-after-she-tries-to-extort-woman-over-lurid-cellphone-pics/,Media Bulletins,200,Police Sting Blackmailer After She Tries to Extort Woman Over Lurid Cellphone Pics - SPD Blotter,"","[""Police Sting Blackmailer After She Tries to Extort Woman Over Lurid Cellphone Pics""]","[""Find Posts By Topic"", ""You might also like..."", ""Police"", ""City-Wide Information"", ""Top Requests"", ""Policies""]","[""Animals"", ""Assistance"", ""For Businesses"", ""Civil Rights"", ""Elected Officials"", ""Explore the City"", ""Get Involved"", ""Immigrants and Refugees"", ""Issues and Initiatives"", ""Learning and Education"", ""Public Safety"", ""Transportation and Development"", ""Technology"", ""Utilities""]","[""Browse the Archive""]",[],[] 2154,https://www.dps.arkansas.gov/law-enforcement/arkansas-state-police/divisions/highway-patrol/troop-j-commander/,Personnel Records,200,Troop J Commander - Arkansas Department of Public Safety,"","["" Flag Status""]","[""Troop J Commander"", ""Contact ASP"", ""Helpful ASP links"", ""Connect with ASP"", ""Respect. Integrity. \nCUSTOMER SERVICE. TEAMWORK. \nSERVANT LEADERSHIP. \nCONTINUOUS IMPROVEMENT"", """", ""\u00a9 2024 All rights Reserved. Arkansas.gov ""]","[""Captain Kyle Drown""]",[],"[""About DPS"", ""DPS Links"", ""DPS Address"", ""Your Arkansas.gov"", ""Top Online Services"", ""Helpful Information""]",[] @@ -2468,16 +2468,16 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 2171,https://delcopa.gov/publicrelations/releases/2022/pacareerlinkdelcohostsfreecareerworkshopthroughjune.html,Not Criminal Justice Related,200,"PA CareerLink® Delaware County Hosts Free Career Workshops April Through June - Delaware County, Pennsylvania","","[""PA CareerLink\u00ae Delaware County Hosts Free Career Workshops April Through June""]",[],"[""Public Relations Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] 2172,http://www.longbeach.gov/police/press-releases/reward-issued-in-2014-case/,Media Bulletins,200,REWARD ISSUED IN 2014 CASE,"","[""Long BeachPolice Department""]",[],[],[],[],[] 2173,https://www.hayward-ca.gov/discover/news/may21/police-blotter-may-2-8-2021,Media Bulletins,200,"Police Blotter: May 2-8, 2021 | City of Hayward - Official website","STATISTICAL HIGHLIGHTSMay 2-8, 2021 Weekly Arrests (Includes cite/released):37 Homicide 0Weekly Calls for Service: 2,101 Assault—Great Bodily Injury 2Weekly Reports Taken:193 Burglary— Nonresidential 4Weekly Complaints(against HPD):0 Burglary—Residential 1Weekly Calls Received:5,541 Theft 18This data is subject to change and based on crimes that were reported to have occurred","[""Police Blotter: May 2-8, 2021""]","[""Look Deeper"", ""Welcome home"", ""Where opportunity lives"", ""Find what you need. Fast."", ""Working for You"", ""Your Hayward Environment"", ""You are here. So is everything else."", ""Search form""]",[],"[""STATISTICAL HIGHLIGHTS"", ""May 2-8, 2021"", ""\u00a0"", ""\u00a0"", ""\u00a0 \u00a0\u00a0"", ""Significant Incidents"", ""Re-CAP: Hayward\u2019s Updated Climate Action Plan (CAP)"", ""Try induction cooking for free through Ava Community Energy\u2019s Induction Cooktop Lending Program!"", ""The City of Hayward\u2019s Fight Against Food Waste"", ""Decoding Plastic Recycling In California"", ""Keep Hayward Clean and Green with Adopt-A-Block!"", ""City Hall and Nonessential Services Closures: Monday, Feb 12 and Monday, Feb. 19"", ""City Hall and Nonessential Services Closure: Monday, Jan. 15, 2024"", ""Library Closure January 15, 2024"", ""Library Closure: December 23 2023 - January 1 2024"", ""Library closure: November 23 - November 26, 2023."", ""YOU ARE HERE.SO IS EVERYTHING ELSE."", ""Related News"", ""Police Blotter: December 3-9, 2023"", ""Police Blotter - November 26-December 2, 2023"", ""Police Blotter - November 19-25, 2023"", ""Report\n Problems"", ""Ask\n Questions"", ""Make a\n Suggestion"", ""Translate"", ""Search""]",[],[] -2174,https://www.knoxvilletn.gov/government/city_departments_offices/police_department/investigations_bureau/special_crimes_unit/domestic_violence_help,Resources,200," - Domestic Violence Help - City of Knoxville +2174,https://www.knoxvilletn.gov/government/city_departments_offices/police_department/investigations_bureau/special_crimes_unit/domestic_violence_help,Resources,200," + Domestic Violence Help - City of Knoxville ",police*,"[""Domestic Violence Help"", ""Police Chief""]",[],[],[],[],[] 2175,https://norfolkne.gov/assets/site/documentcentral/police/2021-daily-reports/blotter/042021blotter.pdf,Media Bulletins,200,"","",[],[],[],[],[],[] -2176,https://www.pleasantprairiewi.gov/departments/police/news/police_and_fire___rescue_news_archive/2021_news_releases/police_announce_promotions,Media Bulletins,200," - Police Announce Promotions - Village of Pleasant Prairie +2176,https://www.pleasantprairiewi.gov/departments/police/news/police_and_fire___rescue_news_archive/2021_news_releases/police_announce_promotions,Media Bulletins,200," + Police Announce Promotions - Village of Pleasant Prairie ","",[],"[""Police Announce Promotions""]","[""Follow Us on Social Media""]",[],[],[] 2177,https://www.lynchburgvapolice.gov/wp-content/uploads/2021/06/lpd-seal-e1662580813573.png,Poor Data Source,404,"","",,,,,, -2178,https://www.knoxvilletn.gov/government/city_departments_offices/civil_service_department/how_to_apply_for_police,Training & Hiring Info,200," - How to Apply for Police Officer - City of Knoxville +2178,https://www.knoxvilletn.gov/government/city_departments_offices/civil_service_department/how_to_apply_for_police,Training & Hiring Info,200," + How to Apply for Police Officer - City of Knoxville ",civil*,"[""How to Apply for Police Officer"", ""Civil Service Director""]","[""Civil Service is currently accepting applications for Police Officer Recruit, Lateral Entry Recruit, and Cadet!\n\nClick HERE to apply!""]","[""HERE""]",[],[],[] 2179,https://norfolkne.gov/assets/site/documentcentral/police/2021-daily-reports/blotter/020921blotter.pdf,Media Bulletins,200,"","",[],[],[],[],[],[] 2180,https://delcopa.gov/planning/developmentreview.html,Not Criminal Justice Related,200,Development Review,"","[""Development Review""]",[],"[""I\u2019m interested in\u2026"", ""Planning Department Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] @@ -2580,8 +2580,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 2277,https://coloradosprings.gov/police-department/article/news/suspect-multiple-armed-robberies-arrested,Media Bulletins,200,Suspect in multiple armed robberies arrested | City of Colorado Springs,"","[""\nSuspect in multiple armed robberies arrested\n""]","[""Search"", ""Colorado Springs Weekly"", ""GoCOS!"", ""Connect with @CityofCOS""]",[],[],"[""REPORT ONLINE""]",[] 2278,https://alpha.austin.gov/en/police-oversight/formal-complaints-opo-processed-on-june-5-purpose-and-scopecommunity-policing-and-other-policy-violations/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] 2279,http://www.longbeach.gov/police/press-releases/murder-investigation---1200-block-of-chestnut/,Media Bulletins,200,MURDER INVESTIGATION - 1200 BLOCK OF CHESTNUT,"","[""Long BeachPolice Department""]",[],[],[],[],[] -2280,https://www.desmoineswa.gov/departments/police/online_crime_reporting/spanish_online_police_reporting,Poor Data Source,200," - Spanish Online Police Reporting - City of Des Moines, WA +2280,https://www.desmoineswa.gov/departments/police/online_crime_reporting/spanish_online_police_reporting,Poor Data Source,200," + Spanish Online Police Reporting - City of Des Moines, WA ","","[""City of Des Moines, WA""]","[""Spanish Online Police Reporting""]",[],[],[],[] 2281,https://www.trinidad.co.gov/police-department,Poor Data Source,404,"","",,,,,, 2282,https://www.newcarrolltonmd.gov/government/departments/police_department/ncpd_news,List of Data Sources,404,"","",,,,,, @@ -2769,8 +2769,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 2464,http://www.longbeach.gov/police/press-releases/l-b-p-d--saturation-patrol-proves-effective/,Media Bulletins,200,L.B.P.D. SATURATION PATROL PROVES EFFECTIVE,"","[""Long BeachPolice Department""]",[],[],[],[],[] 2465,http://www.longbeach.gov/police/press-releases/dui-drivers-license-checkpoint-planned-this-weekend/,Media Bulletins,200,DUI DRIVERS LICENSE CHECKPOINT PLANNED THIS WEEKEND,"","[""Long BeachPolice Department""]",[],[],[],[],[] 2466,http://www.longbeach.gov/police/press-releases/robbery-suspects-arrested/,Media Bulletins,200,ROBBERY SUSPECTS ARRESTED,"","[""Long BeachPolice Department""]",[],[],[],[],[] -2467,https://www.arlingtontx.gov/news/my_arlington_t_x/news_archive/2017_archived_news/september_2017/national_night_out_arlington_police_on_oct_3_2017,Media Bulletins,200," - Ask Arlington: Enjoy National Night Out with Arlington Police on Oct. 3, 2017 - City of Arlington +2467,https://www.arlingtontx.gov/news/my_arlington_t_x/news_archive/2017_archived_news/september_2017/national_night_out_arlington_police_on_oct_3_2017,Media Bulletins,200," + Ask Arlington: Enjoy National Night Out with Arlington Police on Oct. 3, 2017 - City of Arlington ","","[""YOUR COMMUNITY NEWS AND EVENTS"", ""City of Arlington""]","[""Ask Arlington: Enjoy National Night Out with Arlington Police on Oct. 3, 2017""]",[],[],[],[] 2468,https://www.columbus.in.gov/event/columbus-police-review-board/,Poor Data Source,404,"","",,,,,, 2469,https://spdblotter.seattle.gov/2012/02/06/the-seattle-police-foundation-thanks-the-seattle-hotel-association-for-hosting-the-evening-of-hope-gala/,Media Bulletins,200,The Seattle Police Foundation thanks the Seattle Hotel Association for hosting the Evening of Hope gala - SPD Blotter,"","[""The Seattle Police Foundation thanks the Seattle Hotel Association for hosting the Evening of Hope gala""]","[""Find Posts By Topic"", ""You might also like..."", ""Police"", ""City-Wide Information"", ""Top Requests"", ""Policies""]","[""Animals"", ""Assistance"", ""For Businesses"", ""Civil Rights"", ""Elected Officials"", ""Explore the City"", ""Get Involved"", ""Immigrants and Refugees"", ""Issues and Initiatives"", ""Learning and Education"", ""Public Safety"", ""Transportation and Development"", ""Technology"", ""Utilities""]","[""Browse the Archive""]",[],[] @@ -2780,14 +2780,14 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 2473,https://www.richmondindiana.gov/docs/current-city-police-districts-map,Geographic,200,Current City Police Districts Map,"","[""Documents, Forms, & Transactions""]","[""Current City Police Districts Map"", ""Stay Connected""]","[""""]","[""Due Date"", ""Contact"", ""City of Richmond""]",[],[] 2474,https://delcopa.gov/publicrelations/releases/2022/delcopollingplacesfinalizedformay17primary.html,Not Criminal Justice Related,200,"Delaware County Polling Places Finalized for the May 17 Primary Election - Delaware County, Pennsylvania","","[""Delaware County Polling Places Finalized for the May 17 Primary Election""]",[],"[""Public Relations Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]","[""Only registered Republicans and Democrats may participate at this Primary"", ""Additional Resources: The Election Hotline, Voter Service Center and the Delco Votes! website""]",[],[] 2475,https://brookfieldil.gov/publication/42413-april-24-2013-police-pension-board/,Poor Data Source,404,"","",,,,,, -2476,https://ci.san-bernardino.ca.us/city_hall/police_department/crime_statistics/about_ucr_statistics/arson_statistics/arson_statistics-2018,Crime Statistics,200," - Arson Statistics - 2018 - City of San Bernardino +2476,https://ci.san-bernardino.ca.us/city_hall/police_department/crime_statistics/about_ucr_statistics/arson_statistics/arson_statistics-2018,Crime Statistics,200," + Arson Statistics - 2018 - City of San Bernardino ","","[""City of San Bernardino California""]","[""Arson Statistics - 2018""]",[],[],[],[] 2477,https://www.roseville.ca.us/news/archive_news/2017_archive_news/police_digest__december_15__2017,Poor Data Source,404,"","",,,,,, -2478,http://www.greenvillenc.gov/government/police/community-services-and-crime-prevention/cops-and-barbers,Contact Info & Agency Meta,200," - - Cops and Barbers | Greenville, NC - +2478,http://www.greenvillenc.gov/government/police/community-services-and-crime-prevention/cops-and-barbers,Contact Info & Agency Meta,200," + + Cops and Barbers | Greenville, NC + ","","[""Greenville, NC"", ""Cops and Barbers""]","[""Jump to subpage..."", ""Related Links""]",[],[],[],[] 2479,https://delcopa.gov/publicrelations/releases/2020/courtsgovcenter.html,Not Criminal Justice Related,200,Government Center Closed to the public on March 16/Limited Court Operations March 16 and 17,"","[""Government Center Closed to the public on March 16/Limited Court Operations March 16 and 17""]",[],"[""Public Relations Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] 2480,https://coloradosprings.gov/police-department/article/news/homicide-investigation-6600-block-bugle-dr,Media Bulletins,200,Homicide Investigation: 6600 Block of Bugle Dr. | City of Colorado Springs,"","[""\nHomicide Investigation: 6600 Block of Bugle Dr.\n""]","[""Search"", ""Colorado Springs Weekly"", ""GoCOS!"", ""Connect with @CityofCOS""]",[],[],"[""REPORT ONLINE""]",[] @@ -2800,8 +2800,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 2487,https://beaverpa.us/a-message-from-the-police-department-2/,Poor Data Source,404,"","",,,,,, 2488,https://delcopa.gov/ojs/ojsforms/15noticeofproposedrelocation.pdf,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] 2489,http://lafayettepolice.us/2359/brown-street,Not Criminal Justice Related,200,"Brown Street | Lafayette, IN - Official Website","","[""\r\n\r\nBrown Street\t\t""]","[""Brown Street Sewer""]","[""Loading"", ""Contact Us"", ""FAQs"", ""Site Links""]",[],[],[] -2490,https://www.bedminster.us/police_fire_rescue/pottersville_volunteer_fire_co_,Not Criminal Justice Related,200," - Pottersville Volunteer Fire Co. - Township of Bedminster +2490,https://www.bedminster.us/police_fire_rescue/pottersville_volunteer_fire_co_,Not Criminal Justice Related,200," + Pottersville Volunteer Fire Co. - Township of Bedminster ","","[""Bedminster Township""]","[""Pottersville Volunteer Fire Co.""]","[""Bedminster Township""]",[],[],[] 2491,https://brookfieldil.gov/publication/043009-april-30-2009-police-pension-board/,Poor Data Source,404,"","",,,,,, 2492,https://www.goldenbeach.us/police-department/k-9-unit/,Contact Info & Agency Meta,200,k-9 Unit – Golden Beach: A Town Unlike Any Other,"","[""\r\n\t\t\t\t\t\t\tk-9 Unit\t\t\t\t\t\t""]",[],"[""Quick Links"", ""Documents"", ""About Golden Beach"", ""Phone Numbers"", ""Town Hall ""]","[""\nAnnual Report 2022\n"", ""\nAnnual Report 2021\n"", ""\nAnnual Report 2020\n"", ""\nAnnual report for 2019\n""]",[],[] @@ -2810,8 +2810,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 2495,https://norfolkne.gov/assets/site/documentcentral/police/2021-daily-reports/summary/102521summary1.pdf,Crime Statistics,200,"","",[],[],[],[],[],[] 2496,https://www.roundrocktexas.gov/city-departments/police/divisions/,Contact Info & Agency Meta,200,Divisions - City of Round Rock,"","[""Divisions""]",[],"[""Community Affairs"", ""Office of the Chief"", ""Criminal Investigations Division"", ""Patrol Division"", ""Special Operations Division"", ""Training Division"", ""Support Services"", ""Round Rock Police Department""]","[""Site Search"", ""Follow Us""]",[],[] 2497,https://delcopa.gov/planning/pdf/agendas/2022/agenda202201.pdf,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] -2498,https://www.ci.northville.mi.us/services/police_department/police_news/joashua_clines_joins_police_dept_,Media Bulletins,200," - Joashua Clines joins Police Dept. - City of Northville, MI +2498,https://www.ci.northville.mi.us/services/police_department/police_news/joashua_clines_joins_police_dept_,Media Bulletins,200," + Joashua Clines joins Police Dept. - City of Northville, MI ",Officer Clines has a degree from Auburn University in his home state of Alabama but his true calling is serving as a police officer.,"[""Joashua Clines joins Police Dept.""]",[],[],[],[],[] 2499,https://southamptontownnypolice.gov/faq.aspx?qid=102,Not Criminal Justice Related,200,"FAQs • What land can be preserved through the TDR program, a","",[],"[""\n\u25bc\r\nTransfer of Development Rights\t\t""]","[""Loading"", ""Site Tools"", ""Categories"", ""Live Edit"", ""Contact Us"", ""Site Links""]",[],[],[] 2500,https://www.ci.auburn.in.us/wp-content/uploads/2017/11/auburnpolicecar-1000x650.jpg,Poor Data Source,404,"","",,,,,, @@ -2857,8 +2857,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 2538,https://alpha.austin.gov/police-oversight/formal-complaint-purpose-and-scope-impartial-attitude-and-courtesy-secure-and-identify-witnesses-and-other-policy-violations/,Complaints & Misconduct,200,Maintenance Notice,"",[],[],[],[],[],[] 2539,https://www.southamptontownnypolice.gov/1370/2020-budgets,List of Data Sources,200,"2020 Budgets | Southampton, NY - Official Website","","[""\r\n\r\n2020 Budgets \t\t""]",[],"[""Loading"", ""Site Tools"", ""2020 Budget"", ""Contact Us"", ""Site Links""]","[""\r\n\t\t\t\t\t2020 Adopted Budget - Capital\r\n\t\t\t\t"", ""\r\n\t\t\t\t\t2020 Adopted Budget - Operating\r\n\t\t\t\t"", ""\r\n\t\t\t\t\t2020 Tentative Budget - Operating\r\n\t\t\t\t"", ""\r\n\t\t\t\t\t2020 Tentative Budget - Capital\r\n\t\t\t\t""]",[],[] 2540,https://www.coppelltx.gov/1083/sunshine-room,Not Criminal Justice Related,200,"Sunshine Room | Coppell, TX","","[""\r\n\r\nSunshine Room\t\t""]","[""Hours"", ""Pricing"", ""Policies""]","[""Loading""]",[],[],[] -2541,https://www.jacksontn.gov/government/departments/police/command_staff/captain_jeff_shepard,Personnel Records,200," - Captain Jeff Shepard - City of Jackson, TN +2541,https://www.jacksontn.gov/government/departments/police/command_staff/captain_jeff_shepard,Personnel Records,200," + Captain Jeff Shepard - City of Jackson, TN ",Welcome to the official website of City of Jackson in Tennessee.,"[""City of Jackson TN"", ""City of Jackson TN""]","[""Captain Jeff Shepard""]",[],[],[],[] 2542,https://www.antioch.il.gov/wpfb-file/12-06-14-police-and-fire-agenda-pdf-3/,Poor Data Source,200,"12-06-14 Police And Fire Agenda - Antioch, IL",9050 12 06 14 police and fire agenda pdf commissions commission agendas 2014 1417710895 78bd0244bc4e662012baf7d5e1f731d0 219x300 _g9ufrmyiaujy thumb jpg 04 11 34 55 0 pdf application trustees dennis b crosby jay jozwiak mary c dominiak scott a pierce jerry t johnson ted p poulos lawrence m hanson mayor lori k folbrick village clerk notice of,"[""12-06-14 Police And Fire Agenda""]",[],[],[],[],[] 2543,https://delcopa.gov/treasurer/propertyassessment.html,Not Criminal Justice Related,200,"Property Assessment - Delaware County, Pennsylvania","","[""Property Assessment""]",[],"[""Treasurer Navigation"", ""Contact Us"", ""Press Releases"", ""Quick Links"", ""About Delaware County""]",[],[],[] @@ -2908,15 +2908,15 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 2587,http://www.longbeach.gov/police/press-releases/traffic-fatality-21-/,Media Bulletins,200,Traffic Fatality(21),"","[""Long BeachPolice Department""]",[],[],[],[],[] 2588,https://oceancitymd.gov/oc/ocean-city-police-investigating-fatal-pedestrian-collision/,Media Bulletins,200,"Ocean City Police Investigating Fatal Pedestrian Collision – Town of Ocean City, Maryland","",[],"[""Post navigation""]","[""Related posts""]",[],[],[] 2589,https://www.sandiego.gov/department-document/police-chief-recruitment-process-update-august-22-2017,Training & Hiring Info,200,"Police Chief Recruitment Process - Update (August 22, 2017) | City of San Diego Official Website","","[""City of San Diego Official Website""]","[""Main navigation"", ""Leisure"", ""Resident Resources"", ""Doing Business"", ""Library"", ""Public Safety"", ""City Hall"", ""Accessibility Tools"", ""Police Chief Recruitment Process - Update (August 22, 2017)"", ""Footer""]",[],"[""Parks"", ""Outdoors"", ""Neighborhoods"", ""Recreational Activities"", ""Street Maintenance"", ""Plan"", ""Fix"", ""Build"", ""Programs & Events"", ""Services"", ""Kids & Teens"", ""eCollection"", ""Police"", ""Fire-Rescue"", ""Lifeguards"", ""City Officials"", ""City Government""]",[],[] -2590,https://www.arlingtontx.gov/news/my_arlington_t_x/news_archive/2016_archived_news/december_2016/volunteer_for_arlington_police_department_s_dog,Not Criminal Justice Related,200," - Volunteer for Arlington Police Department’s Dog Walker Watch Program - City of Arlington +2590,https://www.arlingtontx.gov/news/my_arlington_t_x/news_archive/2016_archived_news/december_2016/volunteer_for_arlington_police_department_s_dog,Not Criminal Justice Related,200," + Volunteer for Arlington Police Department’s Dog Walker Watch Program - City of Arlington ","","[""YOUR COMMUNITY NEWS AND EVENTS"", ""City of Arlington""]","[""Volunteer for Arlington Police Department\u2019s Dog Walker Watch Program""]",[],[],[],[] 2591,https://alpha.austin.gov/en/police-oversight/notice-of-complaint-related-to-2022-0721/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] 2592,http://www.longbeach.gov/police/press-releases/officer-involved-shooting3/,Media Bulletins,200,OFFICER INVOLVED SHOOTING,"","[""Long BeachPolice Department""]",[],[],[],[],[] 2593,http://www.longbeach.gov/police/press-releases/traffic-fatality---lakewood-blvd-and-sb-405-fwy/,Media Bulletins,200,TRAFFIC FATALITY - LAKEWOOD BLVD AND SB 405 FWY,"","[""Long BeachPolice Department""]",[],[],[],[],[] 2594,https://www.wakeforestnc.gov/police/public-information,Resources,200,"Public Information | Town of Wake Forest, NC","News MediaTown of Wake Forest Communications & Public Affairs Director Bill Crabtree serves as the news media's main point of contact for the Wake Forest Police Department. We are committed to ensuring that the public is informed with current and accurate information about the Wake Forest Police Department's activities, strategies, and policies. We believe that transparency is","[""Public Information""]","[""seminary2.jpg"", ""Search form"", ""You are here""]","[""News Media"", ""AMBER Alert"", ""Firing Range"", ""News Releases\u00a0"", ""Paying Parking Tickets"", ""Police to Citizen (P2C)"", ""Precious Metals Permits\u00a0"", ""Property Collection\u00a0"", ""Silver Alert\u00a0"", ""Urban Archery Application"", ""Application for Permit to Sell or Solicit""]",[],[],[] -2595,https://www.arlingtontx.gov/news/my_arlington_t_x/news_archive/2017_archived_news/march_2017/february_2017_arlington_police_community,Media Bulletins,200," - February 2017 Arlington Police Community Newsletter Available - City of Arlington +2595,https://www.arlingtontx.gov/news/my_arlington_t_x/news_archive/2017_archived_news/march_2017/february_2017_arlington_police_community,Media Bulletins,200," + February 2017 Arlington Police Community Newsletter Available - City of Arlington ","","[""YOUR COMMUNITY NEWS AND EVENTS"", ""City of Arlington""]","[""February 2017 Arlington Police Community Newsletter Available""]",[],[],[],[] 2596,http://www.tampa.gov/news/tampa-police-investigate-shooting-genesee-st-76411,Media Bulletins,200,Tampa Police Investigate Shooting on Genesee St | City of Tampa,"At 3:00 PM Friday afternoon, Tampa Police responded to the report of gunshots in the 3400 block of E. Genesee St. Officers arrived to find an adult male victim, who was transported to a nearby hospital, listed in stable condition. Anyone with information is asked to contact Crimestoppers of Tampa Bay at 800.873.TIPS. It is still early in the investigation and updates will be provided as they become available.","[""Tampa Police Investigate Shooting on Genesee St\n""]","[""Information Resources"", ""\nLatest News\n"", ""Key Services"", ""Report A Problem"", ""Contact"", ""Connect With Us""]",[],[],[],[] 2597,https://cityofpowell.us/powell-police-officer-audrey-wilt-named-2022-cit-officer-of-the-year-by-delaware-morrow-mental-health-recovery-services-board/,Media Bulletins,200,"City of Powell, Ohio | Powell Police Officer Audrey Wilt Named 2022 CIT Officer of the Year by Delaware-Morrow Mental Health & Recovery Services Board",Officer Audrey Wilt named 2022 CIT Officer of the Year by the Delaware-Morrow Mental Health & Recovery Services Board.,"[""\n Powell Police Officer Audrey Wilt Named 2022 CIT Officer of the Year by Delaware-Morrow Mental Health & Recovery Services Board\n \n ""]","[""CONTACT INFO\n"", ""HELPFUL LINKS"", ""\n LET'S CONNECT\n ""]","[""you're at home in Powell""]","[""614.885.5380"", ""47 Hall Street, Powell, OH 43065"", ""Signup for our newsletter""]",[],[] @@ -2924,8 +2924,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 2599,https://southamptontownnypolice.gov/1624/public-information,Not Criminal Justice Related,200,"Public Information | Southampton, NY - Official Website","","[""\r\n\r\nPublic Information\t\t""]",[],"[""Loading"", ""Site Tools"", ""Contact Us"", ""Site Links""]",[],[],[] 2600,https://www.somervillema.gov/policebodycameras,Media Bulletins,200,City of Somerville & Police Union Reach Agreement to Deploy Patrol Officer Body Cameras | City of Somerville,"After several years of negotiations, the City of Somerville and the Somerville Police Employees Association (SPEA) union, which represents Somerville patrol officers, have reached an agreement to implement body-worn cameras. The agreement represents a collaborative breakthrough for policing transparency in Somerville and establishes Somerville as an early regional adopter of this important technology. ","[""\nCity of Somerville & Police Union Reach Agreement to Deploy Patrol Officer Body Cameras\n""]","[""After years of negotiations, the agreement represents a collaborative breakthrough for policing transparency ""]","[""Feedback"", ""Download Mobile Apps"", ""Sign up for City eNews"", ""Connect With Us""]",[],[],[] 2601,https://www.richmondindiana.gov/news/chief-of-police-michael-britt-officer-seara-burton,Media Bulletins,200,Message from Chief of Police Michael Britt on Officer Seara Burton | City of Richmond,"","[""News""]","[""Message from Chief of Police Michael Britt on Officer Seara Burton"", ""Stay Connected""]",[],"[""Contact"", ""City of Richmond""]",[],[] -2602,https://www.ci.san-bernardino.ca.us/city_hall/police_department/department_goals/improve_quality_of_life,Crime Statistics,200," - Improve Quality of Life - City of San Bernardino +2602,https://www.ci.san-bernardino.ca.us/city_hall/police_department/department_goals/improve_quality_of_life,Crime Statistics,200," + Improve Quality of Life - City of San Bernardino ","","[""City of San Bernardino California""]","[""Improve Quality of Life""]",[],[],[],[] 2603,http://www.longbeach.gov/police/press-releases/officer-involved-shooting-6-/,Media Bulletins,200,Officer Involved Shooting(6),"","[""Long BeachPolice Department""]",[],[],[],[],[] 2604,https://detroitmi.gov/es/departments/departamento-de-agua-y-alcantarillado/atencion-al-cliente/que-hacer-si-tiene-una-copia-de-seguridad-de-alcantarillado,Not Criminal Justice Related,200,Agua y Alcantarillado Mantenimiento/Emergencias | City of Detroit,"El Departamento de Agua y Alcantarillado de Detroit (DWSD) mantiene 2,700 millas de tuberías de distribución de agua (tuberías principales de agua) y 3,000 millas de tuberías de recolección de alcantarillado. DWSD tiene un programa de mantenimiento preventivo agresivo, un Programa de mejora de capital de cinco años para comenzar a abordar nuestra infraestructura obsoleta y cuenta con un equipo de servicios de campo capacitado que responde a las emergencias. Si necesita informar una emergencia de agua o alcantarillado, llame al 313-267-8000 y presione la opción 4, o use la aplicación móvil de Improve Detroit . SISTEMA DE AGUA: El sistema de agua en Detroit incluye las plantas de tratamiento de agua potable, bombas, líneas de transmisión, tuberías de distribución o cañerías de agua, válvulas, hidrantes y líneas de servicio de agua. Mira este video animado . ¿Tiene una rotura principal de agua? Los inviernos fríos de Detroit, los deshielos primaverales y el calor extremo del verano pueden provocar roturas en las tuberías que llevan el agua a nuestros clientes. Cada vez que el suelo cambia debido a cambios drásticos de temperatura, puede ejercer presión sobre las tuberías. El Departamento de Agua y Alcantarillado de Detroit (DWSD) tiene un programa agresivo de detección de fugas y un Programa de Mejora de Capital para actualizar el sistema. Tú también puedes ayudar. Se pueden perder millones de galones de valiosos recursos de agua potable en poco tiempo, por lo que la detección rápida de una ruptura de la tubería de agua es fundamental. Si sospecha que hay una fuga en su vecindario, llámenos al 313-267-8000 o use la aplicación móvil de Improve Detroit . Mire este video para aprender cómo DWSD responde a las roturas de tuberías principales. ¿Quién es responsable de las tuberías de agua? DWSD es responsable del mantenimiento del sistema de distribución de agua, incluidas las tuberías principales y de servicio de agua hasta el tope de la acera (válvula de encendido/apagado cerca o en la acera). El dueño de la propiedad es responsable de la línea de servicio de agua desde la acera hasta el interior de la casa o negocio y la plomería interna dentro de la casa/estructura. Si la parte privada de la línea de servicio de agua se agrieta o falla, es responsabilidad del dueño de la propiedad contratar a un plomero con licencia y obtener el permiso de la ciudad correspondiente para realizar la reparación. Ver imagen a continuación. DRENAJE: El sistema de recolección de alcantarillado en Detroit consta de líneas laterales de alcantarillado (privadas), tuberías de recolección de alcantarillado que utilizan principalmente la gravedad, tuberías de aguas pluviales, sumideros, infraestructura verde de aguas pluviales , bombas, instalaciones de desbordamiento de alcantarillado combinado y la planta de tratamiento de aguas residuales. ¿Está su calle inundada? DWSD lanzó un programa de inspección y limpieza de cuencas colectoras en 2017 para reducir las inundaciones en las calles de los vecindarios. Hasta noviembre de 2020, los equipos de DWSD han inspeccionado y limpiado 30 000 sumideros (drenajes pluviales). Hay aproximadamente 90,000 sumideros que DWSD es responsable de mantener. Esto no incluye las cuencas en autopistas, carreteras estatales o del condado, como M-10 Lodge Freeway y Woodward Avenue, que son responsabilidad del MDOT. Lea sobre el programa aquí . Si experimenta inundaciones en las calles, por su seguridad, no conduzca ni camine por un área inundada. Repórtelo llamando al 313-267-8000 y presione la opción 4, o use la aplicación móvil de Improve Detroit . Se alienta a los propietarios/inquilinos a que recojan los recortes de césped, las hojas, la basura y otros desechos frente a sus hogares y negocios y los eliminen adecuadamente, ya sea en el césped o en bolsas de basura. Los escombros que no se barren ni se quitan con una pala del frente de su propiedad pueden obstruir los sumideros y potencialmente inundar su calle. Mire este video para obtener más información . ¿Tiene un desbordamiento o una copia de seguridad de alcantarillado? Comuníquese con DWSD al 313-267-8000 y presione la opción 4 o use la aplicación móvil Improve Detroit al descubrir un desbordamiento o un desbordamiento de alcantarillado. Si tiene un desbordamiento o un desbordamiento de alcantarillado en su hogar o negocio, consulte la información de reclamo por daños de DWSD. La ley estatal requiere que presente un reclamo por escrito con su empresa local de servicios de agua, DWSD en este caso, dentro de los 45 días posteriores al descubrimiento del desbordamiento o el desbordamiento. ¿Quién es responsable de las tuberías de alcantarillado? DWSD es responsable del sistema de recolección de alcantarillado. Los propietarios son responsables de los drenajes dentro de la casa/estructura, en la propiedad privada y la línea de alcantarillado que viene desde la estructura hasta la conexión en la tubería de recolección de alcantarillado de la ciudad. La mayoría de las líneas de alcantarillado se conectan en el callejón o antiguo callejón (aquellos que la ciudad dejó vacantes a los propietarios), mientras que solo unos pocos vecindarios tienen la línea de alcantarillado conectada debajo de la calle frente a la casa/estructura. Si la línea de alcantarillado de la casa/estructura falla, se agrieta o se derrumba de la conexión de alcantarillado de la ciudad, es responsabilidad del propietario privado contratar a un plomero con licencia y obtener el permiso de la ciudad correspondiente para realizar la reparación. Ver imagen a continuación.","[""\nAgua y Alcantarillado Mantenimiento/Emergencias\n""]","[""Top Links"", ""Site Menu"", "" SISTEMA DE AGUA:"", "" DRENAJE:"", ""Documentos""]","["" \u00bfTiene una rotura principal de agua?"", "" \u00bfQui\u00e9n es responsable de las tuber\u00edas de agua?"", "" \u00bfEst\u00e1 su calle inundada?"", "" \u00bfTiene un desbordamiento o una copia de seguridad de alcantarillado?"", "" \u00bfQui\u00e9n es responsable de las tuber\u00edas de alcantarillado?""]","[""MEN\u00da DE DEPARTAMENTO""]","[""DWSD Tips to Reduce Flooding""]",[] @@ -2944,23 +2944,23 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 2617,https://www.naperville.il.us/2022-news-articles/naperville-police-investigate-personal-injury-hit-and-run-crash/,Media Bulletins,404,"","",,,,,, 2618,https://cityofyuma.colorado.gov/departments/emergency-services/police-department,List of Data Sources,200,Police Department | City of Yuma,"","[""\nPolice Department\n""]",[],"[""\nOur Mission\n""]","[""Forms and Resources""]",[],[] 2619,http://police.byram-ms.us/wpt_slider/sro/,Poor Data Source,200,sro | Byram Police Department,"","[""sro""]","[""Byram Weather""]","[""Post navigation"", ""Byram Police Department""]",[],[],[] -2620,https://www.lincolnca.gov/en/living-here/police-department.aspx?_mid_=484,Resources,200," - +2620,https://www.lincolnca.gov/en/living-here/police-department.aspx?_mid_=484,Resources,200," + Police Department - - - City of Lincoln + + - City of Lincoln ","","[""\r\n \n \n Police Department\n \r\n ""]","[""Online Reports Include:"", ""Do Not"", ""Contact Us"", ""Resources"", ""Browser Compatibility Notification""]",[],[],[],[] 2621,https://alpha.austin.gov/en/police-oversight/formal-complaint-impartial-attitude-courtesy-department-issued-bwc/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] 2622,https://covington.va.us/city-government/city-departments/police/police-patrol/,Misc Police Activity,200,Police Patrol - Covington City,"","[""\nPolice Patrol\n"", ""\nPolice Patrol\n""]","[""\nTOP ONLINE LINKS\n""]",[],"[""NOTICES"", ""\nMAPLE AVENUE PROJECT UPDATE "", ""\nROUTE 18 THERMO STRIPING "", ""CALENDAR""]",[],[] -2623,https://www.desmoineswa.gov/departments/police/forms_documents,Resources,200," - Forms / Documents - City of Des Moines, WA +2623,https://www.desmoineswa.gov/departments/police/forms_documents,Resources,200," + Forms / Documents - City of Des Moines, WA ","","[""City of Des Moines, WA""]","[""Forms / Documents""]",[],[],[],[] 2624,https://alpha.austin.gov/en/health-safety/accountability-and-transparency-in-policing/police-feedback-and-records/bwc-dmav-vendors-glossary-and-additional-information/,Poor Data Source,200,Maintenance Notice,"",[],[],[],[],[],[] 2625,http://lafayettepolice.us/1585/concessions-nearby-restaurants,Not Criminal Justice Related,200,"Concessions / Nearby Restaurants | Lafayette, IN - Official Website","","[""\r\n\r\nConcessions / Nearby Restaurants\t\t""]",[],"[""Loading"", ""Contact Us"", ""FAQs"", ""Site Links""]",[],[],[] -2626,https://www.rentonwa.gov/city_hall/police/patrol_operations/false_alarm_reduction_program,Misc Police Activity,200," - False Alarm Reduction Program - City of Renton +2626,https://www.rentonwa.gov/city_hall/police/patrol_operations/false_alarm_reduction_program,Misc Police Activity,200," + False Alarm Reduction Program - City of Renton ","","[""CITY OF RENTON\r\n\t\t\t\t\tWASHINGTON""]","[""False Alarm Reduction Program""]",[],"[""City of Renton Kicks Off a New False Alarm Reduction Program"", ""Appeal Guidelines"", ""False Alarm Prevention Tips"", ""Frequently Asked Questions""]",[],[] 2627,https://spdblotter.seattle.gov/2014/10/20/police-investigating-collision-between-vehicle-and-pedestrian-in-northgate-area/,Media Bulletins,200,Police Investigating Collision Between Vehicle and Pedestrian in Northgate Area - SPD Blotter,"","[""Police Investigating Collision Between Vehicle and Pedestrian in Northgate Area""]","[""Find Posts By Topic"", ""You might also like..."", ""Police"", ""City-Wide Information"", ""Top Requests"", ""Policies""]","[""Animals"", ""Assistance"", ""For Businesses"", ""Civil Rights"", ""Elected Officials"", ""Explore the City"", ""Get Involved"", ""Immigrants and Refugees"", ""Issues and Initiatives"", ""Learning and Education"", ""Public Safety"", ""Transportation and Development"", ""Technology"", ""Utilities""]","[""Browse the Archive""]",[],[] 2628,https://champaignil.gov/2014/08/11/champaign-police-investigate-domestic-battery-shooting/,Media Bulletins,200,Champaign Police Investigate Domestic Battery Shooting - City of Champaign,"","[""Champaign Police Investigate Domestic Battery Shooting""]","[""News Releases"", ""Department News""]",[],[],[],[] @@ -2978,13 +2978,13 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 2640,http://www.lafayettepolice.us/faq.aspx?qid=122,Not Criminal Justice Related,200,FAQs • Whom should I contact for assistance with a drainage ,"",[],"[""\n\u25bc\r\nWater Quality, Watersheds & Stormwater\t\t""]","[""Loading"", ""Categories"", ""Live Edit"", ""Contact Us"", ""FAQs"", ""Site Links""]",[],[],[] 2641,http://www.longbeach.gov/police/press-releases/traffic-fatality-4-/,Media Bulletins,200,TRAFFIC FATALITY(4),"","[""Long BeachPolice Department""]",[],[],[],[],[] 2642,https://rexburg.us/unified-police-locate-person-of-interest-in-suspicious-death-in-taylorsville/,Poor Data Source,522,"","",,,,,, -2643,https://www.pleasantprairiewi.gov/departments/police/news/police_and_fire___rescue_news_archive/2021_news_releases/w_i_l_e_a_g_re-_accreditation,Media Bulletins,200," - WILEAG Re-Accreditation - Village of Pleasant Prairie +2643,https://www.pleasantprairiewi.gov/departments/police/news/police_and_fire___rescue_news_archive/2021_news_releases/w_i_l_e_a_g_re-_accreditation,Media Bulletins,200," + WILEAG Re-Accreditation - Village of Pleasant Prairie ","",[],"[""WILEAG Re-Accreditation""]","[""Follow Us on Social Media""]",[],[],[] 2644,https://www.mass.gov/doc/semexant-jeffrey-v-boston-police-department-52121/download,Court Cases,200,"","",[],[],[],[],[],[] 2645,https://www.mass.gov/doc/beauregard-david-v-city-of-chicopee-4920/download,Court Cases,200,"","",[],[],[],[],[],[] -2646,http://www.longbeach.gov/police/about-the-lbpd/,Contact Info & Agency Meta,200,About the LBPD,"- +2646,http://www.longbeach.gov/police/about-the-lbpd/,Contact Info & Agency Meta,200,About the LBPD,"
+
","[""Police Department""]","[""About the LBPD""]","[""Mayor"", ""City Council"", ""Rex Richardson"", ""Mary Zendejas"", ""Cindy Allen"", ""Kristina Duggan"", ""Daryl Supernaw"", ""Megan Kerr"", ""Suely Saro"", ""Roberto Uranga"", ""Al Austin"", ""Dr. Joni Ricks-Oddie"", ""Dawn McIntosh"", ""Laura L. Doud"", ""Doug Haubert"", ""Tom Modica"", ""Monique DeLaGarza"", ""City-Wide Elected Officials"", ""Appointed Officials"", ""Online Payments"", ""Online Services"", ""In-Person Services"", ""Opening a Business"", ""Doing Business With The City"", ""Resources"", ""Most Popular"", ""Online Resources"", ""Attractions"", ""Business Associations"", ""Travel Resources"", ""Departments"", ""Job Opportunities"", ""Information"", ""LBPD"", ""Employment"", ""Bureaus"", ""News & Events"", ""Crime Info"", ""How Do I"", ""How Do I"", ""Contact Us"", """", ""LBPD Year in Review"", ""LBPD COMMAND STAFF"", ""Do."", ""Discover."", ""Connect."", ""Ask.""]","["""", ""1st District"", ""2nd District"", ""3rd District"", ""4th District"", ""5th District"", ""6th District"", ""7th District"", ""8th District"", ""9th District"", ""City Attorney"", ""City Auditor"", ""City Prosecutor"", ""City Manager"", ""City Clerk""]","[""File a Report Online"", ""Submit a Tip"", ""Submit a Commendation"", ""File a Complaint"", ""Ride Along Program"", ""\u00a0"", ""\u00a0"", ""\u00a0"", ""\u00a0"", ""Crime Lab Survey"", ""\u00a0""]",[] 2647,https://www.wakeforestnc.gov/news/joyner-park-restrooms-destroyed-vandals-police-seek-public%e2%80%99s-help-identifying-culprits,Media Bulletins,200,"Joyner Park restrooms destroyed by vandals, police seek public’s help identifying culprits | Town of Wake Forest, NC","The Wake Forest Police Department is asking for the public’s help identifying the person or persons responsible for vandalizing the restrooms at E. Carroll Joyner Park, 701 Harris Road. Sometime late Saturday evening or early Sunday morning, vandals used rocks and other items to shatter glass doors and mirrors, clog toilets, and smash sinks.“I’m disgusted that someone would so","[""Joyner Park restrooms destroyed by vandals, police seek public\u2019s help identifying culprits""]","[""wake_forest_cares_wfc_2021-3_1.jpg"", ""Search form"", ""You are here""]",[],[],[],[] 2648,https://detroitmi.gov/departments/law-department/submit-foia-request/non-routine-or-complex-police-foia-request,Poor Data Source,403,"","",,,,,, @@ -3008,8 +3008,8 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 2666,https://coloradosprings.gov/police-department/page/alternate-education-program,Resources,200,Alternate Education Program | City of Colorado Springs,"","[""\nAlternate Education Program\n""]","[""Search"", ""Educational Program"", ""Colorado Springs Weekly"", ""GoCOS!"", ""Connect with @CityofCOS""]","[""Do you have some college credits?"", ""Do you need to get some college credits?\u00a0"", ""Do you have military experience?\u00a0""]","[""Participating Schools with CSPD AEP:""]","[""CSU - Global\u00a0"", ""Pikes Peak State College"", ""REPORT ONLINE""]",[] 2667,https://www.tukwilawa.gov/departments/police/command-staff-bios/pd-boyd-kraig-bio-pic/,Media Bulletins,200,"PD-Boyd, Kraig Bio Pic - City of Tukwila","","[""City of Tukwila News""]","[""PD-Boyd, Kraig Bio Pic""]",[],"[""\nCity of Tukwila\n""]","[""I am a..."", ""Online Services"", ""Most Requested Forms""]",[] 2668,https://coloradosprings.gov/police-department/article/news/adrian-vasquez-serve-interim-police-chief,Media Bulletins,200,Adrian Vasquez to serve as interim police chief following Niski retirement | City of Colorado Springs,"","[""\nAdrian Vasquez to serve as interim police chief following Niski retirement\n""]","[""Search"", ""Colorado Springs Weekly"", ""GoCOS!"", ""Connect with @CityofCOS""]",[],[],"[""REPORT ONLINE""]",[] -2669,https://www.gurnee.il.us/government/departments/police-department/community-involvement/gurnee-citizen-police-academy/gurnee-citizen-police-academy/week-6,Training & Hiring Info,200," - Gurnee Citizen Police Academy +2669,https://www.gurnee.il.us/government/departments/police-department/community-involvement/gurnee-citizen-police-academy/gurnee-citizen-police-academy/week-6,Training & Hiring Info,200," + Gurnee Citizen Police Academy ","","[""Police Department""]","[""Gurnee Citizen Police Academy"", ""Youth Citizen Police Academy""]","[""Now accepting applications for the Spring 2024 session!"", ""Click here to register for the Gurnee Citizen Police Academy"", ""Village Hall""]",[],[],[] 2670,https://delcopa.gov/council/2018minutes/050218minutes.pdf,Not Criminal Justice Related,200,"","",[],[],[],[],[],[] 2671,https://brookfieldil.gov/brookfields-police-and-fire-chiefs-safety-talk-for-seniors-9-19-19/mtc-2019-poster-3/,Poor Data Source,404,"","",,,,,, @@ -3082,7 +3082,7 @@ Contact Police Department -","",[],"[""\n Contact Police Departme 2738,https://pcpa.memberclicks.net/accredited-agencies,Contact Info & Agency Meta,200,Accredited Agencies,"",[],"[""Accredited Agencies""]","[""Pennsylvania Chiefs of Police Association""]",[],[],"[""Return to PCPA Home"", ""Return to PCPA Home"", ""Return to PCPA Home""]" 2739,https://www.ucr.pa.gov/PAUCRSPUBLIC,Crime Statistics,200,Home,UCR Repository System,[],[],[],[],"[""Welcome to the Crime in Pennsylvania Dashboard"", ""Crime Dashboard""]",[] 2740,https://pittsburghpa.gov/police/manual-procedural-orders,Policies & Contracts,200,Pittsburgh Police Policies and Procedural Manual | pittsburghpa.gov,"","[""CAREERS"", ""CONTACT US"", ""FOLLOW US"", ""GU\u00cdA DE RESIDENTES"", ""Manual Of Procedural Orders"", ""City-County Building Lighting - What Do Tonight's Colors Represent?""]","[""Voice\u00a0 \u00a0 \u00a0 \u00a0 \u00a0Neutrality\u00a0 \u00a0 \u00a0 \u00a0 \u00a0Respect\u00a0 \u00a0 \u00a0 \u00a0 \u00a0Trustworthiness\u00a0""]","[""DEPARTMENT MENU""]","[""About Police"", ""Community Engagement Office"", ""Police Branches"", ""Police Zones"", ""Police Data"", ""Resources"", ""News"", ""Police Links""]",[],[] -2741,https://mappingpoliceviolence.us/,Use of Force Reports,200,Mapping Police Violence,"Official home of America's most comprehensive database of police violence. +2741,https://mappingpoliceviolence.us/,Use of Force Reports,200,Mapping Police Violence,"Official home of America's most comprehensive database of police violence. Get the facts about police brutality and how to address it.","[""Mapping Police Violence"", ""Mapping Police Violence"", ""Police have killed 44 people so far in 2024. Police killed at least 1,243 people in 2023."", ""Mapping Police Violence""]","[""Learn More""]","[""Police killed at least 1,243 people in 2023. Black people were 27% of those killed by police in 2023 despite being only 13% of the population.""]",[],[],[] 2742,https://pasdc.maps.arcgis.com/apps/webappviewer/index.html?id=70c54a213ef94b659b6b77da88ed43b0,Contact Info & Agency Meta,200,ArcGIS Web Application,"","[""""]",[],[],[],[],[] 2743,http://wwso.co.goodhue.mn.us/cis_reports/jail%20roster%20internet.pdf,Incarceration Records,200,"","",[],[],[],[],[],[] @@ -3107,8 +3107,8 @@ Get the facts about police brutality and how to address it.","[""Mapping Police 2762,https://www.burke.k12.ga.us/apps/pages/index.jsp?uREC_ID=324393&type=d&pREC_ID=733056,List of Data Sources,200,Records Request – Records/Transcripts – Burke County Public Schools,"The Burke County Public School District (BCPS) is located in Waynesboro, Georgia. They serve grades PreK-12. Home of the Burke County Bears!","[""Records Request""]",[],"[""SELECT THE BUTTON BELOW TO REQUEST STUDENT RECORDS:""]",[],[],[] 2763,https://collegeparkga.justfoia.com/publicportal/home/search,List of Data Sources,200,JustFOIA Public Portal,"",[],[],[],[],[],[] 2764,http://www.huroncountysheriff.org/contact.html,Contact Info & Agency Meta,404,"","",,,,,, -2765,https://csucpd.crimegraphics.com/2013/default.aspx#CLERYMenu,Crime Maps & Reports,200," - CrimeGraphics.com +2765,https://csucpd.crimegraphics.com/2013/default.aspx#CLERYMenu,Crime Maps & Reports,200," + CrimeGraphics.com ","",[],[],[],[],[],[] 2766,https://inmates.seorj.com/ArchonixXJailPublic/Default.aspx,Booking Reports,200," ","","[""\n\n \u00a0\u00a0""]","[""\n SOUTHEASTERN OHIO REGIONAL JAIL""]",[],[],[],[] @@ -3134,28 +3134,28 @@ Get the facts about police brutality and how to address it.","[""Mapping Police 2783,https://cityprotect.com/agency/55038d63-a7c2-4e66-80ec-9dc9127cd868,Crime Maps & Reports,200,CityProtect,"",[],[],[],[],[],[] 2784,http://www.beverlyhills.org/departments/policedepartment/crimeinformation/crimestatistics/web.jsp,Crime Statistics,200,Crime Statistics,"",[],[],[],[],[],[] 2785,https://data.cityofberkeley.info/Public-Safety/Berkeley-PD-Calls-for-Service/k2nh-s5h5,Crime Maps & Reports,200,Berkeley PD - Calls for Service | Open Data | City of Berkeley,"","[""""]","[""Menu""]",[],[],[],[] -2786,https://bpd.crimegraphics.com/2013/default.aspx,Crime Maps & Reports,200," - CrimeGraphics.com +2786,https://bpd.crimegraphics.com/2013/default.aspx,Crime Maps & Reports,200," + CrimeGraphics.com ","",[],[],[],[],[],[] 2787,https://cityprotect.com/agency/5d2ef925-427e-4154-b775-d73e7b19f9da,Crime Maps & Reports,200,CityProtect,"",[],[],[],[],[],[] 2788,https://data.wprdc.org/dataset/uniform-crime-reporting-data,Crime Maps & Reports,200,Police Incident Blotter (Archive) - Dataset - CKAN,"","[""Police Incident Blotter (Archive)"", ""City of Pittsburgh\n \n "", ""\n \n Police Incident Blotter (Archive)\n \n \n \n "", ""Data Use Agreement""]","["" Organization"", "" Social"", "" License"", ""Data and Resources"", ""Terms of use"", ""\ud83d\udea7 Under Construction""]","[""Additional Info""]",[],[],[] -2789,https://www.citruscollege.edu/campussafety/Pages/CampusCrimeStatistics.aspx,Crime Statistics,200," - - Campus Crime Statistics and Crime Logs - +2789,https://www.citruscollege.edu/campussafety/Pages/CampusCrimeStatistics.aspx,Crime Statistics,200," + + Campus Crime Statistics and Crime Logs + ","","[""\r\n\t\t\t\tCampus Safety""]","[""\n\r\n\t\r\n\t\t\t\t\t\t\tCampus Crime Statistics and Crime Logs\r\n\t\t\t\t\t \r\n\n""]","[""\nCampus Crime Log "", ""\nCampus Crime Statistics""]",[],[],[] 2790,https://data.cityofberkeley.info/Public-Safety/Berkeley-PD-Stop-Data-Jan-26-2015-to-Sep-30-2020-/4tbf-3yt8,Stops,200,Open Data | City of Berkeley,"",[],"[""Menu""]",[],[],[],[] -2791,https://www.gordonstate.edu/departments/open-records/index.html,List of Data Sources,200," - Open Records | Gordon State College +2791,https://www.gordonstate.edu/departments/open-records/index.html,List of Data Sources,200," + Open Records | Gordon State College ",Gordon State College,"[""Open Records""]",[],[],"[""Georgia Open Records Act (O.C.G.A. 50-18-70)"", ""More Information"", ""Stay Connected""]",[],[] 2792,https://cityprotect.com/agency/impd,List of Data Sources,200,CityProtect,"",[],[],[],[],[],[] -2793,http://state.sor.gbi.ga.gov/sort_public/SearchOffender.aspx,Sex Offender Registry,200," - Georgia Sex Offender Registry -","In accordance with O.C.G.A. § 42-1-12, the Georgia Bureau of Investigation - (GBI) is the central repository for Georgia's Violent Sexual Offender Registry. - The Georgia Bureau of Investigation makes every effort to ensure that the information contained in - the Georgia Sex Offender Registry is accurate. As the information is provided by other agencies - and entities and is continuously changing, the GBI makes no promise or any express or implied +2793,http://state.sor.gbi.ga.gov/sort_public/SearchOffender.aspx,Sex Offender Registry,200," + Georgia Sex Offender Registry +","In accordance with O.C.G.A. § 42-1-12, the Georgia Bureau of Investigation + (GBI) is the central repository for Georgia's Violent Sexual Offender Registry. + The Georgia Bureau of Investigation makes every effort to ensure that the information contained in + the Georgia Sex Offender Registry is accurate. As the information is provided by other agencies + and entities and is continuously changing, the GBI makes no promise or any express or implied guarantee concerning the accuracy of this information.",[],[],[],"[""Conditions of Use:""]",[],[] 2794,https://www.cityofcartersville.org/DocumentCenter/View/4973/RECORDS-REQUEST-FORM-UPDATED-3-23-20211?bidId=,List of Data Sources,404,"","",,,,,, 2795,https://www.cityprotect.com/agency/carrolltonpd/download,Crime Maps & Reports,200,CityProtect,"",[],[],[],[],[],[] @@ -3166,8 +3166,8 @@ Get the facts about police brutality and how to address it.","[""Mapping Police 2800,https://www.cpp.edu/police/daily-crime-and-fire-log.shtml,Crime Maps & Reports,200," Daily Crime & Fire Logs ",Current and previous crime and fire logs for Cal Poly Pomona,"[""Daily Crime and Fire Logs""]","[""Popular Searches"", ""Click on the link to download report""]","[""\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Current Logs\n \n"", ""\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Past Logs\n \n""]",[],[],[] -2801,https://bcso.crimegraphics.com/2013/default.aspx,Crime Maps & Reports,200," - CrimeGraphics.com +2801,https://bcso.crimegraphics.com/2013/default.aspx,Crime Maps & Reports,200," + CrimeGraphics.com ","",[],[],[],[],[],[] 2802,https://home.chicagopolice.org/information/police-records-procedures/,Records Request Info,403,"","",,,,,, 2803,https://cityprotect.com/agency/a5f46abe-f050-4f93-b2a2-f5b9e3285041,Crime Maps & Reports,200,CityProtect,"",[],[],[],[],[],[] @@ -3176,8 +3176,8 @@ Get the facts about police brutality and how to address it.","[""Mapping Police 2806,https://data.wprdc.org/dataset/police-zones,Geographic,200,Police Zones - Dataset - CKAN,"","[""Police Zones"", ""City of Pittsburgh\n \n "", ""\n \n Police Zones\n \n \n \n "", ""Data Use Agreement""]","["" Organization"", "" Social"", "" License"", ""Data and Resources"", ""Terms of use"", ""\ud83d\udea7 Under Construction""]","[""Additional Info""]",[],[],[] 2807,https://www.ci.brea.ca.us/DocumentCenter/View/1329/Website-Content-User-Policy,Records Request Info,200,"","",[],[],[],[],[],[] 2808,https://data.wprdc.org/dataset/police-sectors,Geographic,200,Police Sectors - Dataset - CKAN,"","[""Police Sectors"", ""City of Pittsburgh\n \n "", ""\n \n Police Sectors\n \n \n \n "", ""Data Use Agreement""]","["" Organization"", "" Social"", "" License"", ""Data and Resources"", ""Terms of use"", ""\ud83d\udea7 Under Construction""]","[""Additional Info""]",[],[],[] -2809,https://lrpd.crimegraphics.com/2013/default.aspx,Crime Maps & Reports,200," - CrimeGraphics.com +2809,https://lrpd.crimegraphics.com/2013/default.aspx,Crime Maps & Reports,200," + CrimeGraphics.com ","",[],[],[],[],[],[] 2810,https://cityprotect.com/agency/0584dd4d-dffd-43bf-8052-03c3863991de,Crime Maps & Reports,200,CityProtect,"",[],[],[],[],[],[] 2811,https://www.elcamino.edu/about/depts/police/cleryact/index.aspx,Annual & Monthly Reports,200,"Clery Act & Crime Prevention | El Camino College | Torrance, CA","","[""Clery Act & Crime Prevention""]","[""Search El Camino College"", ""Clery Act"", ""Crime Prevention"", ""Active Shooter"", ""Bike Theft"", ""Campus Safety"", ""Drug and Alcohol Abuse Prevention Program"", ""Identity Theft"", ""Megan's Law"", ""Prevention Info"", ""Victim Assistance"", ""What To Do if You're Stopped"", ""About El Camino"", ""Info for Students"", ""Info for Faculty & Staff"", ""Industry &Community Resources""]","[""Translate the Page"", ""Annual Security Report"", ""Purpose"", ""Obtain a Copy"", ""Additional Resources""]",[],[],[] @@ -3190,14 +3190,14 @@ Get the facts about police brutality and how to address it.","[""Mapping Police 2818,https://www.dougherty.ga.us/public-safety/dcpd/obtain-reports,List of Data Sources,200,Obtain Reports,Doughterty County GA Website,"[""Obtain Reports""]","[""Quick Links"", ""Section Links"", ""How to Obtain Reports""]",[],[],[],"["" Board of Commissioners "", "" Citizen Info "", "" County Departments "", "" County Administration "", "" Judicial System "", "" Public Safety "", "" About Dougherty County "", "" Community "", "" Things to Do "", "" Public Resources "", "" News & Events "", "" Citizen Information ""]" 2819,https://cityprotect.com/agency/144ade76-2309-4dff-8a35-717df4cd4093,Crime Maps & Reports,200,CityProtect,"",[],[],[],[],[],[] 2820,https://www.clayton.k12.ga.us/departments/safety_and_security/forms,List of Data Sources,404,"","",,,,,, -2821,https://www.atlantapd.org/i-want-to/ops-reports/-folder-133,Annual & Monthly Reports,200," - - OPS Reports | Atlanta Police Department - +2821,https://www.atlantapd.org/i-want-to/ops-reports/-folder-133,Annual & Monthly Reports,200," + + OPS Reports | Atlanta Police Department + ","","[""Atlanta Police Department"", ""OPS Reports""]","[""Jump to subpage...""]",[],[],[],[] 2822,http://www.baconcountyso.com/contact.html,List of Data Sources,403,"","",,,,,, -2823,http://66.110.195.53/p2c_dcso/jailinmates.aspx,Arrest Records,200," - Dougherty County Sheriff's Office P2C +2823,http://66.110.195.53/p2c_dcso/jailinmates.aspx,Arrest Records,200," + Dougherty County Sheriff's Office P2C ","",[],[],[],[],[],[] 2824,https://www.burbankpd.org/crime-information/crime-statistics/,Crime Statistics,200,"",Burbank Police Department provides daily arrest log and crime statistics for the City of Burbank,"[""Follow Us"", ""Crime Statistics"", ""Sign Up for our Newsletter/E-Alerts"", ""Follow Us""]","[""Burbank Police"", ""Resources""]","[""Documents""]",[],[],[] 2825,https://data.wprdc.org/dataset/officer-training,Training & Hiring Info,200,Police Officer Training - Dataset - CKAN,"","[""Police Officer Training"", ""City of Pittsburgh\n \n "", ""\n \n Police Officer Training\n \n \n \n "", ""Data Use Agreement""]","["" Organization"", "" Social"", "" License"", ""Data and Resources"", ""Terms of use"", ""\ud83d\udea7 Under Construction""]","[""Additional Info""]",[],[],[] @@ -3205,22 +3205,22 @@ Get the facts about police brutality and how to address it.","[""Mapping Police 2827,https://cityprotect.com/agency/2e8bd965-60bd-4e70-886e-f0a24772e434,Crime Maps & Reports,200,CityProtect,"",[],[],[],[],[],[] 2828,http://www.newtonsheriffga.org/records_faq.html,List of Data Sources,404,"","",,,,,, 2829,https://cityprotect.com/agency/1c052f54-adbd-480b-aa8b-a712c1c851f4,Crime Maps & Reports,200,CityProtect,"",[],[],[],[],[],[] -2830,https://hsupd.crimegraphics.com/2013/default.aspx,Crime Maps & Reports,200," - CrimeGraphics.com +2830,https://hsupd.crimegraphics.com/2013/default.aspx,Crime Maps & Reports,200," + CrimeGraphics.com ","",[],[],[],[],[],[] 2831,https://data.wprdc.org/dataset/police-civil-actions,Misc Police Activity,200,Police Civil Actions - Dataset - CKAN,"","[""Police Civil Actions"", ""City of Pittsburgh\n \n "", ""\n \n Police Civil Actions\n \n \n \n "", ""Data Use Agreement""]","["" Organization"", "" Social"", "" License"", ""Data and Resources"", ""Terms of use"", ""\ud83d\udea7 Under Construction""]","[""Additional Info""]",[],[],[] 2832,https://www1.nyc.gov/site/finance/sheriff-courts/sheriff.page,Policies & Contracts,200,Sheriff,"","[""Sheriff""]",[],"[""This Office enforces court mandates and processes including:"", ""The majority of our duties include:"", ""Forms"", ""General Forms""]","[""Sheriff's Bureau of Criminal Investigation (BCI)""]",[],[] 2833,https://cityprotect.com/agency/antiochcapolicedepartment,Crime Maps & Reports,200,CityProtect,"",[],[],[],[],[],[] 2834,https://cityprotect.com/agency/mhpdnc,Crime Maps & Reports,200,CityProtect,"",[],[],[],[],[],[] -2835,https://www.citruscollege.edu/campussafety/Pages/AnnualReports.aspx,Annual & Monthly Reports,200," - - Annual Security Report - +2835,https://www.citruscollege.edu/campussafety/Pages/AnnualReports.aspx,Annual & Monthly Reports,200," + + Annual Security Report + ","","[""\r\n\t\t\t\tCampus Safety""]","[""\n\r\n\t\r\n\t\t\t\t\t\t\tAnnual Security Report\r\n\t\t\t\t\t \r\n\n""]",[],[],[],[] 2836,https://cityprotect.com/agency/maryvillepdtn,Crime Maps & Reports,200,CityProtect,"",[],[],[],[],[],[] 2837,https://www.cypressca.org/government/departments/police/crime-information/crime-mapping,List of Data Sources,404,"","",,,,,, -2838,https://lithoniacity.org/CityClerk.aspx?CNID=3699,List of Data Sources,200," - Lithonia, GA - City Clerk +2838,https://lithoniacity.org/CityClerk.aspx?CNID=3699,List of Data Sources,200," + Lithonia, GA - City Clerk ","Lithonia, GA - Official City Website","[""City Clerk""]","[""Occupational Tax Certificate (Business License) administrative fee and processing procedures"", ""Press Release Announcing a Proposed Property Tax Increase"", ""Trains Blocking Intersections? Report It Immediately."", ""COVID-19 Response"", ""Celebrating Black History Month"", ""About the Office of the City Clerk"", ""Ashley Waters""]","[""City Clerk"", ""Lithonia City Hall"", ""Follow Us""]",[],[],[] 2839,https://opendata.howardcountymd.gov/,List of Data Sources,200,"Howard County - Open Data Portal | Open Data Portal ","","[""Welcome to Howard County Open Data""]","[""Menu"", ""Money and Finance"", ""Public Safety"", ""Utilities and Public Works"", ""Community Services"", ""Recreation and Parks"", ""Planning and Zoning"", ""Energy and Environment"", ""Transportation"", ""County Administration"", ""Licenses and Permits"", ""Maps, Locations and Boundaries"", ""Demographics"", ""Health"", ""Libraries"", ""Education"", ""Economic Development"", ""Featured Dataset: Building, Electrical, Fire, Grading, Mechanical, Plumbing & Sign Permits: 2010 - Present"", ""Featured Dataset: Presubmission Community Meetings"", ""Featured Dataset: Capital Project Expenditures and Budgets: FY 2015"", ""Featured Dataset: Bus Routes""]",[],[],[],[] @@ -3250,8 +3250,8 @@ Get the facts about police brutality and how to address it.","[""Mapping Police 2863,https://buycrash.lexisnexisrisk.com/,Accident Reports,200,LN BuyCrash,"",[],[],[],[],[],[] 2864,https://cityprotect.com/agency/cc0d9a3d-50b2-4424-ae25-5699ba6eaff9,Crime Maps & Reports,200,CityProtect,"",[],[],[],[],[],[] 2865,https://www1.nyc.gov/site/nypd/stats/reports-analysis/use-of-force-data.page,Use of Force Reports,200,Use of Force Data Tables - NYPD,"","[""Use of Force Data Tables""]","[""New York's Finest"", ""2023"", ""2022"", ""2021"", ""2020"", ""2019"", ""2018"", ""2017"", ""2016"", """"]","[""Fourth Quarter"", ""Third Quarter"", ""Second Quarter"", ""First Quarter"", ""Fourth Quarter"", ""Third Quarter"", ""Second Quarter"", ""First Quarter"", ""Fourth Quarter"", ""Third Quarter"", ""Second Quarter"", ""First Quarter"", ""Fourth Quarter"", ""Third Quarter"", ""Second Quarter"", ""First Quarter"", ""Fourth Quarter""]",[],[],[] -2866,https://www.cityofringgoldga.gov/ContactUs.aspx,List of Data Sources,200," - Contact Us +2866,https://www.cityofringgoldga.gov/ContactUs.aspx,List of Data Sources,200," + Contact Us ","","[""Contact Us""]",[],[],[],[],[] 2867,https://cityprotect.com/agency/7993e600-6f3b-41a8-ad20-4b7d1f811f00,Crime Maps & Reports,200,CityProtect,"",[],[],[],[],[],[] 2868,https://data.wprdc.org/dataset/pbp-fire-arm-seizures,Misc Police Activity,200,Pittsburgh Police Firearm Seizures - Dataset - CKAN,"","[""Pittsburgh Police Firearm Seizures"", ""City of Pittsburgh\n \n "", ""\n \n Pittsburgh Police Firearm Seizures\n \n \n \n "", ""Data Use Agreement""]","["" Organization"", "" Social"", "" License"", ""Data and Resources"", ""Terms of use"", ""\ud83d\udea7 Under Construction""]","[""Additional Info""]",[],[],[] @@ -3261,11 +3261,11 @@ Get the facts about police brutality and how to address it.","[""Mapping Police 2872,https://cummingpd.net/,List of Data Sources,200,"","","[""\n\t\t\t\t\t\t\t\t\tCUMMING POLICE DEPARTMENT\n\t\t\t\t\t\t\t\t"", ""\n\t\t\t\t\t\t\t\t\tCUMMING POLICE DEPARTMENT\n\t\t\t\t\t\t\t\t"", ""\n\t\t\t\t\t\t\t\t\tCUMMING POLICE DEPARTMENT\n\t\t\t\t\t\t\t\t"", ""\n\t\t\t\t\t\t\tMission Statement of the Cumming Police Department\n\t\t\t\t\t\t""]","[""Welcome to The City of Cumming"", ""\n\t\t\t\t\t\t\t\tPolice Department Information\n\t\t\t\t\t\t\t""]",[],"[""\n\t\t\t\t\t\t\tOUR MISSION\n\t\t\t\t\t\t"", ""\n\t\t\t\t\t\t\tOffice Hours\n\t\t\t\t\t\t"", ""\n\t\t\t\t\t\t\tFollow Us\n\t\t\t\t\t\t""]",[],[] 2873,https://www.greeneso.org/contact-us,List of Data Sources,200,"Sheriff's Office Greene County, GA | Official Website","Welcome to the Official Website for the Sheriff's Office of Greene County, Georgia. For best mobile experience, get the MySheriff mobile-app on the app stores.",[],[],[],[],[],[] 2874,https://www.mcdonoughga.org/city-departments-services/police-department/faqs,List of Data Sources,404,"","",,,,,, -2875,https://csucpd.crimegraphics.com/2013/default.aspx,Crime Maps & Reports,200," - CrimeGraphics.com +2875,https://csucpd.crimegraphics.com/2013/default.aspx,Crime Maps & Reports,200," + CrimeGraphics.com ","",[],[],[],[],[],[] -2876,https://www.auroragov.org/cms/One.aspx?portalId=16242704&pageId=16573554,Annual & Monthly Reports,200," - Annual & Public Reports - City of Aurora +2876,https://www.auroragov.org/cms/One.aspx?portalId=16242704&pageId=16573554,Annual & Monthly Reports,200," + Annual & Public Reports - City of Aurora ","","[""Welcome to theCity of AuroraColorado""]","[""Annual & Public Reports""]","[""Contact Info"", ""Useful Links"", ""City of AuroraColorado"", ""Accreditations""]",[],[],[] 2877,https://cityprotect.com/agency/c5267f3b-34d9-4f57-9d97-286d6a09be79,Crime Maps & Reports,200,CityProtect,"",[],[],[],[],[],[] 2878,https://data.wprdc.org/dataset/police-community-outreach,Misc Police Activity,200,Police Community Outreach - Dataset - CKAN,"","[""Police Community Outreach"", ""City of Pittsburgh\n \n "", ""\n \n Police Community Outreach\n \n \n \n "", ""Data Use Agreement""]","["" Organization"", "" Social"", "" License"", ""Data and Resources"", ""Terms of use"", ""\ud83d\udea7 Under Construction""]","[""Additional Info""]",[],[],[] @@ -3297,10 +3297,10 @@ Get the facts about police brutality and how to address it.","[""Mapping Police 2902,https://dps.georgia.gov/ask-us/how-do-i-submit-open-records-request,List of Data Sources,200,Submit an Open Records Request | Georgia Department of Public Safety,"","[""\n Submit an Open Records Request?\n ""]","[""Main navigation"", ""Search this site"", ""Breadcrumb"", ""\n\n Ask Us\n \n\n\n\n"", "" How do I obtain a traffic crash report?\n "", "" How do I obtain photographs or other records related to my crash or incident?\n "", ""\nOpen Records Unit\n"", ""Related Links"", ""How can we help?"", ""About Us"", ""Get in Touch""]","[""Popular searches"", ""Call Us"", ""Visit"", ""Mail"", ""Hours""]",[],[],[] 2903,https://www.antiochca.gov/fc/police/crime-maps/this-weeks-cfs.pdf,Crime Maps & Reports,200,"","",[],[],[],[],[],[] 2904,https://cityprotect.com/agency/gloucesterva,Crime Maps & Reports,200,CityProtect,"",[],[],[],[],[],[] -2905,https://www.atlantapd.org/i-want-to/ops-reports/-folder-132,List of Data Sources,200," - - OPS Reports | Atlanta Police Department - +2905,https://www.atlantapd.org/i-want-to/ops-reports/-folder-132,List of Data Sources,200," + + OPS Reports | Atlanta Police Department + ","","[""Atlanta Police Department"", ""OPS Reports""]","[""Jump to subpage...""]",[],[],[],[] 2906,https://cityprotect.com/agency/55a6d297-f3ec-49d7-9661-ce327d973e7c,Crime Maps & Reports,200,CityProtect,"",[],[],[],[],[],[] 2907,https://cityprotect.com/agency/540048e6-ee66-4a6f-88ae-0ceb93717e50,Crime Maps & Reports,200,CityProtect,"",[],[],[],[],[],[] @@ -3312,8 +3312,8 @@ Get the facts about police brutality and how to address it.","[""Mapping Police 2913,http://www.bakercountysheriffoffice.org/sex_offenders.php,Sex Offender Registry,200,"Sex Offenders - Baker County Sheriff's Office, Georgia","",[],"[""\r\n\t\t\tSex Offenders\t\t\t\t\t\t ()\r\n\t\t\t\t\t""]",[],[],[],[] 2914,https://cityprotect.com/agency/d1d4c189-c030-4e6b-b336-f9d3224d93bc,Crime Maps & Reports,200,CityProtect,"",[],[],[],[],[],[] 2915,https://www.baldwinsheriff.com/clerical-personal/,List of Data Sources,522,"","",,,,,, -2916,https://alameda.crimegraphics.com/2013/default.aspx,List of Data Sources,200," - CrimeGraphics.com +2916,https://alameda.crimegraphics.com/2013/default.aspx,List of Data Sources,200," + CrimeGraphics.com ","",[],[],[],[],[],[] 2917,https://cityprotect.com/agency/43ed6fb3-7e0d-4ab7-84ad-2f7e4b4b40b4,Crime Maps & Reports,200,CityProtect,"",[],[],[],[],[],[] 2918,https://opendata.minneapolismn.gov/datasets/,List of Data Sources,200,Open Minneapolis,Open Minneapolis,[],[],[],[],[],[] @@ -3322,18 +3322,18 @@ Get the facts about police brutality and how to address it.","[""Mapping Police 2921,https://www.alamedaca.gov/Departments/Police-Department/Crime-Activity,Crime Statistics,200,Alameda Crime Activity ,To see Alameda's reported crimes over the last six months visit Crime Mapping and our daily Activity Log.,"[""Alameda Crime Activity""]","[""Alameda Crime Graphics"", ""Annual Crime Statistics"", ""Monthly Crime Statistics"", ""Annual Arrest and Traffic Statistics"", ""Policy and Hate Crimes Reports""]","[""Contact Us"", ""Connect With Us"", ""Read More""]","[""**On April 7, 2021, APD's Crime Mapping website and Daily Activity Logs were replaced with Alameda's Crime Graphics website. Daily Activity Logs will now be referred to as Media Bulletins and are accessible through the Crime Graphics website.**""]",[],[] 2922,https://acworthpolice.org/departments/annual-report,List of Data Sources,200,Annual Report - Acworth Police Department,"",[],[],"[""Acworth Police Department & Detention Facility Annual Report"", ""Records Division"", ""Police Department"", ""Other Divisons""]","[""2022 Annual Report"", ""2021 Annual Report"", ""2020 Annual Report"", ""2019 Annual Report"", ""2018 Annual Report"", ""2017 Annual Report"", ""2016 Annual Report"", ""2015 Annual Report""]",[],[] 2923,https://cityprotect.com/agency/d1b180b8-befb-4d87-bee8-ce6bd9b26eb3,Crime Maps & Reports,200,CityProtect,"",[],[],[],[],[],[] -2924,https://dunwoodyga.mycusthelp.com/webapp/_rs/(S(4si2fkk1suuja4f33os0gqcf))/supporthome.aspx,List of Data Sources,200," - Support Home Page +2924,https://dunwoodyga.mycusthelp.com/webapp/_rs/(S(4si2fkk1suuja4f33os0gqcf))/supporthome.aspx,List of Data Sources,200," + Support Home Page ","","[""Public Records Center"", ""Public Records Center""]","[""Public Records Menu"", ""FAQs""]","[""Submit an Open Records Request"", ""Search Information about Open Records"", ""View My Open Records Requests""]",[],[],[] 2925,https://cityprotect.com/agency/antiochcapolicedepartment/download,List of Data Sources,200,CityProtect,"",[],[],[],[],[],[] -2926,https://www.dunwoodyga.gov/police/services/police-reports-open-records,List of Data Sources,200," - - Police Reports & Open Records | City of Dunwoody - +2926,https://www.dunwoodyga.gov/police/services/police-reports-open-records,List of Data Sources,200," + + Police Reports & Open Records | City of Dunwoody + ","","[""City of Dunwoody"", ""Police Reports & Open Records""]","[""Police Popular Searches"", ""Jump to subpage..."", ""Obtaining a Police Report or Open Records Requests"", ""Filing/Opening a Police Report"", ""QUICK LINKS""]",[],[],[],[] 2927,https://www.dixonpolice.org/evo_cloud_widget/media_folder/?media_folder_id=28802¤t_folder=,Annual & Monthly Reports,200,"","",[],[],[],[],[],[] -2928,https://csucpd.crimegraphics.com/2013/default.aspx#BulletinMenu,Crime Maps & Reports,200," - CrimeGraphics.com +2928,https://csucpd.crimegraphics.com/2013/default.aspx#BulletinMenu,Crime Maps & Reports,200," + CrimeGraphics.com ","",[],[],[],[],[],[] 2929,https://www.safehenry.com/missing-persons,List of Data Sources,200,"OPEN RECORDS ","","[""OPEN RECORDS""]","[""OUR PURPOSE""]",[],[],"[""ADDRESS""]",[] @@ -3372,8 +3372,8 @@ Get the facts about police brutality and how to address it.","[""Mapping Police 2961,https://www.alleghenycounty.us/police/contact/index.aspx,Contact Info & Agency Meta,404,"","",,,,,, 2962,https://www.ottumwacourier.com/news/record/,Arrest Records,200,Public records | ottumwacourier.com,An assortment of public records compiled for southern Iowa by the staff of the Ottumwa Courier.,"[""\n\n \n Public records\n \n \n""]",[],"[""\n \n Police Records\n \n "", ""\n\n \n\n \n For the record"", ""\n\n \n\n \n For the record"", ""\n\n \n\n \n For the record"", ""\n\n \n\n \n For the record"", ""\n\n \n\n \n For the record"", ""\n \n Marriages & Land Transfers\n \n "", ""\n\n \n\n \n Marriages and land transfers for Jan. 25, 2024"", ""\n\n \n\n \n Marriages and land transfers for Jan. 18, 2024"", ""\n\n \n\n \n Marriages and land transfers for Jan. 11, 2024"", ""\n\n \n\n \n Marriages and land transfers for Jan. 4, 2024"", ""\n\n \n\n \n Marriages and land transfers for Dec. 21, 2023"", ""\n \n Other Public Records\n \n "", ""\n\n \n\n \n Keith termination letter"", ""\n\n \n\n \n Fye termination letter"", ""\n\n \n\n \n McPherson resignation"", ""\n\n \n\n \n Read the Council's lawsuit against Centerville's school board"", ""\n\n \n\n \n Honey Creek Resort condition report"", ""\n\n \n\n \n Ryan Hodges' Resignation Agreement"", ""\n\n \n\n \n Evidence decision in Willard Miller's case"", ""\n\n \n\n \n Albia roundabout presentation"", ""\n\n \n\n \n Appeals court decision in Courtney and Williams vs. City of Ottumwa"", ""\n\n \n\n \n Office of Civil Rights letter to Ottumwa Schools"", ""\n\n \n\n \n Office of Civil Rights resolution with Ottumwa Schools"", ""\n\n \n\n \n Mike Bogle's early retirement agreement with the City of Centerville"", ""\n\n \n\n \n Centerville Fire Rescue Review Report"", ""\n\n \n\n \n Records for termination of Centerville Police Officer Jacob Downs"", ""\n\n \n\n \n Appanoose County FY 2021 audit report"", ""Trending Recipes"", ""\n \n All records\n \n "", ""\n\n \n\n \n Marriages and land transfers for Jan. 25, 2024"", ""\n\n \n\n \n Marriages and land transfers for Jan. 18, 2024"", ""\n\n \n\n \n Marriages and land transfers for Jan. 11, 2024"", ""\n\n \n\n \n Marriages and land transfers for Jan. 4, 2024"", ""\n\n \n\n \n Marriages and land transfers for Dec. 21, 2023"", ""\n\n \n\n \n Marriages and land transfers for Dec. 14, 2023"", ""\n\n \n\n \n Marriages and land transfers for Dec. 7, 2023"", ""\n\n \n\n \n Marriages and land transfers for Nov. 30, 2023"", ""\n\n \n\n \n Marriages and land transfers for Nov. 23, 2023"", ""\n\n \n\n \n Marriages and land transfers for Nov. 16, 2023"", ""\n\n \n\n \n Marriages and land transfers for Nov. 9, 2023"", ""\n\n \n\n \n Marriages and land transfers for Nov. 2, 2023"", ""\n\n \n\n \n Marriages and land transfers for Oct. 26, 2023"", ""\n\n \n\n \n Marriages and land transfers for Oct. 19, 2023"", ""\n\n \n\n \n Marriages and land transfers for Oct. 12, 2023"", ""\n\n \n\n \n Marriages and land transfers for Oct. 5, 2023"", ""\n\n \n\n \n Marriages and land transfers for Sept. 28, 2023"", ""\n\n \n\n \n Marriages and land transfers for Sept. 21, 2023"", ""\n\n \n\n \n Marriages and land transfers for Sept. 14, 2023"", ""\n\n \n\n \n Marriages and land transfers for Sept. 7, 2023"", ""\n\n \n\n \n Marriages and land transfers for Aug. 31, 2023"", ""\n\n \n\n \n Marriages and land transfers for Aug. 24, 2023"", ""\n\n \n\n \n Marriages and land transfers for Aug. 17, 2023"", ""\n\n \n\n \n Marriages and land transfers for Aug. 10, 2023"", ""\n\n \n\n \n Marriages and land transfers for Aug. 3, 2023"", ""\n\n \n\n \n Marriages and land transfers for July 27, 2023"", ""\n\n \n\n \n Marriages and land transfers for July 20, 2023"", ""\n\n \n\n \n Marriages and land transfers for July 13, 2023"", ""\n\n \n\n \n Marriages and land transfers for July 6, 2023"", ""\n\n \n\n \n Marriages and land transfers for June 29, 2023"", ""\n\n \n\n \n Marriages and land transfers for June 22, 2023"", ""\n\n \n\n \n Marriages and land transfers for June 15, 2023"", ""\n\n \n\n \n Marriages and land transfers for June 8, 2023"", ""\n\n \n\n \n Marriages and land transfers for June 1, 2023"", ""\n\n \n\n \n Marriages and land transfers for May 25, 2023"", ""\n\n \n\n \n Marriages and land transfers for May 18, 2023"", ""\n\n \n\n \n Marriages and land transfers for May 11, 2023"", ""\n\n \n\n \n For the record"", ""\n\n \n\n \n For the record"", ""\n\n \n\n \n Marriages and land transfers for May 4, 2023"", ""\n\n \n\n \n For the record"", ""\n\n \n\n \n For the record"", ""\n\n \n\n \n Marriages and land transfers for April 27, 2023"", ""\n\n \n\n \n Marriages and land transfers for April 20, 2023"", ""\n\n \n\n \n For the record"", ""\n\n \n\n \n For the record"", ""\n\n \n\n \n Marriages and land transfers for April 13, 2023"", ""\n\n \n\n \n For the record"", ""\n\n \n\n \n For the record"", ""\n\n \n\n \n Marriages and land transfers for April 6, 2023"", ""\n\n \n Submit news tip\n \n \n"", ""\n\n \n Write a letter\n \n \n"", ""\n\n \n Obituaries\n \n \n"", ""\n \n Most Popular\n \n "", ""\n\n \n\n \n Iowa FB vs Minnesota"", ""\n\n \n\n \n Ottumwa FB vs Des Moines East"", ""\n\n \n\n \n Halloweenapalooza 2023 at Bridge View"", ""\n\n \n\n \n Iowa FB vs Purdue"", ""\n\n \n\n \n Oktoberfest Bike Show & Concert"", ""\n\n \n\n \n Ottumwa at 4A Boys Golf Tournament"", ""\n\n \n Videos\n \n \n"", ""\n\n \n\n \n Ottumwa Schools - Board Meeting - 1/22/2024"", ""\n\n \n\n \n Ottumwa City Council - January 16 2024 - Regular Meeting"", ""Featured Local Savings""]","[""\r\n \r\n Ottumwa, IA\r\n \r\n (52501)\n"", ""Weather Alert"", ""Dense Fog Advisory from TUE 8:00 PM CST until WED 9:00 AM CST"", ""Weather Alert"", ""\n\n \n\n \n Vitko, Michael"", ""\n\n \n\n \n PFAFF, Jack"", ""\n\n \n\n \n BACHMAN, Jane"", ""\n\n \n\n \n WRIGHT, Doris"", ""\n\n \n\n \n RHYNAS, Judy"", ""\n\n \n\n \n Dodds, Donna"", ""\n\n \n\n \n Timothy Fisher"", ""Articles"", ""Images"", ""Videos"", ""\n\n \n Photo Galleries & Reprints\n \n \n"", ""\n\n \n\n \n Board of Supervisors"", ""\n\n \n\n \n Ottumwa Schools - Board Meeting - 1/08/2024"", ""\n\n \n\n \n Ottumwa City Council - January 02 2024 - Regular Meeting"", ""\n \n Contact Information\n \n "", ""\n \n Services\n \n "", ""\n \n Sections\n \n "", ""Browser Compatibility""]","[""Today"", ""Tonight""]",[] 2963,https://www.alleghenycounty.us/police/news/press-releases.aspx,Media Bulletins,404,"","",,,,,, -2964,https://arcata.crimegraphics.com/2013/default.aspx,Crime Maps & Reports,200," - CrimeGraphics.com +2964,https://arcata.crimegraphics.com/2013/default.aspx,Crime Maps & Reports,200," + CrimeGraphics.com ","",[],[],[],[],[],[] 2965,https://louisville-police.org/Directory.aspx,Contact Info & Agency Meta,200,"Staff Directory • Louisville Metro PD, KY • CivicEngage","","[""\r\n\t\tStaff Directory\r\n\t""]",[],"[""Loading"", ""Live Edit"", ""Contact Us"", ""FAQs"", ""Popular Links"", ""Site Links""]",[],[],[] 2966,https://louisville-police.org/sitemap,List of Data Sources,200,"Site Map • Louisville Metro PD, KY • CivicEngage","",[],[],"[""Loading"", ""\nHome\n"", ""\nOur Department\n"", ""\nServices\n"", ""\nEducation & Events\n"", ""\nLMPD Transparency\n"", ""\nHow Do I...\n"", ""Contact Us"", ""FAQs"", ""Popular Links"", ""Site Links""]",[],[],[] @@ -3401,17 +3401,17 @@ Get the facts about police brutality and how to address it.","[""Mapping Police 2984,https://villageofshorewood.org/965/Police-Department-Documents,List of Data Sources,200,"Police Department Documents | Shorewood, WI - Official Website","","[""\r\n\r\nPolice Department Documents\t\t""]",[],"[""Loading"", ""Contact"", ""Quick Links"", ""Helpful Links""]",[],[],[] 2985,https://www.vofishkill.us/sites/g/files/vyhlif3136/f/uploads/police_dept._-_use_of_force_6.pdf,Policies & Contracts,200,"","",[],[],[],[],[],[] 2986,https://www.phillypolice.com/assets/accountability/PPD-Disciplinary-Code-July-2014.pdf,Policies & Contracts,200,"","",[],[],[],[],[],[] -2987,https://apps.missoulacounty.us/dailypublicreport/,Calls for Service,200," - Daily Public Report +2987,https://apps.missoulacounty.us/dailypublicreport/,Calls for Service,200," + Daily Public Report ","",[],[],[],[],[],[] -2988,https://www.arlingtontx.gov/city_hall/departments/police/about_us/contact_us,Contact Info & Agency Meta,200," - Contact Us - City of Arlington +2988,https://www.arlingtontx.gov/city_hall/departments/police/about_us/contact_us,Contact Info & Agency Meta,200," + Contact Us - City of Arlington ","","[""YOUR COMMUNITY NEWS AND EVENTS"", ""City of Arlington""]","[""Contact Us""]",[],[],[],[] 2989,https://www.cabq.gov/police/contact,Contact Info & Agency Meta,200,Albuquerque Police Contact — City of Albuquerque,"","[""Albuquerque Police Contact""]","[""Get Directions"", ""\n Contact Information\n "", ""\n\nPhysical Address\n "", ""\n Mailing Address\n ""]","[""CONTACT"", ""ACCESS"", ""CONNECT""]","[""VISIT US ON SOCIAL MEDIA"", ""NEWSLETTER SIGNUP"", ""External Link Disclaimer""]",[],[] -2990,https://www.atlantaga.gov/government/mayor-s-office/executive-offices/office-of-innovation-delivery-and-performance/dataatlanta,List of Data Sources,200," - - DataAtlanta | Atlanta, GA - +2990,https://www.atlantaga.gov/government/mayor-s-office/executive-offices/office-of-innovation-delivery-and-performance/dataatlanta,List of Data Sources,200," + + DataAtlanta | Atlanta, GA + ","","[""DataAtlanta""]","[""Jump to subpage...""]",[],[],[],[] 2991,https://public.powerdms.com/ANCHOR/tree/documents/511669,Policies & Contracts,200,PowerDMS,"",[],[],[],[],[],[] 2992,https://www.cabq.gov/cpoa/findings-letters/special-cases-sent-to-internal-a/officer-involved-shootings,Officer Involved Shootings,200,Officer Involved Shootings — City of Albuquerque,Officer Involved Shootings (OIS),"[""Officer Involved Shootings""]",[],"[""CONTACT"", ""ACCESS"", ""CONNECT""]","[""VISIT US ON SOCIAL MEDIA"", ""NEWSLETTER SIGNUP"", ""External Link Disclaimer""]",[],[] @@ -3422,18 +3422,18 @@ Get the facts about police brutality and how to address it.","[""Mapping Police 2997,https://www.arlingtontx.gov/city_hall/departments/police/reporting/official_crime_reports,Crime Statistics,404,"","",,,,,, 2998,https://justicereform.atlantaga.gov/use-of-force ,Use of Force Reports,404,"","",,,,,, 2999,https://www.crimemapping.com/map/agency/6,Crime Maps & Reports,200,CrimeMapping.com - Helping You Build a Safer Community,"",[],[],[],[],[],[] -3000,https://data.muni.org/browse?category=Public+Safety,Crime Statistics,200," - - Office of Information Technology (OIT) - - - opendata - - +3000,https://data.muni.org/browse?category=Public+Safety,Crime Statistics,200," + + Office of Information Technology (OIT) + + + opendata + + ","",[],"[""\u200b\u200b\u200b\u200b\u200bOpen Data Portal2024\u00a0CAMA Residential Data - CSV""]",[],[],[],[] 3001,https://www.atlantapd.org/home/showpublisheddocument/4026/637582398211730000 ,Complaints & Misconduct,404,"","",,,,,, -3002,https://arlingtonpd.org/webapps/policeincidents/,Calls for Service,200," - Arlington Police Department - Police Incidents +3002,https://arlingtonpd.org/webapps/policeincidents/,Calls for Service,200," + Arlington Police Department - Police Incidents ","",[],"[""Current Police Activity""]",[],"[""Count By Priority"", ""Count By Police District""]",[],[] 3003,https://public.powerdms.com/ANCHOR/tree,Policies & Contracts,200,PowerDMS,"",[],[],[],[],[],[] 3004,http://opendata.atlantapd.org/,Crime Maps & Reports,200,Atlanta Police Open Data,This website provides crime data to the public.,[],[],[],[],[],[] @@ -3443,19 +3443,19 @@ Get the facts about police brutality and how to address it.","[""Mapping Police 3008,https://www.cabq.gov/police/public-reports/annual-reports/calls-for-service,Calls for Service,200,Calls for Service — City of Albuquerque,Annual report information about Albuquerque Police calls for service.,"[""Calls for Service""]","[""Albuquerque Relies on APD"", ""Types of Calls""]","[""Chart: APD Emergency Communications Center - Telephone Calls Answered"", ""Table: APD Emergency Communications Center - Telephone Calls Answered Jan-June"", ""Table: APD Emergency Communications Center - Telephone Calls Answered July-Dec."", ""Calendar Year Averages & Totals"", ""Chart: Calls for Service"", ""Table: Calls for Service"", ""Calls for Service: Definitions"", ""CONTACT"", ""ACCESS"", ""CONNECT""]","[""VISIT US ON SOCIAL MEDIA"", ""NEWSLETTER SIGNUP"", ""External Link Disclaimer""]",[],[] 3009,https://www.cabq.gov/police/documents/6-1-training-division-opa-draft-for-website.pdf,Policies & Contracts,200,"","",[],[],[],[],[],[] 3010,https://gbi.georgia.gov/news/2021-11-07/2021-officer-involved-shootings ,Officer Involved Shootings,404,"","",,,,,, -3011,https://www.atlantapd.org/i-want-to/crime-data-downloads,Crime Statistics,200," - - Weekly Crime Reports | Atlanta Police Department - +3011,https://www.atlantapd.org/i-want-to/crime-data-downloads,Crime Statistics,200," + + Weekly Crime Reports | Atlanta Police Department + ","","[""Atlanta Police Department"", ""Weekly Crime Reports""]","[""Jump to subpage..."", ""Weekly Crime Reports (PDF)""]",[],[],[],[] -3012,https://data.muni.org/,List of Data Sources,200," - - Office of Information Technology (OIT) - - - opendata - - +3012,https://data.muni.org/,List of Data Sources,200," + + Office of Information Technology (OIT) + + + opendata + + ","",[],"[""\u200b\u200b\u200b\u200b\u200bOpen Data Portal2024\u00a0CAMA Residential Data - CSV""]",[],[],[],[] 3013,https://documents.cabq.gov/police/standard-operating-procedures/2-52-use-of-force.pdf,Policies & Contracts,404,"","",,,,,, 3014,https://acrbgov.org/in-the-news/,Complaints & Misconduct,200,ACRB Reports - ACRB,ACRB Quarterly Reports Second Quarter Update FY 23 ACRB Annual Reports 2022 ACRB Annual Report 2021 ACRB Annual Report 2020 ACRB Annual Report 2019 ACRB Annual Report 2018 ACRB Annual Report 2017 ACRB Annual Report 2016 ACRB Annual Report 2015 ACRB Annual Report 2014 ACRB Annual Report 2013 ACRB Annual Report 2012 ACRB Annual Report,"[""ACRB Reports""]","[""Why File a Complaint for Officer Misconduct?"", ""ACRB Quarterly Reports"", ""ACRB Annual Reports"", ""ACRB Annual Surveys"", ""ACRB Q&A Reports"", ""FOLLOW US""]","[""\n\n\t\t\t\t\t\tCall Us:(404) 865-8622\t\t\t\t\t\n"", ""\n\n\t\t\t\t\t\tMonday - Friday:8:30 a.m. - 5:00 p.m.\t\t\t\t\t\n"", ""\n\n\t\t\t\t\t\t55 Trinity Avenue, S.W., City Hall Tower\t\t\t\t\t\n"", ""\nACRB\n"", ""\nTo find out what the City of Atlanta is doing in response to the Coronavirus (COVID-19), please\n\nClick Here\n\n"", ""\nContact Us\n"", ""\nOur Services\n"", ""\nStay Updated\n""]",[],[],[] @@ -3465,20 +3465,20 @@ Get the facts about police brutality and how to address it.","[""Mapping Police 3018,https://data.baltimorecity.gov/datasets/911-calls-for-service-2020/explore?showTable=true,Calls for Service,200,911 Calls For Service 2020,This dataset represents the Police Emergency and Non-Emergency calls to 911 for calendar year 2020.,[],[],[],[],[],[] 3019,https://www.austintexas.gov/department/police,Contact Info & Agency Meta,200,Police | AustinTexas.gov,"One Austin, Safer Together","[""Police""]","[""Action Navigation"", ""GTranslate"", ""Main menu"", ""Frequently Viewed Departments"", ""City Clerk"", ""One Austin, Safer Together"", ""Making a Difference "", ""Upcoming Events"", ""Contact Info"", ""Footer Menu"", ""Second Footer Menu""]","[""Resident"", ""Business"", ""Government"", ""Departments"", ""Connect"", ""Austin Police Department"", ""Interim Chief of Police Robin Henderson"", ""Other Links""]","["" Recent News""]",[],[] 3020,https://bpdgis.maps.arcgis.com/apps/dashboards/511ba81db3414df3bb474749b69bc258,Crime Maps & Reports,200,ArcGIS Dashboards,ArcGIS Dashboards,[],[],[],[],[],[] -3021,https://www.auroragov.org/residents/public_safety/police/annual___public_reports,Stops,200," - Annual & Public Reports - City of Aurora +3021,https://www.auroragov.org/residents/public_safety/police/annual___public_reports,Stops,200," + Annual & Public Reports - City of Aurora ","","[""Welcome to theCity of AuroraColorado""]","[""Annual & Public Reports""]","[""Contact Info"", ""Useful Links"", ""City of AuroraColorado"", ""Accreditations""]",[],[],[] 3022,https://data.austintexas.gov/,List of Data Sources,200,Open Data | City of Austin Texas | Open Data | City of Austin Texas,"",[],"[""Menu""]",[],[],[],[] 3023,https://app.powerbigov.us/view?r=eyJrIjoiYmJjZmUwMTEtODY2NS00MGEyLWI0YTctYTVlYzkzYWNlODc3IiwidCI6Ijk0NGZhOWJhLTg0NTQtNDEzZC1iOWU2LWJmNDBhZjFkNmE5YiJ9&pageName=ReportSection2544927b6a86287348d3,Complaints & Misconduct,200,Microsoft Power BI,"",[],[],[],[],[],[] -3024,https://www.auroragov.org/residents/public_safety/police/annual___public_reports,Arrest Records,200," - Annual & Public Reports - City of Aurora +3024,https://www.auroragov.org/residents/public_safety/police/annual___public_reports,Arrest Records,200," + Annual & Public Reports - City of Aurora ","","[""Welcome to theCity of AuroraColorado""]","[""Annual & Public Reports""]","[""Contact Info"", ""Useful Links"", ""City of AuroraColorado"", ""Accreditations""]",[],[],[] -3025,https://www.auroragov.org/residents/public_safety/police/directives_manual,Policies & Contracts,200," - Directives Manual - City of Aurora +3025,https://www.auroragov.org/residents/public_safety/police/directives_manual,Policies & Contracts,200," + Directives Manual - City of Aurora ","","[""Welcome to theCity of AuroraColorado""]","[""Directives Manual""]","[""Contact Info"", ""Useful Links"", ""City of AuroraColorado"", ""Accreditations""]",[],[],[] 3026,https://www.atlantapd.org/about-apd/standard-operating-procedures ,Policies & Contracts,404,"","",,,,,, -3027,https://www.auroragov.org/cms/One.aspx?portalId=16242704&pageId=16573671,Crime Maps & Reports,200," - Crime Data - City of Aurora +3027,https://www.auroragov.org/cms/One.aspx?portalId=16242704&pageId=16573671,Crime Maps & Reports,200," + Crime Data - City of Aurora ","","[""Welcome to theCity of AuroraColorado""]","[""Crime Data""]","[""Contact Info"", ""Useful Links"", ""City of AuroraColorado"", ""Accreditations""]",[],[],[] 3028,https://p1cdn4static.civiclive.com/UserFiles/Servers/Server_1881137/File/Residents/Public%20Safety/Police/Join%20the%20APD/2020%20NEW%20Police%20fitness%20Guide.pdf,Policies & Contracts,-1,"","",,,,,, 3029,https://p1cdn4static.civiclive.com/UserFiles/Servers/Server_1881137/File/Residents/Public%20Safety/Police/APD%20News/SOP%20FIU%2002.00.pdf,Policies & Contracts,-1,"","",,,,,, @@ -3489,18 +3489,18 @@ Get the facts about police brutality and how to address it.","[""Mapping Police 3034,https://cob.maps.arcgis.com/apps/webappviewer/index.html?id=07988399180e443e9ab43aa75ad59d1b,Contact Info & Agency Meta,200,ArcGIS Web Application,"","[""""]",[],[],[],[],[] 3035,https://data-auroraco.opendata.arcgis.com/,List of Data Sources,200,"City of Aurora, Colorado","City of Aurora, Colorado",[],[],[],[],[],[] 3036,https://www.atlantapd.org/home/showpublisheddocument/4560/637762918331970000,Policies & Contracts,404,"","",,,,,, -3037,https://www.auroragov.org/cms/One.aspx?portalId=16242704&pageId=16394210,Contact Info & Agency Meta,200," - Police - City of Aurora +3037,https://www.auroragov.org/cms/One.aspx?portalId=16242704&pageId=16394210,Contact Info & Agency Meta,200," + Police - City of Aurora ","","[""Welcome to theCity of AuroraColorado""]","[""Police""]","[""Contact Us"", ""Contact Info"", ""Useful Links"", ""City of AuroraColorado"", ""Accreditations""]",[],[],[] -3038,https://www.auroragov.org/residents/public_safety/police/annual___public_reports,Calls for Service,200," - Annual & Public Reports - City of Aurora +3038,https://www.auroragov.org/residents/public_safety/police/annual___public_reports,Calls for Service,200," + Annual & Public Reports - City of Aurora ","","[""Welcome to theCity of AuroraColorado""]","[""Annual & Public Reports""]","[""Contact Info"", ""Useful Links"", ""City of AuroraColorado"", ""Accreditations""]",[],[],[] 3039,https://data.baltimorecity.gov/datasets/arrests/explore?showTable=true,Arrest Records,200,Open Baltimore,Baltimore City's Open Data Hub,[],[],[],[],[],[] 3040,https://www.bakersfieldcity.us/890/Policies-and-Procedures,Policies & Contracts,200,"Policies and Procedures | Bakersfield, CA - Official Website","","[""Policies and Procedures""]",[],[],[],[],[] 3041,https://www.austintexas.gov/sites/default/files/files/Police/200.3%20Response%20to%20Resistance.pdf,Policies & Contracts,200,"","",[],[],[],[],[],[] 3042,http://www.austintexas.gov/GIS/CrimeViewer/,Crime Maps & Reports,404,"","",,,,,, -3043,https://www.auroragov.org/residents/public_safety/police/crime_data,Crime Statistics,200," - Crime Data - City of Aurora +3043,https://www.auroragov.org/residents/public_safety/police/crime_data,Crime Statistics,200," + Crime Data - City of Aurora ","","[""Welcome to theCity of AuroraColorado""]","[""Crime Data""]","[""Contact Info"", ""Useful Links"", ""City of AuroraColorado"", ""Accreditations""]",[],[],[] 3044,https://www.austintexas.gov/sites/default/files/files/APD-Ferguson-Training-Curriculum-Review-061920.pdf,Policies & Contracts,200,"","",[],[],[],[],[],[] 3045,https://data.burlingtonvt.gov/explore/dataset/bpd-traffic-stops/table/?sort=call_time&dataChart=eyJxdWVyaWVzIjpbeyJjb25maWciOnsiZGF0YXNldCI6ImJwZC10cmFmZmljLXN0b3BzIiwib3B0aW9ucyI6eyJzb3J0IjoiY2FsbF90aW1lIn19LCJjaGFydHMiOlt7ImFsaWduTW9udGgiOnRydWUsInR5cGUiOiJsaW5lIiwiZnVuYyI6IkFWRyIsInlBeGlzIjoiY291bnRfdGlja2V0cyIsInNjaWVudGlmaWNEaXNwbGF5Ijp0cnVlLCJjb2xvciI6IiMwMDAwMDAifV0sInhBeGlzIjoiY2FsbF90aW1lIiwibWF4cG9pbnRzIjoiIiwidGltZXNjYWxlIjoieWVhciIsInNvcnQiOiIifV0sImRpc3BsYXlMZWdlbmQiOnRydWUsImFsaWduTW9udGgiOnRydWV9,Stops,200,BTVstat Data Hub,City of Burlington Vermont Open Data Portal,[],[],[],[],[],[] @@ -3562,8 +3562,8 @@ Get the facts about police brutality and how to address it.","[""Mapping Police 3100,https://www.clevelandohio.gov/sites/default/files/forms_publications/Yearend2018CrimeStats.pdf?id=15004,Crime Statistics,404,"","",,,,,, 3101,https://www.clevelandohio.gov/CityofCleveland/Home/Government/CityAgencies/PublicSafety/Police/Contacts,Contact Info & Agency Meta,200,Cleveland Police Contact List | City of Cleveland Ohio,"","[""Cleveland Police Contact List\n""]","[""Utility Nav"", ""Main navigation"", ""Main navigation"", ""Breadcrumb"", ""Cleveland Police Contact List"", ""City of Cleveland"", ""Office Hours:"", ""I Want To""]","[""Menu"", ""Social"", ""Newsletter Sign Up"", ""Apply"", ""Pay"", ""Register"", ""Report"", ""Jump To""]",[],"[""Cookies Consent""]",[] 3102,https://insights.cincinnati-oh.gov/stories/s/quk6-rcaw,Use of Force Reports,200,Use of Force,"",[],"[""Menu""]",[],[],[],[] -3103,https://www.columbuspolice.org/Reports/Results?from=1/1/2012&to=1/20/2022&loc=all&types=9,Crime Statistics,200," - Search by Location - Columbus, OH Division of Police Web Report Portal +3103,https://www.columbuspolice.org/Reports/Results?from=1/1/2012&to=1/20/2022&loc=all&types=9,Crime Statistics,200," + Search by Location - Columbus, OH Division of Police Web Report Portal ","",[],"[""Search by Location :\r\n Entire City""]",[],[],[],[] 3104,https://www.charleston-sc.gov/973/Contact-Us,Contact Info & Agency Meta,404,"","",,,,,, 3105,https://www.cheyennepd.org/About-Us/Contact/General-Information,Contact Info & Agency Meta,200,General Information – Cheyenne Police Department,"Physical Address:415 West 18th StreetCheyenne, WY 82001Phone:637-6500E-Mail: info@cheyennepd.org Call Monday-Friday from 8-5 for general department requests. If you're wanting to report a crime or suspicious activity, use the dispatch number at 307-637-6525.","[""General Information""]",[],"[""Contact"", ""Social Media""]",[],[],[] @@ -3614,10 +3614,10 @@ Get the facts about police brutality and how to address it.","[""Mapping Police 3150,https://www.arcgis.com/apps/MapSeries/index.html?appid=fad2a3f085c644d0b014b507d23bcd9a,Calls for Service,200,"",This story map was created with the Story Map Series application in ArcGIS Online.,"[""""]",[],[],[],[],[] 3151,http://pdi-charleston-sc.opendata.arcgis.com/search?groupIds=a6e2de25969e42ea812b7bf530754fb6&q=response%20to%20resistance,Use of Force Reports,200,City of Charleston,City of Charleston PD Open Data Site,[],[],[],[],[],[] 3152,https://data.cincinnati-oh.gov/Safety/PDI-Police-Data-Initiative-Traffic-Stops-Drivers-/hibq-hbnj,Stops,200,PDI (Police Data Initiative) Traffic Stops (Drivers) | Tyler Data & Insights,"","[""""]","[""Menu""]",[],[],[],[] -3153,https://dallaspolice.net/division/internalaffairs/racialprofiling,Complaints & Misconduct,200," - - Internal Affairs Division - +3153,https://dallaspolice.net/division/internalaffairs/racialprofiling,Complaints & Misconduct,200," + + Internal Affairs Division + ","","[""Contact Form \r\n ""]","[""Internal Affairs Division""]","[""Dallas Police\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n Department "", ""Links"", ""Contact""]","[""Stay Connected\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n "", ""Quick Links \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n "", ""Resources \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ""]",[],[] 3154,https://policedata.coloradosprings.gov/Use-of-Force/Officer-Involved-Shootings/pzyt-rvyq,Officer Involved Shootings,200,Officer Involved Shootings | Tyler Data & Insights,"","[""""]","[""Menu""]",[],[],[],[] 3155,https://www.columbus.gov/police-annualreports/,Use of Force Reports,200,Annual Reports,"","[""City of Columbus""]","[""We're building you a new columbus.gov. Can't find what you're looking for?\u00a0"", ""We're building you a new columbus.gov. Can't find what you're looking for?\u00a0"", ""(614) 645-3111"", ""Council Members"", ""(614) 645-3111"", ""Go to the 311 Call Center"", ""(614) 645-3111"", ""311 is also available onthe CBUS 311 app""]","[""Navigate to new.columbus.gov."", ""Division of Police""]",[],[],[] @@ -3627,10 +3627,10 @@ Get the facts about police brutality and how to address it.","[""Mapping Police 3159,https://data.charlottenc.gov/,List of Data Sources,200,City of Charlotte Open Data Portal,"Charlotte's Open Data Portal, The City of Charlotte's Open Data Portal allows users to search, explore and discover relevant datasets that are served out by the City of Charlotte, NC.",[],[],[],[],[],[] 3160,https://charlottenc.gov/CMPD/Safety/Pages/CrimeStats.aspx,Complaints & Misconduct,200,Crime Statistics Report - Charlotte-Mecklenburg Police Department,Find the quarterly crime statistics for crime trends around Charlotte.,"[""Crime Statistics Report"", ""CMPD Quarterly Statistical Report""]","[""3rd Quarter Statistics"", ""2nd Quarter Statistics"", ""1st Quarter Statistics"", ""\r\n\t\t\tEnd of the Year Reports\r\n\t\t""]","[""Contact Us"", ""Get Involved"", ""Share & Connect""]",[],[],[] 3161,https://www.clevelandohio.gov/sites/default/files/gpo/CHAPTER%202%20LEGAL/2.01%20USE%20OF%20FORCE/2.01.03%20Use%20of%20Force-General%20(r).pdf,Policies & Contracts,404,"","",,,,,, -3162,https://dallaspolice.net/phonenumbers,Contact Info & Agency Meta,200," - - About - Contact - +3162,https://dallaspolice.net/phonenumbers,Contact Info & Agency Meta,200," + + About - Contact + ","","[""Contact Form \r\n ""]",[],"[""Dallas Police\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n Department "", ""Patrol Divisions"", ""Jack Evans Police Headquarters"", ""North Central Division"", ""Northeast Operations Division"", ""Northwest Operations Division"", ""Southwest Patrol Division"", ""Southeast Operations Division"", ""Central Operations Division"", ""South Central Division"", ""Department Phone Numbers""]","[""Administrative & Support Services Bureau"", ""Investigations Bureau"", ""Other Numbers"", ""Patrol Bureau"", ""Storefronts"", ""Strategic Deployment Bureau"", ""Stay Connected\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n "", ""Quick Links \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n "", ""Resources \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ""]",[],[] 3163,https://home.chicagopolice.org/statistics-data/crime-statistics/,Crime Statistics,403,"","",,,,,, 3164,https://insights.cincinnati-oh.gov/stories/s/8eaa-xrvz,Crime Maps & Reports,200,Reported Crime,"",[],"[""Menu""]",[],[],"[""How to use this dashboard"", ""About this data""]",[] @@ -3673,8 +3673,8 @@ Get the facts about police brutality and how to address it.","[""Mapping Police 3201,https://cityprotect.com/map ,Crime Maps & Reports,200,CityProtect,"",[],[],[],[],[],[] 3202,https://download.fargond.gov/0/training.pdf,Policies & Contracts,200,"","",[],[],[],[],[],[] 3203,https://www.denvergov.org/opendata,List of Data Sources,200,Denver Open Data Catalog,The Denver Open Data Catalog provides open access to data managed by the City and County of Denver.,[],"[""Featured Datasets | View All Datasets"", ""Recently Updated | View All Datasets"", ""Popular Tags"", ""Open Data License""]","[""Open Data Catalog""]",[],"[""\n\r\n ONLINE SERVICES\r\n "", ""\n\r\n OPEN DATA\r\n "", ""\n\r\n A - Z SERVICES\r\n ""]",[] -3204,https://police.fortworthtexas.gov/Public/officer-involved-shootings,Officer Involved Shootings,200," - Officer Involved Shootings +3204,https://police.fortworthtexas.gov/Public/officer-involved-shootings,Officer Involved Shootings,200," + Officer Involved Shootings ","","[""Police Department""]","[""Officer Involved Shootings"", ""Did You Know?""]","[""Public Info"", ""Resources"", ""Helpful Links"", ""Connect With FWPD""]",[],[],[] 3205,https://www.fairfaxcounty.gov/police/fairfax-county-police-department ,Contact Info & Agency Meta,404,"","",,,,,, 3206,https://www.elpasotexas.gov/police-department/about-us/annual-report/,Crime Statistics,404,"","",,,,,, @@ -3742,8 +3742,8 @@ This dataset includes criminal offenses in the City and County of Denver for the 3267,https://www.fresno.gov/police/wp-content/uploads/sites/5/2020/08/PolicyManual-Redacted-December-2021_Redacted.pdf,Policies & Contracts,404,"","",,,,,, 3268,https://open.jacksonms.gov/,List of Data Sources,200,Welcome - City of Jackson Open Data ,"","[""City of Jackson Open Data ""]","[""\n\n Groups\n \n"", ""\n\n Showcases\n \n"", ""Popular Datasets"", ""New and Recent Datasets""]","[""Search data"", ""Popular tags"", ""Thriving Education System"", ""Flooding Map"", ""Jackson's Census Profile"", ""Healthy Citizens"", ""Infrastructure"", ""City of Jackson Official Site"", ""Our Population At A Glance"", ""Transparency Portal"", ""Data Charts Depository"", ""City of Jackson Strategic Plan"", ""City of Jackson 311 Portal"", ""\nPolice Precinct city of Jackson and Wards\n"", ""\nWard Boundaries\n"", ""\nPopulation by Gender\n"", ""\nHealthcare Status\n"", ""\nGAP Achievement Analysis\n"", ""\nChlamydia Characteristics\n"", ""\nPopulation Density\n"", ""\nMigration\n"", ""\nOwners VS Renters\n"", ""\nTraffic Deaths\n""]",[],[],[] 3269,https://www.huntsvilleal.gov/residents/public-safety/huntsville-police/police-operations/annual-reports/,Calls for Service,200,Annual Reports - City of Huntsville,Accreditation and annual reports for the Huntsville Police Department,"[""Annual Reports""]","[""Top Requests"", ""HSV TV"", ""City News"", ""Contact Us""]",[],"[""ANNUAL REPORT"", """", ""STRATEGIC PLAN"", """", ""CALEA REPORT"", ""Police CALEA Report 2016"", """"]","[""Contact "", ""In This Section "", ""Share & Print""]",[] -3270,https://www.jaxsheriff.org,Contact Info & Agency Meta,200," - www.jaxsheriff.org - JaxSheriff.org +3270,https://www.jaxsheriff.org,Contact Info & Agency Meta,200," + www.jaxsheriff.org - JaxSheriff.org ",The official website of the Jacksonville Sheriff's Office (JSO),[],[],[],[],[],[] 3271,https://public.powerdms.com/HSVPS/tree/documents/123,Policies & Contracts,200,PowerDMS,"",[],[],[],[],[],[] 3272,http://www.vccahouston.org/cop/Training_Manual.pdf,Policies & Contracts,200,"","",[],[],[],[],[],[] @@ -3756,8 +3756,8 @@ This dataset includes criminal offenses in the City and County of Denver for the 3279,https://public.powerdms.com/HSVPS/tree/documents/40,Policies & Contracts,200,PowerDMS,"",[],[],[],[],[],[] 3280,https://www.jacksonms.gov/ucr/,Crime Statistics,200,"Uniform Crime Reporting - Jackson, MS","","[""Uniform Crime Reporting""]","[""Primary menu links"", ""Action toolbar"", ""Front Desk"", ""Uniform Crime Reporting (UCR) "", ""Contact"", ""Subscribe"", ""Connect""]",[],"[""Cold Weather Shelter - Open""]","["""", """", """"]",[] 3281,https://www.huntsvilleal.gov/development/building-construction/gis/data-depot/open-data/,List of Data Sources,404,"","",,,,,, -3282,https://transparency.jaxsheriff.org/,Complaints & Misconduct,200," - Home Page - JSO Open Data +3282,https://transparency.jaxsheriff.org/,Complaints & Misconduct,200," + Home Page - JSO Open Data ","","[""Open Data & Transparency""]","[""Available Data""]",[],[],[],[] 3283,https://www.kckpd.org/assets/Final2020KCKPDAnnualReport.pdf,Use of Force Reports,404,"","",,,,,, 3284,https://data.indy.gov/,List of Data Sources,200,Open Indy Data Portal,Open Indy Data Portal,[],[],[],[],[],[] @@ -3777,8 +3777,8 @@ This dataset includes criminal offenses in the City and County of Denver for the 3298,https://www.fresno.gov/police/police-contacts/,Contact Info & Agency Meta,200,Police Contacts – City of Fresno,"","[""Fresno.gov / Quick Search""]","[""Police Contacts"", ""Fresno Policing Districts""]","[""Contact Police"", ""Additional Contacts"", ""Fresno has five policing districts. "", ""Southwest"", ""Southeast"", ""Northeast"", ""Northwest"", ""Central"", ""Helpful Links"", ""Social""]","[""Emergency\u00a0911\u00a0(TTY/TDD)"", ""Non-Emergency\u00a0(559)\u00a0621-7000\u00a0(TTY/TDD) "", ""Graffiti Hotline\u00a0311"", ""Narcotics Tip Line\u00a0(559) 621-5900"", ""Gang Tip Line\u00a0(559)\u00a0621-GANG\u00a0(4264)"", ""See Policing Districts Map""]",[],[] 3299,https://media.graphcms.com/75EP0fDdRtesFrtrWE6Z,Policies & Contracts,200,"","",[],[],[],[],[],[] 3300,https://www.huntsvilleal.gov/residents/public-safety/huntsville-police/police-operations/annual-reports/,Stops,200,Annual Reports - City of Huntsville,Accreditation and annual reports for the Huntsville Police Department,"[""Annual Reports""]","[""Top Requests"", ""HSV TV"", ""City News"", ""Contact Us""]",[],"[""ANNUAL REPORT"", """", ""STRATEGIC PLAN"", """", ""CALEA REPORT"", ""Police CALEA Report 2016"", """"]","[""Contact "", ""In This Section "", ""Share & Print""]",[] -3301,https://transparency.jaxsheriff.org/,List of Data Sources,200," - Home Page - JSO Open Data +3301,https://transparency.jaxsheriff.org/,List of Data Sources,200," + Home Page - JSO Open Data ","","[""Open Data & Transparency""]","[""Available Data""]",[],[],[],[] 3302,https://www.houstontx.gov/police/cs/Community_Crime_Map_hosted_by_LexisNexis.htm,Crime Maps & Reports,200,Community Crime Map hosted by LexisNexis.com,"","["" ""]","[""Houston Police Department"", ""POLICE Department"", ""Police Department Links ""]","[""Community Crime Map hosted by LexisNexis.com ""]",[],[],[] 3303,https://www.kcpd.org/transparency/office-of-community-complaints/annual-reports/,Complaints & Misconduct,200,Annual Reports,"",[],[],[],[],[],[] @@ -3789,28 +3789,28 @@ This dataset includes criminal offenses in the City and County of Denver for the 3308,https://www.huntsvilleal.gov/residents/public-safety/huntsville-police/police-operations/annual-reports/,Complaints & Misconduct,200,Annual Reports - City of Huntsville,Accreditation and annual reports for the Huntsville Police Department,"[""Annual Reports""]","[""Top Requests"", ""HSV TV"", ""City News"", ""Contact Us""]",[],"[""ANNUAL REPORT"", """", ""STRATEGIC PLAN"", """", ""CALEA REPORT"", ""Police CALEA Report 2016"", """"]","[""Contact "", ""In This Section "", ""Share & Print""]",[] 3309,https://www.indy.gov/activity/officer-involved-shootings,Officer Involved Shootings,200,indy.gov,"",[],[],[],[],[],[] 3310,https://www.kcpd.org/about/regional-police-academy/recruit-training/,Policies & Contracts,200,Recruit Training,"","[""Regional Police Academy""]","[""Recruit Training""]",[],[],[],[] -3311,https://callsforservice.jaxsheriff.org,Calls for Service,200," - Calls for Service - Jacksonville Sheriff's Office +3311,https://callsforservice.jaxsheriff.org,Calls for Service,200," + Calls for Service - Jacksonville Sheriff's Office ","",[],"[""COMPLETED DISPATCHED CALLS FOR SERVICE""]",[],[],[],[] 3312,https://www.fresno.gov/police/wp-content/uploads/sites/5/2020/08/Redacted-FTO-Manual-042020.pdf,Policies & Contracts,404,"","",,,,,, 3313,https://www.kcpd.org/transparency/policies-and-procedures/,Policies & Contracts,200,Policies and Procedures,"","[""Transparency""]","[""POLICIES AND PROCEDURES"", ""Policies"", ""Procedures""]",[],[],[],[] 3314,http://www.houstontx.gov/police/ois/,Officer Involved Shootings,200,Officer Involved Shootings,"","["" ""]","[""Houston Police Department"", ""POLICE Department"", ""Police Department Links ""]","[""Officer Involved Shootings""]",[],[],[] 3315,https://mycity.maps.arcgis.com/apps/dashboards/21eac904178c4d12a7dd8e29c0ee238e,Use of Force Reports,200,ArcGIS Dashboards,ArcGIS Dashboards,[],[],[],[],[],[] 3316,https://www.kcpd.org/crime/crime-mapping/ ,Crime Maps & Reports,404,"","",,,,,, -3317,https://transparency.jaxsheriff.org/OIS,Officer Involved Shootings,200," - Officer-Involved Shootings - JSO Open Data +3317,https://transparency.jaxsheriff.org/OIS,Officer Involved Shootings,200," + Officer-Involved Shootings - JSO Open Data ","","[""\r\n \r\n OFFICER-INVOLVED SHOOTINGS\r\n\r\n\t\t\t ""]",[],"[""Please Be Advised...""]",[],[],[] 3318,https://data.kcmo.org/,List of Data Sources,200,Open Data KC | data.kcmo.org,"",[],"[""Menu""]",[],[],[],[] 3319,https://mycity.maps.arcgis.com/apps/dashboards/0ccace0ba9a84c8db1e926bf1f9cbcac,Complaints & Misconduct,200,ArcGIS Dashboards,ArcGIS Dashboards,[],[],[],[],[],[] 3320,https://www.houstontx.gov/police/cs/Monthly_Crime_Data_by_Street_and_Police_Beat.htm,Crime Statistics,200,Monthly Crime Data by Street and Police Beat,"","["" ""]","[""Houston Police Department"", ""POLICE Department"", ""Crime Data"", ""Police Department Links ""]","[""Monthly Crime Data by Street and Police Beat""]",[],[],[] 3321,https://public.powerdms.com/HSVPS/tree/documents/37,Policies & Contracts,200,PowerDMS,"",[],[],[],[],[],[] 3322,https://data.houstontx.gov/,List of Data Sources,200,Welcome - City of Houston Open Data,"","[""City of Houston Open Data""]","[""\n\n Groups\n \n"", ""\n\n Showcases\n \n"", ""Popular Datasets"", ""New and Recent Datasets""]","[""Search data"", ""Popular tags"", ""MyCity"", ""Open Finance"", ""Texas Public Information Act"", ""Police Transparency Hub"", ""\nArchived Solicitations\n"", ""\nHouston Police Department Crime Statistics\n"", ""\nPayroll\n"", ""\nAll City of Houston Procurement Contracts\n"", ""\nBARC Animal Service Requests\n"", ""\nCheckbook\n"", ""\nArchived Solicitations\n"", ""\nBudget\n"", ""\nPayroll\n"", ""\nProperty Tax\n""]",[],[],[] -3323,http://transparency.jaxsheriff.org/,Use of Force Reports,200," - Home Page - JSO Open Data +3323,http://transparency.jaxsheriff.org/,Use of Force Reports,200," + Home Page - JSO Open Data ","","[""Open Data & Transparency""]","[""Available Data""]",[],[],[],[] 3324,https://www.huntsvilleal.gov/residents/public-safety/huntsville-police/police-operations/annual-reports/,Arrest Records,200,Annual Reports - City of Huntsville,Accreditation and annual reports for the Huntsville Police Department,"[""Annual Reports""]","[""Top Requests"", ""HSV TV"", ""City News"", ""Contact Us""]",[],"[""ANNUAL REPORT"", """", ""STRATEGIC PLAN"", """", ""CALEA REPORT"", ""Police CALEA Report 2016"", """"]","[""Contact "", ""In This Section "", ""Share & Print""]",[] -3325,https://www.jaxsheriff.org/Resources/crime-mapping.aspx,Crime Maps & Reports,200," - www.jaxsheriff.org - JaxSheriff.org +3325,https://www.jaxsheriff.org/Resources/crime-mapping.aspx,Crime Maps & Reports,200," + www.jaxsheriff.org - JaxSheriff.org ",The official website of the Jacksonville Sheriff's Office (JSO),[],[],"[""Disclaimer/Use of Information Release""]",[],[],[] 3326,https://www.indy.gov/agency/indianapolis-metropolitan-police-department,Contact Info & Agency Meta,200,indy.gov,"",[],[],[],[],[],[] 3327,https://www.arcgis.com/apps/dashboards/9083bde56982414598f34a55f69b5e2d ,Calls for Service,200,ArcGIS Dashboards,ArcGIS Dashboards,[],[],[],[],[],[] @@ -3821,18 +3821,18 @@ This dataset includes criminal offenses in the City and County of Denver for the 3332,https://www.crimemapping.com/map/ca/losangeles,Crime Maps & Reports,200,CrimeMapping.com - Helping You Build a Safer Community,"",[],[],[],[],[],[] 3333,https://www.lvmpd.com/en-us/InternalOversightConstitutionalPolicing/Documents/PO-035-20%20Use%20of%20Force.pdf,Policies & Contracts,404,"","",,,,,, 3334,https://www.lapdonline.org/policies-procedures-training-sb-978/,Policies & Contracts,200,Policies & Procedures/Training SB 978 - LAPD Online,"","[""Policies & Procedures/Training SB 978""]","[""SB 978, Bradford. Law enforcement agencies: public records."", ""Admin Orders, Directives and Special Orders"", ""Police Training and Education"", ""Department Manuals"", ""Use of Force""]",[],[],[],[] -3335,https://www.longbeach.gov/police/crime-info/crime-statistics/,Crime Statistics,200,Crime Statistics,"CRIME STATISTICS - - LBPD MONTHLY CRIME STATISTICS - The following statistical reports contain the LBPD's monthly crime statistic data sorted by 5 year summary, previous year to current year, and reporting district. - - +3335,https://www.longbeach.gov/police/crime-info/crime-statistics/,Crime Statistics,200,Crime Statistics,"
CRIME STATISTICS + + LBPD MONTHLY CRIME STATISTICS + The following statistical reports contain the LBPD's monthly crime statistic data sorted by 5 year summary, previous year to current year, and reporting district. + + Reporting district number is a small, geographically designed area (usually several
","[""Police Department""]","[""CRIME STATISTICS""]","[""Mayor"", ""City Council"", ""Rex Richardson"", ""Mary Zendejas"", ""Cindy Allen"", ""Kristina Duggan"", ""Daryl Supernaw"", ""Megan Kerr"", ""Suely Saro"", ""Roberto Uranga"", ""Al Austin"", ""Dr. Joni Ricks-Oddie"", ""Dawn McIntosh"", ""Laura L. Doud"", ""Doug Haubert"", ""Tom Modica"", ""Monique DeLaGarza"", ""City-Wide Elected Officials"", ""Appointed Officials"", ""Online Payments"", ""Online Services"", ""In-Person Services"", ""Opening a Business"", ""Doing Business With The City"", ""Resources"", ""Most Popular"", ""Online Resources"", ""Attractions"", ""Business Associations"", ""Travel Resources"", ""Departments"", ""Job Opportunities"", ""Information"", ""LBPD"", ""Employment"", ""Bureaus"", ""News & Events"", ""Crime Info"", ""How Do I"", ""How Do I"", ""Contact Us"", ""National Incident-Based Reporting System"", ""2023 NIBRS Monthly Crime Statistics"", ""CRIME INCIDENT MAPPING APPLICATION"", ""2016-2022 Uniform Crime Reporting (UCR) Crime Statistics\u00a0"", ""CRIME DATA TOTALS"", ""UNIFORM CRIME REPORTING"", ""PREVIOUS YEAR TO CURRENT YEAR\u00a0"", ""5 YEAR SUMMARY\u00a0"", ""MONTHLY REPORTING DISTRICT CRIME STATS"", ""ANNUAL REPORTING DISTRICT CRIME STATS"", ""HISTORICAL CRIME GRAPH"", ""Do."", ""Discover."", ""Connect."", ""Ask.""]","["""", ""1st District"", ""2nd District"", ""3rd District"", ""4th District"", ""5th District"", ""6th District"", ""7th District"", ""8th District"", ""9th District"", ""City Attorney"", ""City Auditor"", ""City Prosecutor"", ""City Manager"", ""City Clerk"", ""Some benefits of NIBRS include:"", ""Why is this important?""]","[""File a Report Online"", ""Submit a Tip"", ""Submit a Commendation"", ""File a Complaint"", ""Ride Along Program"", ""\u00a0"", ""\u00a0"", ""\u00a0"", ""\u00a0"", ""Crime Lab Survey"", ""\u00a0""]",[] 3336,https://www.longbeach.gov/police/about-the-lbpd/lbpd-sb-978/ ,Policies & Contracts,200,City of Long Beach,"",[],"[""Page Not Found""]","[""Mayor"", ""City Council"", ""Rex Richardson"", ""Mary Zendejas"", ""Cindy Allen"", ""Kristina Duggan"", ""Daryl Supernaw"", ""Megan Kerr"", ""Suely Saro"", ""Roberto Uranga"", ""Al Austin"", ""Dr. Joni Ricks-Oddie"", ""Dawn McIntosh"", ""Laura L. Doud"", ""Doug Haubert"", ""Tom Modica"", ""Monique DeLaGarza"", ""City-Wide Elected Officials"", ""Appointed Officials"", ""Online Payments"", ""Online Services"", ""In-Person Services"", ""Opening a Business"", ""Doing Business With The City"", ""Resources"", ""Most Popular"", ""Online Resources"", ""Attractions"", ""Business Associations"", ""Travel Resources"", ""Departments"", ""Job Opportunities"", ""Information"", ""Do."", ""Discover."", ""Connect."", ""Ask.""]","["""", ""1st District"", ""2nd District"", ""3rd District"", ""4th District"", ""5th District"", ""6th District"", ""7th District"", ""8th District"", ""9th District"", ""City Attorney"", ""City Auditor"", ""City Prosecutor"", ""City Manager"", ""City Clerk""]",[],[] 3337,https://data.littlerock.gov/,List of Data Sources,200,City of Little Rock Open Data and Performance,"",[],"[""Menu""]",[],[],[],[] 3338,https://lasd.org/wp-content/uploads/2021/05/Transparency_Crime_Maps_Jan-Apr_051821.pdf,Crime Maps & Reports,404,"","",,,,,, -3339,manchesternh.gov/Departments/Police/Administration/Crime-Data/Crime-Statistics,Crime Statistics,200," - Crime Statistics +3339,manchesternh.gov/Departments/Police/Administration/Crime-Data/Crime-Statistics,Crime Statistics,200," + Crime Statistics ","","[""Crime Statistics\n"", ""Police Related Links\n""]",[],"[""\u00a0"", ""Crime Data Links\n""]","[""2022"", ""2023"", ""City Hall"", ""City Government"", ""About Manchester"", ""City Services"", ""Mobile App""]","[""2021""]",[] 3340,https://www.longbeach.gov/police/about-the-lbpd/lbpd-1421748/ois/ ,Officer Involved Shootings,200,City of Long Beach,"",[],"[""Page Not Found""]","[""Mayor"", ""City Council"", ""Rex Richardson"", ""Mary Zendejas"", ""Cindy Allen"", ""Kristina Duggan"", ""Daryl Supernaw"", ""Megan Kerr"", ""Suely Saro"", ""Roberto Uranga"", ""Al Austin"", ""Dr. Joni Ricks-Oddie"", ""Dawn McIntosh"", ""Laura L. Doud"", ""Doug Haubert"", ""Tom Modica"", ""Monique DeLaGarza"", ""City-Wide Elected Officials"", ""Appointed Officials"", ""Online Payments"", ""Online Services"", ""In-Person Services"", ""Opening a Business"", ""Doing Business With The City"", ""Resources"", ""Most Popular"", ""Online Resources"", ""Attractions"", ""Business Associations"", ""Travel Resources"", ""Departments"", ""Job Opportunities"", ""Information"", ""Do."", ""Discover."", ""Connect."", ""Ask.""]","["""", ""1st District"", ""2nd District"", ""3rd District"", ""4th District"", ""5th District"", ""6th District"", ""7th District"", ""8th District"", ""9th District"", ""City Attorney"", ""City Auditor"", ""City Prosecutor"", ""City Manager"", ""City Clerk""]",[],[] 3341,https://www.lapdonline.org/office-of-the-chief-of-police/professional-standards-bureau/disciplinary-penalties/,Complaints & Misconduct,200,Disciplinary Penalties - LAPD Online,"","[""Disciplinary Penalties""]","[""2023"", ""2022"", ""2021"", ""2020""]",[],[],[],[] @@ -3851,10 +3851,10 @@ This dataset includes criminal offenses in the City and County of Denver for the 3354,https://clrweb.littlerock.state.ar.us/pub/public_menu.php,Calls for Service,200,CLR Dispatches,"",[],[],"[""Little Rock Dispatches delayed 30 minutes to 8 hours displayed""]",[],[],[] 3355,https://louisville-police.org/237/Important-Phone-Numbers,Contact Info & Agency Meta,200,"Important Phone Numbers | Louisville Metro PD, KY",Review all phone numbers concerned with the Police Department. ,"[""\r\n\r\nImportant Phone Numbers\t\t""]","[""Give an Anonymous Tip\u00a0"", ""Criminal Investigations"", ""Division Phone Numbers"", ""Other Numbers"", ""Other Agencies"", ""Parking Tickets"", ""Warrants/Emergency Protective Order (EPO)""]","[""Loading"", ""Hours"", ""Contact Us"", ""FAQs"", ""Popular Links"", ""Site Links""]",[],[],[] 3356,https://opendataportal-lasvegas.opendata.arcgis.com/,List of Data Sources,200,City of Las Vegas Open Data,City of Las Vegas Open Data Page,[],[],[],[],[],[] -3357,https://www.longbeach.gov/citymanager/cpcc/annual-report/,Complaints & Misconduct,200,Annual Report,"- - 761 - false +3357,https://www.longbeach.gov/citymanager/cpcc/annual-report/,Complaints & Misconduct,200,Annual Report,"
+ + 761 + false
","[""City Manager""]","[""Annual Report"", ""The CPCC's Annual Reports""]","[""Mayor"", ""City Council"", ""Rex Richardson"", ""Mary Zendejas"", ""Cindy Allen"", ""Kristina Duggan"", ""Daryl Supernaw"", ""Megan Kerr"", ""Suely Saro"", ""Roberto Uranga"", ""Al Austin"", ""Dr. Joni Ricks-Oddie"", ""Dawn McIntosh"", ""Laura L. Doud"", ""Doug Haubert"", ""Tom Modica"", ""Monique DeLaGarza"", ""City-Wide Elected Officials"", ""Appointed Officials"", ""Online Payments"", ""Online Services"", ""In-Person Services"", ""Opening a Business"", ""Doing Business With The City"", ""Resources"", ""Most Popular"", ""Online Resources"", ""Attractions"", ""Business Associations"", ""Travel Resources"", ""Departments"", ""Job Opportunities"", ""Information"", ""Government Affairs"", ""Contact Your..."", ""CPCC"", ""Tidelands CIP Division"", ""Projects"", ""More Projects"", ""Annual Report"", ""Contact Us"", ""Do."", ""Discover."", ""Connect."", ""Ask.""]","["""", ""1st District"", ""2nd District"", ""3rd District"", ""4th District"", ""5th District"", ""6th District"", ""7th District"", ""8th District"", ""9th District"", ""City Attorney"", ""City Auditor"", ""City Prosecutor"", ""City Manager"", ""City Clerk""]",[],[] 3358,http://www.lvpmsa.org/Forms/Dept.%20Man%207-14-07.pdf,Policies & Contracts,200,"","",[],[],[],[],[],[] 3359,https://www.manchesternh.gov/Portals/2/Departments/police_web/SOP-Authority-Law-Enforcement-Role_06-2020.pdf?ver=2020-06-24-084502-160,Policies & Contracts,200,"","",[],[],[],[],[],[] @@ -3872,8 +3872,8 @@ This dataset includes criminal offenses in the City and County of Denver for the 3371,https://louisville-police.org/DocumentCenter/View/778/LMPD-Training-Curriculum-Outline-2018,Policies & Contracts,200,"","",[],[],[],[],[],[] 3372,https://www.lvmpd.com/en-us/InternalOversightConstitutionalPolicing/Documents/Statistical%20Data%20and%20Reports/2020/Use%20of%20Force%20and%20Vehicle%20Pursuit%20Statistical%20Report%202016-2020%20FINAL.pdf,Use of Force Reports,404,"","",,,,,, 3373,https://data.lacounty.gov/Criminal/All-Shooting-Incidents-for-Deputy-Involved-Shootin/xutq-azb6/data,Officer Involved Shootings,200,County of Los Angeles Open Data,"This site represents the County of Los Angeles' commitment to transparency, accountability, and community engagement - and further serve as a centralized data resource for data-driven projects. ",[],[],[],[],[],[] -3374,https://www.manchesternh.gov/Departments/Police/Contact-Police,Contact Info & Agency Meta,200," - Contact Police +3374,https://www.manchesternh.gov/Departments/Police/Contact-Police,Contact Info & Agency Meta,200," + Contact Police ","","[""Email Police\n"", ""Police Related Links\n""]",[],[],"[""City Hall"", ""City Government"", ""About Manchester"", ""City Services"", ""Mobile App""]",[],[] 3375,https://data.littlerock.gov/Safe-City/Little-Rock-Police-Department-Statistic-Insights/9iy3-rb7k,Crime Statistics,200,City of Little Rock Open Data and Performance,"",[],"[""Menu""]",[],[],[],[] 3376,https://www.lapdonline.org/contact-us/,Contact Info & Agency Meta,200,Contact Us - LAPD Online,"","[""Contact Us"", ""Helpful Links and Information""]","[""Phone Numbers"", ""Email the LAPD"", ""Addresses"", ""Non-Emergency Crime Reporting & Hotlines"", ""Get Service"", ""Other Services"", ""Actions & Information"", ""External Resources""]",[],[],[],[] @@ -3901,8 +3901,8 @@ This dataset includes criminal offenses in the City and County of Denver for the 3398,https://www.longbeach.gov/police/about-the-lbpd/lbpd-1421748/use-of-force/,Use of Force Reports,-1,"","",,,,,, 3399,https://louisville-police.org/DocumentCenter/View/615/Standard-Operating-Procedures-PDF,Policies & Contracts,-1,"","",,,,,, 3400,https://www.lvmpd.com/en-us/Pages/ContactUs.aspx,Contact Info & Agency Meta,404,"","",,,,,, -3401,http://www.manchesternh.gov/Departments/Police/Police-Log,Calls for Service,200," - Police Log +3401,http://www.manchesternh.gov/Departments/Police/Police-Log,Calls for Service,200," + Police Log ","","[""Police Log\n"", ""Police Related Links\n""]",[],"[""Dates\n""]","[""City Hall"", ""City Government"", ""About Manchester"", ""City Services"", ""Mobile App""]",[],[] 3402,https://lasd.org/SACR_opendata.html,Stops,404,"","",,,,,, 3403,http://shq.lasdnews.net/content/uoa/PSD/force-policy.pdf,Policies & Contracts,200,"","",[],[],[],[],[],[] @@ -3927,10 +3927,10 @@ This dataset includes criminal offenses in the City and County of Denver for the 3422,https://www.mesaaz.gov/home/showdocument?id=22664,Complaints & Misconduct,404,"","",,,,,, 3423,https://www.arcgis.com/apps/dashboards/714e29a27f694137a29f2ee048dfb8a3 ,Officer Involved Shootings,200,ArcGIS Dashboards,ArcGIS Dashboards,[],[],[],[],[],[] 3424,https://data.montgomerycountymd.gov/Public-Safety/Police-Dispatched-Incidents/98cc-bc7d,Calls for Service,200,Police Dispatched Incidents | Open Data Portal,"","[""""]","[""Menu""]",[],[],[],[] -3425,https://www.mesaaz.gov/government/contact-us?locale=en,Contact Info & Agency Meta,200," - - Contact Us | City of Mesa - +3425,https://www.mesaaz.gov/government/contact-us?locale=en,Contact Info & Agency Meta,200," + + Contact Us | City of Mesa + ",Contact the City of Mesa,"[""City of Mesa"", ""Contact Us""]","["""", """", ""Additional Links"", ""Additional Resources"", ""Get Social""]",[],[],[],[] 3426,https://data.milwaukee.gov/,List of Data Sources,200,Welcome - City of Milwaukee Open Data Portal ,"","[""\nMilwaukee Open Data\n"", ""City of Milwaukee Open Data Portal ""]","[""\n\n Groups\n \n"", ""\n\n Showcases\n \n"", ""Popular Datasets"", ""New and Recent Datasets""]","[""Search data"", ""Popular tags"", ""Address Search Application"", ""Map Milwaukee Portal"", ""My Milwaukee Home"", ""Property Assessment Data"", ""Current Milwaukee Fire Dispatched Calls for Service"", ""Current Milwaukee Police Dispatched Calls for Service"", ""Restaurant and Food Service Inspections"", ""Budget Office Visualizations"", ""Assessed V.S. Exempt Properties by Ald. District 2018"", ""Service Request Comparisons Between 2016 and 2017"", ""\nCity Employee Salary Data\n"", ""\nProperty Sales Data\n"", ""\nPersonal Property Assessments\n"", ""\nMaster Property File (MPROP)\n"", ""\nWIBR Crime Data (Current)\n"", ""\nCity of Milwaukee Open Data Dataset Catalog\n"", ""\nWIBR Crime Data (Historical)\n"", ""\nWIBR Crime Data (Current)\n"", ""\nTraffic Accident Data\n"", ""\nMaster Property File (MPROP)\n""]",[],[],[] 3427,https://www.minneapolismn.gov/government/departments/police/mpd-policy-procedure-manual/policy-manual/ ,Policies & Contracts,404,"","",,,,,, @@ -3944,31 +3944,31 @@ This dataset includes criminal offenses in the City and County of Denver for the 3435,https://www.miami-police.org/contact.html,Contact Info & Agency Meta,200,Contact the Miami Police Department - Miami Police Department,"Contact the Miami Police Department, Address: 400 NW 2nd Avenue, Miami, Florida 33128, Phone: (305) 603-6640",[],[],[],[],[],[] 3436,https://city.milwaukee.gov/ImageLibrary/Groups/mpdAuthors/SOP/460-USEOFFORCE.pdf,Policies & Contracts,200,"","",[],[],[],[],[],[] 3437,https://data.milwaukee.gov/dataset/fpc-citizen-complaints,Complaints & Misconduct,200,Citizen Complaints Against Police and Fire Departments - Dataset - City of Milwaukee Open Data Portal ,"","[""\nMilwaukee Open Data\n"", ""Citizen Complaints Against Police and Fire Departments"", ""Fire and Police Commission\n \n "", ""\n \n Citizen Complaints Against Police and Fire Departments\n \n \n \n ""]","["" Organization"", "" Social"", "" License"", ""Data and Resources""]","[""Additional Info""]",[],[],[] -3438,https://www.montgomerycountymd.gov/pol/contact.html,Contact Info & Agency Meta,200," - Contact Us page, Department of Police,Montgomery County, MD +3438,https://www.montgomerycountymd.gov/pol/contact.html,Contact Info & Agency Meta,200," + Contact Us page, Department of Police,Montgomery County, MD ","",[],"[""Contact us""]","[""How to Report a Crime or Incident"", ""Police Districts"", ""Frequently Used Numbers""]","[""POLICE CONTACTS"", ""FOR CRIME SOLVERS"", ""DISTRICTS"", ""RESOURCES"", ""FOLLOW US"", ""STAY INFORMED""]",[],[] 3439,https://opendata.minneapolismn.gov/datasets/police-incidents-2021/explore ,Crime Maps & Reports,200,Police Incidents 2021,Police Incidents for 2021,[],[],[],[],[],[] -3440,https://www.montgomerycountymd.gov/pol/data/iad-reports.html,Complaints & Misconduct,200," - IAD reports page, MCPD, Montgomery County,MD +3440,https://www.montgomerycountymd.gov/pol/data/iad-reports.html,Complaints & Misconduct,200," + IAD reports page, MCPD, Montgomery County,MD ","",[],"[""Internal Affairs Division Reports""]",[],"[""POLICE CONTACTS"", ""FOR CRIME SOLVERS"", ""DISTRICTS"", ""RESOURCES"", ""FOLLOW US"", ""STAY INFORMED""]",[],[] 3441,https://gis-mdc.opendata.arcgis.com/search?collection=Dataset,List of Data Sources,200,Open Data Hub Site,"Open Data Hub Site from Miami-Dade County, Florida",[],[],[],[],[],[] 3442,https://opendata.minneapolismn.gov/datasets/police-officer-involved-shootings/explore ,Officer Involved Shootings,200,Police Officer Involved Shootings,Officer Involved Shooting Data for the Minneapolis Police Department,[],[],[],[],[],[] -3443,https://www.montgomerycountymd.gov/POL/resource/Directives/100.html,Policies & Contracts,200," - Directives -100 - Police Operations, Montgomery County Police, Montgomery County, MD +3443,https://www.montgomerycountymd.gov/POL/resource/Directives/100.html,Policies & Contracts,200," + Directives -100 - Police Operations, Montgomery County Police, Montgomery County, MD ","Police Operations,Neck Restraint, Use of Force","[""100 - Police Operations""]",[],[],"[""POLICE CONTACTS"", ""FOR CRIME SOLVERS"", ""DISTRICTS"", ""RESOURCES"", ""FOLLOW US"", ""STAY INFORMED""]",[],[] 3444,https://data.mesaaz.gov/Police/Police-Computer-Aided-Dispatch-Events/ex94-c5ad,Calls for Service,200,Police Dispatch Events 2017-2020 | Mesa Data Hub,"","[""""]","[""Menu""]",[],[],[],[] 3445,https://opendata.minneapolismn.gov/datasets/police-incidents-2021/explore,Crime Statistics,200,Police Incidents 2021,Police Incidents for 2021,[],[],[],[],[],[] 3446,https://mesaaz.maps.arcgis.com/apps/dashboards/c38c8c61b10d40fdaaabab2b4f10c984,Use of Force Reports,200,ArcGIS Dashboards,ArcGIS Dashboards,[],[],[],[],[],[] 3447,https://data.mesaaz.gov/,List of Data Sources,200,Data Portal | Mesa Data Hub,"",[],"[""Menu""]",[],[],[],[] -3448,https://www.montgomerycountymd.gov/pol/crime-data.html,Crime Maps & Reports,200," - Public Safety Data Page, Montgomery County Police Department , Montgomery County, MD +3448,https://www.montgomerycountymd.gov/pol/crime-data.html,Crime Maps & Reports,200," + Public Safety Data Page, Montgomery County Police Department , Montgomery County, MD ","",[],"[""Public Safety Data""]","[""Annual Reports"", ""Monthly Hate/Bias Summaries"", ""Weekly Crime Summary Reports"", ""Sex Offender Registry\u00a0"", ""Extreme Risk Protection Order (ERPO) Information"", ""Other Reports"", ""Crime Incident Map""]","[""POLICE CONTACTS"", ""FOR CRIME SOLVERS"", ""DISTRICTS"", ""RESOURCES"", ""FOLLOW US"", ""STAY INFORMED""]",[],[] 3449,https://reimagine.memphistn.gov/isb-dashboard/response-to-resistance/,Use of Force Reports,200,Response to Resistance - Reimagine Policing in Memphis,"","[""Response to Resistance""]","[""Response to Resistance"", ""How Do We Compare to Other Agencies?\u00a0\u00a0""]","[""What Does This Report Show?\u00a0\u00a0"", ""Response to Resistance (all incidents)\u00a0\u00a0"", ""Response to Resistance (fatal shootings)\u00a0""]",[],[],[] 3450,https://www.miami-police.org/SOPs/MPD%20SOPs%20-%20BookMarks%20-%20Copy/2%20ADM/5%20TRAINING/Training%20and%20Personnel%20Development%20Section.pdf,Policies & Contracts,404,"","",,,,,, 3451,https://www.minneapolismn.gov/government/government-data/datasource/office-of-police-conduct-review-dashboard/,Complaints & Misconduct,200,Office of Police Conduct Review Data Portal - City of Minneapolis,You can use this dashboard to track police misconduct claims and cases.,"[""Office of Police Conduct Review data dashboard"", ""Need help? We're here for you.""]","[""Police conduct review dashboard"", ""How to use the dashboard"", ""Contact us""]","[""\n Request accessible format\r\n "", ""Search the data"", ""Read the Data"", ""Office of Police Conduct Review""]",[],[],[] 3452,https://www.mesaazpolice.gov/home/showpublisheddocument/44518/637805421431100000,Officer Involved Shootings,404,"","",,,,,, -3453,https://www.montgomerycountymd.gov/pol/data/weekly-crime-summaries.html,Crime Statistics,200," - Weekly Crime Summaries page, Montgomery County Police Department, Montgomery County, MD +3453,https://www.montgomerycountymd.gov/pol/data/weekly-crime-summaries.html,Crime Statistics,200," + Weekly Crime Summaries page, Montgomery County Police Department, Montgomery County, MD ","",[],"[""Weekly Crime Summaries""]","[""2023-2024 Weekly Crime Summaries"", ""\u00a0""]","[""January"", ""February"", ""March"", ""April"", ""May"", ""June"", ""July"", ""August"", ""September"", ""October"", ""November"", ""December"", ""POLICE CONTACTS"", ""FOR CRIME SOLVERS"", ""DISTRICTS"", ""RESOURCES"", ""FOLLOW US"", ""STAY INFORMED""]",[],[] 3454,https://city.milwaukee.gov/Directory/police/Crime-Maps-and-Statistics.htm#.Xt6WOzpKhPY,Crime Maps & Reports,200,Crime Maps & Statistics,"","[""Milwaukee Police Department\r\n""]","[""Crime Maps & Statistics\r\n"", ""Search Warrant Statistics""]",[],"["""", ""Welcome to the City of Milwaukee"", ""\n"", ""Residents\r\n"", """", ""Open for Business"", """", ""News & Events"", """", ""Refine Search"", ""\u00a0"", ""Menu"", ""\u00a0CALL for Action: 414-286-CITY"", ""\u00a0CLICK for Action""]","[""Mayor's Office"", ""City of Milwaukee"", ""Common Council""]","[""Established in 1846, the City of Milwakee is home to nearly 600,000 residents and is a city built on water with over 10 miles of lakefront shoreline. With three rivers and a Great Lake, water plays a key role in the city\u2019s history, identity, and economy.\nAbout Us |\u00a0Choose Milwaukee\u00a0| Contact Us""]" 3455,https://www.miamigov.com/My-Government/Departments/Civilian-Investigative-Panel-CIP,Complaints & Misconduct,200,Civilian Investigative Panel (CIP) - Miami,The Civilian Investigative Panel (CIP) provides for independent and impartial citizens’ oversight of the Miami Police Department.,"[""Civilian Investigative Panel (CIP)"", ""Top Services"", ""Process""]","[""File a Complaint Against a Miami Police Officer"", ""Join the Community-Police Mediation Program"", ""Department Head"", ""What We Do"", ""Staff"", ""Panel Members"", ""Investigations"", ""Community-Police Mediation Program"", ""Reports and Data"", ""Contact Us"", ""\r\n\t\t\tMeetings & Agendas\r\n\t\t"", ""\r\n\t\t\tFiling a Complaint\r\n\t\t"", ""\r\n\t\t\tApply to be a Member\r\n\t\t""]","[""Message from City Manager Art Noriega V"", ""\nRodney Jacobs\n"", ""Filing a Complaint"", ""Phone"", ""Email"", ""Location"", ""Contact Us"", ""Share & Connect"", ""Visit Other Miami Sites"", ""Digital Cities""]",[],[],[] @@ -3992,8 +3992,8 @@ This dataset includes criminal offenses in the City and County of Denver for the 3473,https://city.milwaukee.gov/ImageLibrary/Groups/mpdAuthors/SOP/270-FIELDTRAININGANDEVALUATIONPROGRAM.pdf,Policies & Contracts,200,"","",[],[],[],[],[],[] 3474,https://data.montgomerycountymd.gov/Public-Safety/Daily-Arrests/xhwt-7h2h,Arrest Records,200,Daily Arrests | Open Data Portal,"","[""""]","[""Menu""]",[],[],[],[] 3475,https://public.powerdms.com/MESAPD/tree/documents/266424,Policies & Contracts,200,PowerDMS,"",[],[],[],[],[],[] -3476,https://www.montgomerycountymd.gov/pol/data/use-of-force-report.html,Use of Force Reports,200," - Use of force report page, MCPD, Montgomery County, MD +3476,https://www.montgomerycountymd.gov/pol/data/use-of-force-report.html,Use of Force Reports,200," + Use of force report page, MCPD, Montgomery County, MD ","",[],"[""Use of Force Reports""]",[],"[""POLICE CONTACTS"", ""FOR CRIME SOLVERS"", ""DISTRICTS"", ""RESOURCES"", ""FOLLOW US"", ""STAY INFORMED""]",[],[] 3477,https://www.nashville.gov/departments/police,Contact Info & Agency Meta,200,Metropolitan Nashville Police Department | Nashville.gov,Official website of the Metropolitan Government of Nashville and Davidson County.,"["" \n\n Metropolitan Nashville Police Department\n \n\n""]","[""Breadcrumb"", ""\n Services\n "", ""Contact"", ""\n Featured News\n "", ""\n Police Events\n "", ""\n Highlighted Information\n "", ""Police Precinct Lookup"", ""\n Quick Links\n "", ""\n I Want To...\n "", ""\n Report Information to Police\n "", ""\n Mobile Apps\n "", ""Nashville.gov"", ""Quick Links"", ""Contact"", ""Connect""]","[""\n We're Hiring!\n "", ""Helpful Information"", ""Domestic Violence Division"", ""In Memoriam"", ""Enter your address"", ""Results""]",[],[],[] 3478,https://www.miami-police.org/DeptOrders/MPD_Departmental_Orders.pdf,Policies & Contracts,200,"","",[],[],[],[],[],[] @@ -4005,8 +4005,8 @@ This dataset includes criminal offenses in the City and County of Denver for the 3484,https://npd.newarkpublicsafety.org/statistics/transparency,Use of Force Reports,404,"","",,,,,, 3485,https://data.nola.gov/Public-Safety-and-Preparedness/NOPD-Misconduct-Complaints/gz2m-ef5u,Complaints & Misconduct,200,NOPD Misconduct Complaints | Data.NOLA.gov,"","[""""]","[""Menu""]",[],[],[],[] 3486,http://gisapps1.mapoakland.com/callsforservice/ ,Calls for Service,404,"","",,,,,, -3487,https://www.nola.gov/nopd/contact-us/,Contact Info & Agency Meta,200," - NOPD - Contact Us - City of New Orleans +3487,https://www.nola.gov/nopd/contact-us/,Contact Info & Agency Meta,200," + NOPD - Contact Us - City of New Orleans ","","[""The City of New Orleans"", ""Contact Us\r\n\r\n\r\n\r\n""]","[""Mayor LaToya Cantrell"", ""General Inquiries"", ""Contact NOPD Districts"", ""Contact NOPD Specialized Units"", ""Call NOLA 311 for Quality of Life concerns"", ""Monthly District Meetings"", ""Where Y'At""]","[""Services & Information"", ""Departments"", ""Government"", ""NOLA 311"", ""News"", ""Event Calendar"", ""Data, Maps & Apps"", ""Translate""]","[""Code Enforcement & Blight"", ""Doing Business with the City"", ""Jobs"", ""Ordinances & Regulations"", ""Parking"", ""Permits & Licenses"", ""Public Records"", ""Public Safety"", ""Report a Problem"", ""Requests to the Mayor and Office"", ""Streets, Catch Basins, Streetlights, & Sidewalks"", ""Taxes"", ""Tickets and Violations"", ""Traffic & Transportation"", ""Trash & Recycling"", ""City Offices"", ""Parish Offices"", ""Boards and Commissions"", ""Request service and information"", ""NOPD Makes Arrests in Four Burglaries Including A.P.E. Burglary"", ""NOPD Seeking to Identify Suspect in Simple Burglary"", ""NOPD Seeking Suspect in Aggravated Assault Investigation"", ""NOPD Investigating Homicide in Fifth District"", ""City of New Orleans to Activate Citywide Freeze Plan from Jan. 19 through Jan. 22"", ""NOPD Arrests Suspect in Homicide Investigation"", ""City of New Orleans Announces Lincoln Beach Redevelopment Master Planning Meeting on Tuesday, Jan. 23"", ""City of New Orleans Reminds Jackson Square Artists of Permit Deadline"", ""NOPD Arrests Suspect in Two Homicide Investigations"", ""Open Data"", ""Dashboards"", ""Maps & GIS"", ""Websites & Apps""]","[""! Due to scheduled maintenance, our websites may be unavailable Tuesday, Jan. 23, from 6 p.m. - 10 p.m.."", ""Search and Find Permits"", ""Brake & Bike Tags"", ""Contractor Info For Residents"", ""Permits & Licenses"", ""Permitting Help & Support""]",[] 3488,https://www.oaklandca.gov/topics/use-of-force-definitions-and-policies ,Policies & Contracts,404,"","",,,,,, 3489,https://data.nola.gov/Public-Safety-and-Preparedness/Stop-and-Search-Field-Interviews-/kitu-f4uy,Stops,200,Stop and Search (Field Interviews) | Data.NOLA.gov,"","[""""]","[""Menu""]",[],[],[],[] @@ -4020,10 +4020,10 @@ This dataset includes criminal offenses in the City and County of Denver for the 3497,https://opendata.cityofnewyork.us/data/,List of Data Sources,200,NYC Open Data - Data,NYC Open Data helps New Yorkers use and learn about City data,"[""Data""]","[""New Datasets"", ""Popular Datasets"", ""Datasets by Category"", ""Datasets by Agency""]",[],[],"[""You are leaving the City of New York\u2019s website.""]",[] 3498,https://npd.newarkpublicsafety.org/assets/docs/crimestats/cw/20211114.pdf,Crime Statistics,404,"","",,,,,, 3499,https://filetransfer.nashville.gov/portals/0/sitecontent/Police/docs/Strategic%20Development/MNPDManual.pdf,Policies & Contracts,404,"","",,,,,, -3500,https://www.newhavenct.gov/gov/depts/nhpd/division/internal_affairs/general_orders.htm,Policies & Contracts,200," - - New Haven, CT | Home - +3500,https://www.newhavenct.gov/gov/depts/nhpd/division/internal_affairs/general_orders.htm,Policies & Contracts,200," + + New Haven, CT | Home + ","New Haven, CT, Yale University, Things to do in New Haven, Restaurants in New Haven, New Haven attractions, Events in New Haven, New Haven nightlife, Wooster Square, Yale New Haven Hospital, East Rock Park, New Haven pizza, New Haven museums, Shopping in New Haven, New Haven history, New Haven parks, New Haven neighborhoods, Arts and Schools","[""New Haven, CT""]","[""City of New Haven"", ""Long Wharf Park Plan"", ""Solar for All"", ""New HVN & Avelo Airlines"", ""Together New Haven"", ""The American Rescue Plan"", ""City of New Haven - Municity"", ""Report a Problem: Build a Stronger Community"", ""Boathouse at Canal Dock"", ""Visit one of our Parks"", ""Union Station (NHV)"", ""News"", ""Calendar"", ""\nJanuary 2024\n"", ""\nJan 2024\n"", ""Stay Up To Date With The Latest News""]","[""I\u2019d Like To\u2026"", ""Pay..."", ""Parking Ticket""]",[],[],[] 3501,https://www.pdcn.org/,Contact Info & Agency Meta,200,"Nassau County Police, NY | Official Website","","[""\n\n""]",[],"[""Loading"", """", """"]","[""\nBurglary - Westbury "", ""\nTraffic Advisory - Elmont *UPDATE* "", ""\nHomicide - Hempstead *UPDATE* ""]",[],[] 3502,https://npd.newarkpublicsafety.org/assets/docs/rules/npd_rules_regulations_2010.pdf,Policies & Contracts,404,"","",,,,,, @@ -4035,10 +4035,10 @@ This dataset includes criminal offenses in the City and County of Denver for the ","","[""Welcome to the City of Oakland\u2019s Open Data Platform""]","[""Menu"", ""CrimeWatch Maps Past 90-Days"", ""Oakland Call Center Service Request Data"", ""\u201cShow me the money\u201d Campaign Finance app"", ""Reimagining Public Safety"", ""Finance"", ""Education"", ""Infrastructure"", ""Environment"", ""City Government"", ""Property"", ""Public Safety"", ""Social Services"", ""Economic Development"", ""Oakland Data""]",[],[],[],[] 3508,https://www1.nyc.gov/site/ccrb/policy/MOS-records.page,Complaints & Misconduct,200,mos-history,"","[""NYPD Member of Service Histories""]","[""Search CCRB NYPD Member of Service Histories"", """"]","[""""]",[],[],[] 3509,https://nolaipm.gov/annual-reports/,Complaints & Misconduct,200,Annual Reports – New Orleans Independent Police Monitor,"","[""Annual Reports""]","[""We are here to assist"", ""We Will Keep You Informed Every Step Of The Way""]",[],"[""we are good at what we do"", ""Navigation"", ""Join Our Movement""]",[],[] -3510,https://www.okc.gov/departments/police/crime-prevention-data/crime-stats,Crime Maps & Reports,200," - - Crime Map | City of OKC - +3510,https://www.okc.gov/departments/police/crime-prevention-data/crime-stats,Crime Maps & Reports,200," + + Crime Map | City of OKC + ","","[""City of OKC"", ""Crime Map""]","[""Menu"", ""LexisNexis Crime Map \r\n(external site, set the date range to the month prior)""]","[""Chrome"", ""Internet Explorer"", ""Firefox"", ""Internet Explorer"", ""Safari""]",[],[],[] 3511,https://www.oaklandca.gov/resources/oakland-police-department-opd-policies-1 ,Policies & Contracts,404,"","",,,,,, 3512,https://www.newhavenct.gov/government/departments-divisions/new-haven-police-department/divisions/nhpd-internal-affairs,Use of Force Reports,404,"","",,,,,, @@ -4046,19 +4046,19 @@ This dataset includes criminal offenses in the City and County of Denver for the 3514,https://www.okc.gov/home/showpublisheddocument/25327/637703385883370000,Use of Force Reports,200,"","",[],[],[],[],[],[] 3515,https://www.newhavenct.gov/gov/depts/nhpd/,Contact Info & Agency Meta,404,"","",,,,,, 3516,https://www.justice.gov/sites/default/files/crt/legacy/2011/03/17/nopd_report.pdf,Complaints & Misconduct,200,"","",[],[],[],[],[],[] -3517,https://www.okc.gov/departments/police/crime-prevention-data/jail-blotter,Arrest Records,200," - - Jail Blotter | City of OKC - +3517,https://www.okc.gov/departments/police/crime-prevention-data/jail-blotter,Arrest Records,200," + + Jail Blotter | City of OKC + ","","[""City of OKC"", ""Jail Blotter""]","[""Menu""]","[""Chrome"", ""Internet Explorer"", ""Firefox"", ""Internet Explorer"", ""Safari""]",[],[],[] 3518,https://nola.gov/getattachment/NOPD/Policies/Chapter-33-1-Training-and-Career-Development-EFECTIVE-6-18-17.pdf/,Policies & Contracts,200,"","",[],[],[],[],[],[] 3519,https://www.okc.gov/home/showpublisheddocument/25327/637703385883370000,Officer Involved Shootings,200,"","",[],[],[],[],[],[] 3520,https://www.nysda.org/page/LawEnforcementDisciplinaryRecords,Complaints & Misconduct,403,"","",,,,,, 3521,https://www1.nyc.gov/assets/nypd/downloads/pdf/use-of-force/use-of-force-2019-2020-11-03.pdf,Policies & Contracts,200,"","",[],[],[],[],[],[] -3522,https://www.newhavenct.gov/government/departments-divisions/new-haven-police-department/compstat-reports,Crime Statistics,200," - - CompStat Reports | New Haven, CT - +3522,https://www.newhavenct.gov/government/departments-divisions/new-haven-police-department/compstat-reports,Crime Statistics,200," + + CompStat Reports | New Haven, CT + ","","[""New Haven, CT"", ""CompStat Reports""]","[""Explore this page..."", ""Stay Up To Date With The Latest News""]","[""I\u2019d Like To\u2026"", ""Pay..."", ""Parking Ticket""]",[],[],[] 3523,http://npd.newarkpublicsafety.org/statistics/arrestdata,Arrest Records,404,"","",,,,,, 3524,https://nola.gov/getattachment/NOPD/Policies/Chapter-1-3-Use-of-Force-EFFECTIVE-4-01-18.pdf/,Policies & Contracts,404,"","",,,,,, @@ -4075,23 +4075,23 @@ This dataset includes criminal offenses in the City and County of Denver for the 3534,https://www1.nyc.gov/site/nypd/about/about-nypd/manual.page,Policies & Contracts,200,NYPD Department Manual,NYPD Department Manual,"[""Patrol Guide"", ""Administrative Guide""]","[""New York's Finest"", """"]",[],[],[],[] 3535,https://www.oaklandca.gov/topics/use-of-force-uof-levels,Use of Force Reports,200,City of Oakland | Use of Force (UOF) Levels,"The official website of the City of Oakland. Find out about meetings, request City services through OAK 311, or contact the Mayor and City Council.","[""Use of Force (UOF) Levels""]","[""Resources"", ""Topics"", ""About""]","[""Search oaklandca.gov"", ""Popular on oaklandca.gov""]",[],"[""Your Government"", ""How can we help?"", ""Sign up for updates""]",[] 3536,https://data.cityofnewyork.us/Public-Safety/The-Stop-Question-and-Frisk-Data/ftxv-d5ix,Stops,200,"The Stop, Question and Frisk Data | NYC Open Data","","[""""]","[""Menu""]",[],[],[],[] -3537,https://datadriven.nola.gov/open-data/,List of Data Sources,200," - Open Data - DataDriven - City of New Orleans +3537,https://datadriven.nola.gov/open-data/,List of Data Sources,200," + Open Data - DataDriven - City of New Orleans ","","[""DataDriven"", ""Open Data\n""]","[""Fueling the laboratory of innovation and change in New Orleans"", ""Search for data\n\n\n\n Find data\n\nor browse the data.nola.gov catalog\n"", ""Featured datasets"", ""New datasets"", ""Open Data Skills"", ""Analysis and Visualization Skills"", ""Geographic Information Skills"", ""Share your data with us"", ""Have questions? Contact us""]","[""or browse the data.nola.gov catalog"", ""Calls for Service"", ""311 Calls (2012-Present)"", ""Electronic Police Report 2017"", ""Occupational Business Licenses"", ""NOPD Misconduct Complaints"", ""Housing and Urban Development (HUD) Grants"", ""Bike Lanes"", ""Socrata"", ""Power BI"", ""GIS and New Orleans""]",[],[],[] 3538,https://www.nashville.gov/sites/default/files/2021-12/Department-Manual-Use-of-Force-Policy.pdf?ct=1640874735,Policies & Contracts,200,"","",[],[],[],[],[],[] 3539,https://www.crimemapping.com/map/agency/265 ,Crime Maps & Reports,200,"","",[],[],[],[],[],[] 3540,"https://cityprotect.com/map/list/agencies/5ce2bd9e3934cc0011edac8d?toDate=2020-06-10T23:59:59.999Z&fromDate=2020-06-07T00:00:00.000Z&pageSize=2000&parentIncidentTypeIds=149,150,148,8,97,104,165,98,100,179,178,180,101,99,103,163,168,166,12,161,14,16,15&zoomLevel=13&latitude=40.722813032254074&longitude=-74.15492079233789&days=1,2,3,4,5,6,7&startHour=0&endHour=24&timezone=%2B00:00",Crime Maps & Reports,200,CityProtect,"",[],[],[],[],[],[] -3541,https://www.okc.gov/departments/police/contact-us,Contact Info & Agency Meta,200," - - Contact Us | City of OKC - +3541,https://www.okc.gov/departments/police/contact-us,Contact Info & Agency Meta,200," + + Contact Us | City of OKC + ","","[""City of OKC"", ""Contact Us""]","[""Menu"", ""To Commend an Officer"", ""To commend or recognize an officer for his/her actions, send an email by clicking here.\u00a0"", ""To Make a Formal Complaint Against a Police Employee"", ""Divisional/Unit Directory"", ""Emergency "", ""Police Dispatch (if calling from out of town)"", ""Crime Stoppers"", ""Social Media""]","[""Chrome"", ""Internet Explorer"", ""Firefox"", ""Internet Explorer"", ""Safari""]",[],[],[] 3542,https://filetransfer.nashville.gov/portals/0/sitecontent/Police/docs/Administrative%20Svcs/MNPD%20Basic%20Course%20Curriculum.pdf,Policies & Contracts,404,"","",,,,,, 3543,https://data.nola.gov/Public-Safety-and-Preparedness/Calls-for-Service-2021/3pha-hum9,Calls for Service,200,Calls for Service 2021 | Data.NOLA.gov,"","[""""]","[""Menu""]",[],[],[],[] -3544,https://www.okc.gov/departments/police/crime-prevention-data/crime-stats,Crime Statistics,200," - - Crime Map | City of OKC - +3544,https://www.okc.gov/departments/police/crime-prevention-data/crime-stats,Crime Statistics,200," + + Crime Map | City of OKC + ","","[""City of OKC"", ""Crime Map""]","[""Menu"", ""LexisNexis Crime Map \r\n(external site, set the date range to the month prior)""]","[""Chrome"", ""Internet Explorer"", ""Firefox"", ""Internet Explorer"", ""Safari""]",[],[],[] 3545,https://www.nassaucountyny.gov/4913/Use-of-Force-Policy,Policies & Contracts,200,"Use of Force Policy | Nassau County, NY - Official Website",Use of Force Policy,"[""\r\n\r\nUse of Force Policy\t\t""]",[],"[""Loading""]",[],[],[] 3546,https://www1.cityoforlando.net/opd/activecalls/activecadpolice.xml,Calls for Service,200,"","",[],[],[],[],[],[] @@ -4130,14 +4130,14 @@ This dataset includes criminal offenses in the City and County of Denver for the 3578,https://www.cityofsacramento.org/Police/Crime,Crime Statistics,200,Police Department | City of Sacramento,Sacramento Police Department,"[""Sacramento Police Department""]","[""About"", ""Your SacPD"", ""Index"", ""Social Media""]","[""Search for content"", ""News and Information"", ""Reporting"", ""Popular Services"", ""More"", ""Call our Non-Emergency Number: 916-808-5471"", ""We're hiring!"", ""Meet the Chief"", ""Uncrewed Aircraft Systems (UAS)"", ""In the News""]",[],[],[] 3579,https://raleighnc.gov/services/safety/internal-affairs-unit,Complaints & Misconduct,200,Internal Affairs Unit | Raleighnc.gov,"","[""Internal Affairs Unit\n""]","[""Main navigation"", ""Secondary"", ""Main navigation"", ""Jump To:"", ""Filing a Complaint"", ""Disposition of Complaint"", ""Request Recordings - BWCs and MVRs"", ""Citizen Complaint Cases Investigated by RPD"", ""How to Compliment an Employee"", ""Share"", ""Contact"", ""Subscribe"", ""City of Raleigh/s social media accounts"", ""Select Language""]",[],[],[],[] 3580,https://data.providenceri.gov/,List of Data Sources,200,Open Data | City of Providence | Open Data | City of Providence,"",[],"[""Menu""]",[],[],[],[] -3581,phoenix.gov/police/contact-police,Contact Info & Agency Meta,200," - - Police - - - Contact Police - - +3581,phoenix.gov/police/contact-police,Contact Info & Agency Meta,200," + + Police + + + Contact Police + + ","","[""\r\n \r\n \r\n Contact Police\r\n \r\n ""]","["""", """", """", ""Email"", "" \r\n Phone"", "" \r\n Silent Witness"", "" \r\n Mailing Address\u00a0"", """"]",[],[],"[""\u200bShare this page\u200b""]",[] 3582,http://www.portlandmaine.gov/DocumentCenter/View/31084/Use-of-Force-Review-Report-2020,Use of Force Reports,404,"","",,,,,, 3583,"https://communitycrimemap.com/?address=Sacramento,CA&crimeTypes=%5B1,2,4,6,7,8,10,11,12,14,15,16,17,18%5D&startDate=7&endDate=0",Crime Maps & Reports,200,LexisNexis® Community Crime Map,"",[],[],[],[],[],[] @@ -4145,12 +4145,12 @@ This dataset includes criminal offenses in the City and County of Denver for the 3585,https://www.portlandoregon.gov/police/65520,Stops,200,Stops Data Collection Reports | Portland.gov,The Portland Police Bureau’s goal is to be a leader in the collection and analysis of traffic and pedestrian stops data and to continually improve the quality of the processes involved in both collecting and analyzing the data.,"[""Stops Data Collection Reports\n""]","[""General Information"", ""Elected Officials"", ""Breadcrumb"", ""Quarterly Reports"", ""Annual Reports"", ""Presentations"", ""Archived Reports"", ""Topics"", ""General information"", ""Follow on Social Media"", ""Terms, policies"", ""Portland.gov"", ""City of Portland, Oregon""]",[],[],[],[] 3586,https://www.portlandmaine.gov/Archive.aspx?AMID=73,Complaints & Misconduct,404,"","",,,,,, 3587,https://www.cityofsacramento.org/Police/Transparency/Officer-Involved-Shootings,Officer Involved Shootings,200,Police Department | City of Sacramento,Sacramento Police Department,"[""Sacramento Police Department""]","[""About"", ""Your SacPD"", ""Index"", ""Social Media""]","[""Search for content"", ""News and Information"", ""Reporting"", ""Popular Services"", ""More"", ""Call our Non-Emergency Number: 916-808-5471"", ""We're hiring!"", ""Meet the Chief"", ""Uncrewed Aircraft Systems (UAS)"", ""In the News""]",[],[],[] -3588,https://wake.nc.networkofcare.org/mh/services/agency.aspx?pid=raleighpolicedepartment_1458_2_0,Contact Info & Agency Meta,200," - Raleigh Police Department - Raleigh - Wake County, North Carolina +3588,https://wake.nc.networkofcare.org/mh/services/agency.aspx?pid=raleighpolicedepartment_1458_2_0,Contact Info & Agency Meta,200," + Raleigh Police Department - Raleigh - Wake County, North Carolina ","The goal of the Raleigh Police Department is to make Raleigh one of the safest cities in America. To do that, we continually advance strategies that prevent crime. We find ways to engage the community Wake County, North Carolina ",[],"[""Wake County"", ""Important Links And Resources"", ""\nRaleigh Police Department\n"", ""Share: "", ""Contact: ""]","[""Wake Network of Care\n"", ""State Legislate"", ""Federal Legislate"", ""Languages"", ""Other Topics That May Be Useful"", ""User Reviews"", ""Wake Network of Care"", ""For Technical Assistance:""]","[""\r\n\t\t\t\t\t\tOne Site. All Services. \r\n\t\t\t\t\t"", ""Tell us about the person you're helping:"", ""Get Directions To: "", ""Improving Search Results""]",[],[] 3589,https://www.providenceri.gov/wp-content/uploads/2021/07/230.01-In-Service-Training.pdf,Policies & Contracts,200,"","",[],[],[],[],[],[] -3590,"https://www.phoenix.gov/police/outreach-initiatives#:~:text=Use%20of%20Force%20Policy&text=Officers%20are%20trained%20to%20utilize,the%20weapons%2C%20tactics%20or%20techniques.",Policies & Contracts,200," - Phoenix Police Department Outreach Initiatives +3590,"https://www.phoenix.gov/police/outreach-initiatives#:~:text=Use%20of%20Force%20Policy&text=Officers%20are%20trained%20to%20utilize,the%20weapons%2C%20tactics%20or%20techniques.",Policies & Contracts,200," + Phoenix Police Department Outreach Initiatives ",Download and view reports on community outreach initiatives by the city of Phoenix Police Department.,"[""\r\n \r\n \r\n Outreach Initiatives\r\n \r\n ""]","["""", """", """", ""Critical Incident Transparency Protocol"", ""City Manager\u2019s City Council Report on Community & Police Trust Initiative"", ""2017 Presidential Visit"", ""Use of Force Policy"", ""Annual\u00a0Officer Involved Shoot\u200b\u200b\u200b\u200b\u200bings\u00a0\u200b\u200bReports"", ""\u200b\u200b\u200bAnnual Cultural Competency, Diversity & Community Engagement Training Reports"", ""\u200b\u200b\u200bAnnual National Initiative for Building Community Trust and Justice Training Reports"", ""Quarterly Police Department Employee Demographics Reports\u200b\u200b\u200b"", ""\u200b\""Listening Sessions\"" Schedule"", ""Bi-Annual Community Engagement Reports\u200b\u200b\u200b"", ""Employee Excellence Summaries"", ""The President\u2019s Task Force on 21st Century Policing\u00a0"", """"]",[],[],"[""\u200bShare this page\u200b""]",[] 3591,https://www.portlandoregon.gov/police/76875,Use of Force Reports,200,Sign-In Form,"","[""The City of Portland, Oregon"", ""Sign-In""]",[],"[""New to PortlandOregon.gov?""]",[],[],[] 3592,https://cprbpgh.org/148681,Complaints & Misconduct,200,"Current CPRB Case Review Agenda (for review on February 22nd, 2022) » Pittsburgh Citizen Police Review Board (CPRB)","","[""CITIZEN POLICE REVIEW BOARD \u2022\u00a0CITY OF PITTSBURGH \u2022 "", ""CITIZEN POLICE REVIEW BOARD \u2022\u00a0CITY OF PITTSBURGH \u2022"", ""Current CPRB Case Review Agenda (for review on February 22nd, 2022)"", ""Current CPRB Case Review Agenda (for review on February 22nd, 2022)""]","[""\n Contact CPRB\n""]",[],"[""About the CPRB"", ""Recently Added"", ""CPRB 2024 Meeting Dates"", ""Address"", ""Phone"", ""Fax""]",[],[] @@ -4242,10 +4242,10 @@ SMPD Legacy Policies are policies from past administrations.","[""\r\n\r\nSMPD P 3672,https://www.sanjoseca.gov/your-government/appointees/independent-police-auditor/publications/archived-reports,Complaints & Misconduct,404,"","",,,,,, 3673,https://www.sandiego.gov/police/contact,Contact Info & Agency Meta,200,Contact | City of San Diego Official Website,"","[""City of San Diego Official Website"", ""Contact""]","[""Main navigation"", ""Leisure"", ""Resident Resources"", ""Doing Business"", ""Library"", ""Public Safety"", ""City Hall"", ""Accessibility Tools"", ""Liaisons"", ""Directory"", ""Pages"", ""Footer""]",[],"[""Parks"", ""Outdoors"", ""Neighborhoods"", ""Recreational Activities"", ""Street Maintenance"", ""Plan"", ""Fix"", ""Build"", ""Programs & Events"", ""Services"", ""Kids & Teens"", ""eCollection"", ""Police"", ""Fire-Rescue"", ""Lifeguards"", ""City Officials"", ""City Government""]",[],[] 3674,https://www.seattle.gov/police-manual/title-1---department-administration/1070---training,Policies & Contracts,404,"","",,,,,, -3675,https://www.sjpd.org/community/community-services/community-service-officers,Contact Info & Agency Meta,200," - - Community Service Officer Program (CSO) | San Jose Police Department, CA - +3675,https://www.sjpd.org/community/community-services/community-service-officers,Contact Info & Agency Meta,200," + + Community Service Officer Program (CSO) | San Jose Police Department, CA + ","","[""San Jose Police Department, CA"", ""Community Service Officer Program (CSO)""]","[""\nJanuary 2024\n"", ""\nJan 2024\n"", ""Jump to subpage..."", ""FAQs"", ""What type of training do CSOs receive?"", ""How many CSOs does the Police Department employ?"", ""How are the CSOs deployed?"", ""What days and hours do the CSOs work?"", ""What type of uniforms do the CSOs wear?"", ""What type of vehicles do the CSOs drive?"", ""Meet a Community Service Officer:""]",[],[],[],[] 3676,https://data.sandiego.gov/datasets/police-calls-for-service/,Calls for Service,200,Police Calls for Service - City of San Diego Open Data Portal," Calls dispatched by the San Diego Police Department’s communicationsdispatch center. @@ -4264,10 +4264,10 @@ SMPD Legacy Policies are policies from past administrations.","[""\r\n\r\nSMPD P 3688,http://www.slcpd.com/contact-us/,Contact Info & Agency Meta,200,Contact Us – SLCPD,"Provides command staff profiles, bureaus within the department, how to get involved and become informed, employment information, and news releases.",[],"[""Contacting the Salt Lake City Police Department"", ""Contact Us""]","[""Online Police Reporting"", ""Employment Questions"", ""Hire an Officer/Police OfficerSecondary Employment"", ""Frequently askedQuestions""]","[""Online Police Report"", ""Stay Connected"", ""(801) 799-3000"", ""(801) 799-3100"", ""(801) 799-NEWS (6397)"", ""(801) 799-3367"", ""(801) 799-3041"", ""(801) 575-2401"", ""(801) 799-3533"", ""slcpd@slcgov.com"", ""slcpdpr@slcgov.com"", ""SLCPDOutreach@slcgov.com"", ""slcpdmotor@slcgov.com"", ""Event/Speaking Request Form"", ""Meeting Request Form"", ""askthechief@slcgov.com"", ""Evidence and Crime Lab"", ""Pioneer Precinct"", ""Public Safety Building"", ""(801) 799-3000"", ""(801) 799-3100"", ""(801) 799-NEWS (6397)"", ""(801) 799-3367 "", ""(801) 575-2470"", ""(801) 799-3533"", ""slcpd@slcgov.com"", ""slcpdpr@slcgov.com"", ""SLCPDOutreach@slcgov.com"", ""slcpdmotor@slcgov.com"", ""Evidence and Crime Lab"", ""Pioneer Precinct"", ""Public Safety Building"", ""Find the Appropriate Contact to Make a Request"", ""Contact"", ""Quick Links"", ""Recent News"", ""Latest Tweets""]","[""LGBTQ Contact, brent.weisberg@slcgov.com\n"", ""LGBTQ Contact, brent.weisberg@slcgov.com\n""]","[""Non-Emergency"", ""General Information"", ""Media Inquiries / Communications and Media Relations Unit"", ""Community Outreach Unit / LGBTQ Contact"", ""Evidence/Property"", ""Airport"", ""Community Connection Center"", ""General Email Address"", ""Media Inquiries / Public Relations Unit"", ""Community Outreach Unit"", ""Traffic Enforcement"", ""Non-Emergency"", ""General Information"", ""Media Inquiries / Communications and Media Relations Unit"", ""Community Outreach Unit / LGBTQ Contact"", ""Evidence/Property"", ""Airport"", ""Community Connection Center"", ""General Email Address"", ""Media Inquiries / Public Relations Unit"", ""Community Outreach Unit"", ""Traffic Enforcement"", ""(801) 799-3113"", ""www.slcpd.com/faq\n""]" 3689,https://sfgov.org/policecommission/police-commission-disciplinary-actions-veronese-reports,Complaints & Misconduct,200,"Police Commission Disciplinary Actions - ""Veronese"" Report | San Francisco",Quarterly report of disciplinary actions by the Police Commission,"[""Police Commission Disciplinary Actions - \""Veronese\"" Report""]","[""\n Documents\n "", ""\n Documents\n "", ""Footer menu"", ""Footer Bottom""]","[""\n 2023\n "", ""\n 2022\n "", ""\n 2021\n "", ""\n 2020\n ""]","[""Departments""]",[],[] 3690,https://www.sanmarcostx.gov/DocumentCenter/View/19676/31-Basic-Training-Requirements,Policies & Contracts,200,"","",[],[],[],[],[],[] -3691,"https://www.sjpd.org/records/crime-stats-maps/force-analysis-data#:~:text=The%20San%20Jose%20Police%20Department,on%20our%20public%20web%20site.&text=For%20additional%20information%2C%20please%20contact,at%20408%2D277%2D5200.",Use of Force Reports,200," - - Force Analysis Data | San Jose Police Department, CA - +3691,"https://www.sjpd.org/records/crime-stats-maps/force-analysis-data#:~:text=The%20San%20Jose%20Police%20Department,on%20our%20public%20web%20site.&text=For%20additional%20information%2C%20please%20contact,at%20408%2D277%2D5200.",Use of Force Reports,200," + + Force Analysis Data | San Jose Police Department, CA + ","","[""San Jose Police Department, CA"", ""Force Analysis Data""]","[""\nJanuary 2024\n"", ""\nJan 2024\n"", ""\r\nWritten Use-of-Force Analysis Reports\r\n"", ""Interactive Dashboards""]",[],[],[],[] 3692,https://www.sanfranciscopolice.org/stay-safe/crime-data/crime-reports,Crime Statistics,200,Crime Reports | San Francisco Police Department,"","[""Crime Reports""]","[""Popular Search Terms:"", ""CompStat Policing in San Francisco"", ""CompStat Reports""]","[""Non-Emergency"", ""City Services & Questions"", ""Anonymous Tip Line"", ""Text a Tip"", ""Contact Your Police Station"", ""SFPD Headquarters""]",[],[],[] 3693,https://www.sanmarcostx.gov/DocumentCenter/View/19174/61-Response-to-Resistance-and-Aggression,Policies & Contracts,200,"","",[],[],[],[],[],[] @@ -4277,7 +4277,7 @@ SMPD Legacy Policies are policies from past administrations.","[""\r\n\r\nSMPD P 3697,https://www.sanfranciscopolice.org/your-sfpd/published-reports,Stops,200,Published Reports | San Francisco Police Department,"","[""Published Reports""]","[""Popular Search Terms:"", ""Department Published Reports"", ""Other Agency Reports"", ""San Francisco Police Department""]","[""Non-Emergency"", ""City Services & Questions"", ""Anonymous Tip Line"", ""Text a Tip"", ""Contact Your Police Station"", ""SFPD Headquarters"", ""Racial Equity & Inclusion Plan (REAP)"", ""Quarterly Activity & Data Report (QADR)"", ""Domestic Violence Data Report"", ""Crime Victim Data Reporting"", ""Investigated Hate Crimes Data"", ""Use of Force, Stops & Arrests"", ""Early Intervention System"", ""Firearms Discharges"", ""Officer-Involved Shootings (OIS) Data"", ""Memorandum of Understanding (MOU) with the San Francisco District Attorney's Office"", ""Stops Data"", ""Historical Traffic Stops Reports"", ""San Francisco Police Department Sworn Demographics"", ""San Francisco Police Department Historical Annual Reports"", ""Audits of Electronic Communication Devices for Bias"", ""Department Staffing Study by Matrix Consulting Group"", ""Staffing Analysis of the San Francisco Police Department"", ""Internal Affairs Division Misconduct Reports"", ""Disciplinary Reports"", ""Collaborative Reform Initiative"", ""Academic Institution Reports"", ""Partner Agency Reports""]",[],[],[] 3698,https://stlouiscountypolice.com/who-we-are/policies-and-procedures/,Policies & Contracts,200,Policies and Procedures - St. Louis County Police,"","[""Policies and Procedures""]",[],[],[],"[""""]",[] 3699,https://data-stlcogis.opendata.arcgis.com/pages/open-data,List of Data Sources,200,Open Data,"Sharing St. Louis County's Data and the Tools to Visualize It What is Open Data? Open data is data that can be freely used, shared, and utilized by anyone. This data is provided by St. Louis County. You'll find maps, applications, reports, tables, and more. Click below to explore all of the available data or explore by category. All Data Community and Wellness Elections Imagery Property Information Public Safety Tax and Assessment Transportation Additional Resources Missouri Spatial Data Information Service Missouri Spatial Data Information Service- Making Missouri Available Digitally St. Louis Regional Data Alliance St. Louis Regional Data Alliance City of St. Louis Open Data Seal of the City of St. Louis Unlock the Data Explore Visualize & Analyze Build Share Anyone can use open data from St. Louis County Open Government at no cost. Download raw data and share your insights with your community or build new applications that serve specific users. Dig into the data. Highlight spatial patterns and discover trends. Develop new apps using open data. Embed analysis on your website. gis@stlouisco.com | 314.615.5000 | 41 S. Central Ave. | Clayton, MO 63105",[],[],[],[],[],[] -3700,https://tpdrecruiting.tucsonaz.gov/academy,Policies & Contracts,200,Academy | TPD Recruiting,"Welcome to the Southern Arizona Law Enforcement Training Center. Your journey begins here... The basic training program is a 24-week curriculum, designed to challenge students mentally, physically, and academically.","[""\n\n\n\n\nAcademy\n\n""]","[""Breadcrumb"", ""Welcome to the Southern Arizona Law Enforcement Training Center. Your journey begins here..."", ""Arriving at the Academy"", ""Vehicles & Parking"", ""Attire"", ""Grooming"", ""Meals"", ""Lockers"", ""Weapons"", ""Other Required Equipment and Supplies"", ""Lodging"", ""Standards of Conduct"", ""Training Standards"", ""Assignments & Examinations"", ""Physical Conditioning Standards"", ""General Exercise Pattern"", ""Cardiovascular Endurance"", ""Strength Training"", ""Flexibility"", ""Fitness Tests"", ""Police Officer Physical Aptitude Test"", ""Applied Skills Proficiency"", ""Firearms Training & Qualifications"", ""Driver's Training"", ""Report Writing"", ""Defensive Tactics Training"", ""Menu"", ""Social Media Menu""]","[""The following links will take you directly to the listed topic on this page.""]",[],[],[] +3700,https://tpdrecruiting.tucsonaz.gov/academy,Policies & Contracts,200,Academy | TPD Recruiting,"Welcome to the Southern Arizona Law Enforcement Training Center. Your journey begins here... The basic training program is a 24-week curriculum, designed to challenge students mentally, physically, and academically.","[""\n\n\n\n\nAcademy\n\n""]","[""Breadcrumb"", ""Welcome to the Southern Arizona Law Enforcement Training Center. Your journey begins here..."", ""Arriving at the Academy"", ""Vehicles & Parking"", ""Attire"", ""Grooming"", ""Meals"", ""Lockers"", ""Weapons"", ""Other Required Equipment and Supplies"", ""Lodging"", ""Standards of Conduct"", ""Training Standards"", ""Assignments & Examinations"", ""Physical Conditioning Standards"", ""General Exercise Pattern"", ""Cardiovascular Endurance"", ""Strength Training"", ""Flexibility"", ""Fitness tests"", ""Police Officer Physical Aptitude Test"", ""Applied Skills Proficiency"", ""Firearms Training & Qualifications"", ""Driver's Training"", ""Report Writing"", ""Defensive Tactics Training"", ""Menu"", ""Social Media Menu""]","[""The following links will take you directly to the listed topic on this page.""]",[],[],[] 3701,https://stlouiscountypolice.com/connect-with-us/,Contact Info & Agency Meta,200,Connect With Us - St. Louis County Police,"","[""Connect With US""]",[],[],[],"[""""]",[] 3702,https://policestandards.tucsonaz.gov/,Complaints & Misconduct,200,Tucson Police Professional Standards,Create your own initiative by combining existing applications with a custom site. Use this initiative to form teams around a problem and invite your community to participate.,[],[],[],[],[],[] 3703,https://siouxfalls.org/contactus/police/police-lec,Contact Info & Agency Meta,200,Police Law Enforcement Center - City of Sioux Falls,Contact information for the Police Law Enforcement Center in Sioux Falls.,"[""Police Law Enforcement Center""]","[""IN CASE OF AN EMERGENCY DIAL 911."", ""Police Patrol Contacts"", ""\r\n\t\t\tContact\r\n\t\t""]","[""Contact Us"", ""Quick Links"", ""Share & Connect""]",[],[],[] @@ -4290,8 +4290,8 @@ SMPD Legacy Policies are policies from past administrations.","[""\r\n\r\nSMPD P 3710,https://www.honolulupd.org/wp-content/uploads/2022/01/2021-Legislative-Report.pdf,Complaints & Misconduct,200,"","",[],[],[],[],[],[] 3711,https://public.powerdms.com/TAMPA/tree/documents/431884,Policies & Contracts,200,PowerDMS,"",[],[],[],[],[],[] 3712,http://www.slmpd.org/dept_contact.shtml,Contact Info & Agency Meta,200,Contact SLMPD,"",[],[],[],[],[],[] -3713,https://suffolkpd.org/Information-and-Policies/Historical-Traffic-Stop-Data,Stops,200," - Historical Traffic Stop Data +3713,https://suffolkpd.org/Information-and-Policies/Historical-Traffic-Stop-Data,Stops,200," + Historical Traffic Stop Data ","","[""Contact Us""]",[],[],"[""Facebook"", ""Facebook en Espa\u00f1ol"", ""Twitter"", ""YouTube"", ""Instagram"", ""Nixle"", ""Phone Directory"", ""Helpful Numbers"", ""852-Cops (2677)""]","[""Suffolkcountyny.gov"", ""Text Only Version"", ""This website provides valuable forms and information in order to address the needs of our community. If you have any questions or need additional information, please contact the Department at 631-852-6000 or email us at SCPDINFO@suffolkcountyny.gov. Interpretation services are available for individuals with Limited English Proficiency.""]",[] 3714,https://www.crimemapping.com/map/agency/165,Crime Maps & Reports,200,CrimeMapping.com - Helping You Build a Safer Community,"",[],[],[],[],[],[] 3715,"https://www.cityprotect.com/map/list/agencies?toDate=2021-12-26T23:59:59.999Z&fromDate=2021-12-23T00:00:00.000Z&pageSize=2000&parentIncidentTypeIds=149,150,148,8,97,104,165,98,100,179,178,180,101,99,103,163,168,166,12,161,14,16,15&zoomLevel=11&latitude=32.235000308515644&longitude=-110.95136753972832&days=1,2,3,4,5,6,7&startHour=0&endHour=24&timezone=%2B00:00&relativeDate=custom",Crime Maps & Reports,200,CityProtect,"",[],[],[],[],[],[] @@ -4306,11 +4306,11 @@ SMPD Legacy Policies are policies from past administrations.","[""\r\n\r\nSMPD P 3724,https://www.tulsapolice.org/contact-tpd/contact-usphone.aspx,Contact Info & Agency Meta,404,"","",,,,,, 3725,https://dataworks.siouxfalls.org/,List of Data Sources,200,City of Sioux Falls GIS,City of Sioux Falls GIS,[],[],[],[],[],[] 3726,https://www.tucsonaz.gov/files/police/general-orders/2000USE_OF_FORCE.pdf,Policies & Contracts,404,"","",,,,,, -3727,https://suffolkpd.org/Contact-Us,Contact Info & Agency Meta,200," - Contact Us +3727,https://suffolkpd.org/Contact-Us,Contact Info & Agency Meta,200," + Contact Us ","","[""Contact Us""]","[""Contact Us""]",[],"[""Facebook"", ""Facebook en Espa\u00f1ol"", ""Twitter"", ""YouTube"", ""Instagram"", ""Nixle"", ""Phone Directory"", ""Helpful Numbers"", ""852-Cops (2677)""]","[""Suffolkcountyny.gov"", ""Text Only Version"", ""This website provides valuable forms and information in order to address the needs of our community. If you have any questions or need additional information, please contact the Department at 631-852-6000 or email us at SCPDINFO@suffolkcountyny.gov. Interpretation services are available for individuals with Limited English Proficiency.""]",[] -3728,https://suffolkcountyny.gov/Police-Reform/Resources,Complaints & Misconduct,200," - Resources +3728,https://suffolkcountyny.gov/Police-Reform/Resources,Complaints & Misconduct,200," + Resources ","Suffolk County, New York has a vibrant history, illustrated in our important Native American and Revolutionary-era historical sites as well as the lab where DNA was discovered.","[""Resources"", "" Contact Us:""]",[],"["" \n"", ""public\u200b.input\u200b@suffolkcountyny\u200b.gov""]",[],"[""Text Only Version""]",[] 3729,https://www.slmpd.org/images/2020_Annual_Report.pdf,Calls for Service,200,"","",[],[],[],[],[],[] 3730,https://stlouiscountypolice.com/st-louis-county-municipal-crime-map/,Crime Maps & Reports,200,St. Louis County Crime Map - St. Louis County Police,"","[""St. Louis County and Municipal Crime Map""]",[],[],[],"[""""]",[] @@ -4338,8 +4338,8 @@ SMPD Legacy Policies are policies from past administrations.","[""\r\n\r\nSMPD P 3752,https://www.ojp.gov/pdffiles1/Digitization/151992NCJRS.pdf,Policies & Contracts,200,"","",,,,,, 3753,http://data-cotgis.opendata.arcgis.com/datasets/tucson-police-officer-involved-shooting-incidents,Officer Involved Shootings,200,Tucson Police Officer Involved Shooting Incidents,"Location of TPD Officer-Involved Shooting Incidents between January 1, 2010 and April 10, 2018.",[],[],[],[],[],[] 3754,https://www.tucsonaz.gov/police/contacts,Contact Info & Agency Meta,404,"","",,,,,, -3755,https://suffolkpd.org/Information-and-Policies/Crime-Statistics,Crime Statistics,200," - Crime Statistics +3755,https://suffolkpd.org/Information-and-Policies/Crime-Statistics,Crime Statistics,200," + Crime Statistics ","","[""Contact Us""]","[""Crime Statistics""]",[],"[""Facebook"", ""Facebook en Espa\u00f1ol"", ""Twitter"", ""YouTube"", ""Instagram"", ""Nixle"", ""Phone Directory"", ""Helpful Numbers"", ""852-Cops (2677)""]","[""Suffolkcountyny.gov"", ""Text Only Version"", ""SCPD CRIME STATISTIC LINKS"", ""This website provides valuable forms and information in order to address the needs of our community. If you have any questions or need additional information, please contact the Department at 631-852-6000 or email us at SCPDINFO@suffolkcountyny.gov. Interpretation services are available for individuals with Limited English Proficiency.""]",[] 3756,https://city-tampa.opendata.arcgis.com/,List of Data Sources,200,City of Tampa GeoHub,City of Tampa GeoHub,[],[],[],[],[],[] 3757,https://www.wilmingtonde.gov/home/showpublisheddocument/9613/637341128548700000,Policies & Contracts,200,"","",[],[],[],[],[],[] @@ -4366,17 +4366,17 @@ SMPD Legacy Policies are policies from past administrations.","[""\r\n\r\nSMPD P 3778,https://policecomplaints.dc.gov/page/use-force-reports,Officer Involved Shootings,200,Use of Force Reports | office of police complaints,"The Office of Police Complaints issues an annual report on the Metropolitan Police Department's (MPD) use of force in the District each fiscal year, which highlights the policies, procedures, and practices regarding MPD's officer use of force. In addition, the report includes data on all types of force incidents involving MPD officers. 2022 Use of Force Report","[""office of police complaints"", """", ""Use of Force Reports""]","[""DC Agency Top Menu"", ""Search form"", ""About OPC"", ""Office of Police Complaints""]",[],[],[],"[""Office of Police Complaints""]" 3779,https://www.wilmingtonde.gov/Home/ShowDocument?id=9177,Policies & Contracts,200,"","",[],[],[],[],[],[] 3780,https://dcatlas.dcgis.dc.gov/crimecards/,Crime Maps & Reports,200,Page Not Found,"",[],"[""Page Not Found - DC GIS""]","[""\r\n\t\t\t\tThe page you requested cannot be found.""]","[""\r\n\t\t\t\tYou may want to try any of the following:""]",[],[] -3781,https://www.wilmingtonde.gov/government/city-departments/department-of-police,Contact Info & Agency Meta,200," - - Wilmington Police Department | Wilmington, DE - +3781,https://www.wilmingtonde.gov/government/city-departments/department-of-police,Contact Info & Agency Meta,200," + + Wilmington Police Department | Wilmington, DE + ","","[""Wilmington, DE"", ""Wilmington Police Department""]","[""Visit the City's COVID-19 Information Center."", ""Jump to subpage..."", ""\u00a0CONTACT DIRECTORY"", ""\u00a0OFFICE DIRECTORY""]","["""", ""\n"", ""Mission Statement"", ""Advisories and Alerts"", "" ""]","[""The application process for the 103rd Wilmington Police Academy is now open! Applications are due March 1."", ""Click here to learn more and apply today!\u00a0"", ""Wilfredo Campos"", ""Matthew Hall"", ""Anthony Bowers""]",[],[] 3782,https://opendata.dc.gov/search?collection=Dataset&q=crime%20incidents,Stops,200,Open Data DC,"On this site, the District of Columbia government shares hundreds of datasets. The District invites you to browse the data, download it as a file, analyze it with your tools, or build apps using our APIs.",[],[],[],[],[],[] 3783,https://wilsonnc.policetocitizen.com/EventMap ,Crime Maps & Reports,200,Police To Citizen,"",[],[],[],[],[],[] -3784,https://www.wilsonnc.org/residents/city-services/all-departments/police,Contact Info & Agency Meta,200," - - Police | Wilson, NC - +3784,https://www.wilsonnc.org/residents/city-services/all-departments/police,Contact Info & Agency Meta,200," + + Police | Wilson, NC + ","","[""Wilson, NC"", ""Police""]","[""Popular Searches"", ""Jump to subpage..."", ""Contact Us"", ""\nEmpty heading"", ""Message from Chief Biddle"", """", ""Empty heading"", ""Empty heading"", ""Mission/Vision"", ""Core Values"", ""In case of an emergency please call 911.\u00a0An emergency is considered a situation that poses immediate risk to health, life, property or environment. "", ""If it is not an emergency, but you still need an officer to respond please call 252-237-8300."", ""\u00a0"", ""Links"", ""Come & Visit"", ""Connect With Us""]","[""If you want to recognize a Wilson Police officer or Wilson Police employee message us at\u00a0Wilson Police Department Facebook\u00a0or contact \u00a0Sergeant E.\u00a0McInerny and write us a comment.""]",[],[],[] 3785,https://opendata.dc.gov/datasets/adult-arrests,Arrest Records,200,Adult Arrests,"This data includes adult arrests made by the Metropolitan Police Department (MPD). The information within this report pertains to reports entered into MPD’s Record Management System (Cobalt) whereby an arrest occurred. Totals are based on the most serious arrest charge (i.e., each row denotes one arrest, not one charge), and one person may be booked on more than one arrest charge. @@ -4385,10 +4385,10 @@ Due to privacy considerations, exact CCNs and arrest numbers for these arrest da 3787,https://www.wichita.gov/WPD/Citizen%20Review%20Board/2021-09-23%20Tecnical%20Report%202019-2020%20Citation%20Analysis%20WPD%20Final.pdf,Stops,404,"","",,,,,, 3788,https://mpdc.dc.gov/page/mpd-annual-reports,Calls for Service,200,MPD Annual Reports | mpdc,Strategic Plan Update 2023 The 2023 Strategic Plan Update outlines many of the strategies and approaches underway by the members of the Metropolitan Police Department. Published September 2023 Strategic Plan Update 2023 ,"[""MPD Annual Reports""]","[""mpdc"", ""Public Transparency""]","[""Strategic Plan Update 2023"", ""Department Annual Reports"", ""Policing in DC""]",[],[],"[""MPDC""]" 3789,https://www.vbgov.com/government/departments/police/profstanddiv/Pages/ia-stats.aspx ,Complaints & Misconduct,404,"","",,,,,, -3790,https://www.wilmingtonde.gov/government/public-safety/wilmington-police-department/office-of-professional-standards/law-enforcement-accreditation,Complaints & Misconduct,200," - - Annual OPS Statistical Summary | Wilmington, DE - +3790,https://www.wilmingtonde.gov/government/public-safety/wilmington-police-department/office-of-professional-standards/law-enforcement-accreditation,Complaints & Misconduct,200," + + Annual OPS Statistical Summary | Wilmington, DE + ","","[""Wilmington, DE"", ""Annual OPS Statistical Summary""]","[""Visit the City's COVID-19 Information Center."", ""Jump to subpage..."", ""\u00a0CONTACT DIRECTORY"", ""\u00a0OFFICE DIRECTORY""]",[],"[""Wilfredo Campos"", ""Matthew Hall"", ""Anthony Bowers""]",[],[] 3791,https://data.vbgov.com/,List of Data Sources,-1,"","",,,,,, 3792,https://www.vbgov.com/government/departments/police/Documents/05.01%20Use%20of%20Force.pdf ,Policies & Contracts,403,"","",,,,,, @@ -4398,10 +4398,10 @@ Due to privacy considerations, exact CCNs and arrest numbers for these arrest da 3796,https://www.wichita.gov/WPD/WPDPolicyAndProcedureManual/Policy%20906%20-%20Use%20of%20Force.pdf,Policies & Contracts,404,"","",,,,,, 3797,https://wilsonnc.policetocitizen.com/DailyBulletin,Arrest Records,200,Police To Citizen,"",[],[],[],[],[],[] 3798,https://opendata.dc.gov/search?collection=Dataset&q=crime%20incidents,Crime Statistics,200,Open Data DC,"On this site, the District of Columbia government shares hundreds of datasets. The District invites you to browse the data, download it as a file, analyze it with your tools, or build apps using our APIs.",[],[],[],[],[],[] -3799,https://www.wilmingtonde.gov/government/public-safety/wilmington-police-department/policies-and-procedures,Policies & Contracts,200," - - WPD Policies and Procedures | Wilmington, DE - +3799,https://www.wilmingtonde.gov/government/public-safety/wilmington-police-department/policies-and-procedures,Policies & Contracts,200," + + WPD Policies and Procedures | Wilmington, DE + ","","[""Wilmington, DE"", ""WPD Policies and Procedures""]","[""Visit the City's COVID-19 Information Center."", ""Jump to subpage..."", ""\u00a0CONTACT DIRECTORY"", ""\u00a0OFFICE DIRECTORY""]",[],"[""Wilfredo Campos"", ""Matthew Hall"", ""Anthony Bowers""]",[],[] 3800,https://mpdc.dc.gov/node/423092,Policies & Contracts,200,Written Directives: General Orders | mpdc,"In order to help promote transparency, the MPD has posted policy statements issued by the Chief of Police (e.g., general orders, executive orders, and other directives) that are currently in effect for the department. As new and updated policies are published, they will be posted here. For additional information, the Policy and Standards Branch can be contacted in writing at 441 4th Street, NW, Washington, DC, 20001 or at mpd.policy@dc.gov.","[""Written Directives: General Orders""]","[""mpdc"", ""Public Transparency""]",[],[],[],"[""MPDC""]" 3801,https://www.vbgov.com/government/departments/police/Pages/contact-us.aspx ,Contact Info & Agency Meta,404,"","",,,,,, @@ -4424,217 +4424,217 @@ Due to privacy considerations, exact CCNs and arrest numbers for these arrest da 3818,https://pittsburghpa.gov/police/police-branches,Contact Info & Agency Meta,200,Police Branches | pittsburghpa.gov,"","[""CAREERS"", ""CONTACT US"", ""FOLLOW US"", ""GU\u00cdA DE RESIDENTES"", ""Operations Department"", ""City-County Building Lighting - What Do Tonight's Colors Represent?""]","[""Tow Pound"", ""Abandoned Cars""]","[""DEPARTMENT MENU""]","[""Police Branches"", ""About Police"", ""Community Engagement Office"", ""Police Zones"", ""Police Data"", ""Resources"", ""News"", ""Police Links""]",[],[] 3819,https://pittsburghpa.gov/police/police-investigations,Contact Info & Agency Meta,200,Investigations Branch | pittsburghpa.gov,"","[""CAREERS"", ""CONTACT US"", ""FOLLOW US"", ""GU\u00cdA DE RESIDENTES"", ""Investigations Branch"", ""City-County Building Lighting - What Do Tonight's Colors Represent?""]",[],"[""DEPARTMENT MENU""]","[""Police Branches"", ""About Police"", ""Community Engagement Office"", ""Police Zones"", ""Police Data"", ""Resources"", ""News"", ""Police Links""]",[],[] 3820,https://pittsburghpa.gov/police/police-zone6,Contact Info & Agency Meta,200,Police Zone 6 | pittsburghpa.gov,"","[""CAREERS"", ""CONTACT US"", ""FOLLOW US"", ""GU\u00cdA DE RESIDENTES"", ""Police Zone 6"", ""City-County Building Lighting - What Do Tonight's Colors Represent?""]",[],"[""DEPARTMENT MENU""]","[""Police Zones"", ""About Police"", ""Community Engagement Office"", ""Police Branches"", ""Police Data"", ""Resources"", ""News"", ""Police Links""]",[],[] -3821,https://munstats.pa.gov/Reports/ReportInformation2.aspx?report=CountyMuniContact,Contact Info & Agency Meta,200," - Municipal Statistics +3821,https://munstats.pa.gov/Reports/ReportInformation2.aspx?report=CountyMuniContact,Contact Info & Agency Meta,200," + Municipal Statistics ","",[],"[""\n\r\n Content\n\n"", ""\r\n\t\t\t\t\tReport Viewer Configuration Error\r\n\t\t\t\t""]",[],[],[],[] 3822,https://docs.google.com/spreadsheets/d/1vTyShwANIG3QSOQ6T7sJqazVB2DmokJNb2t5JKXYmsQ/edit?usp=sharing,Contact Info & Agency Meta,200,Louisiana Law Enforcement Contacts - Google Sheets,"",[],[],[],[],[],[] -3823,http://www.sthelena.lavns.org/roster.aspx,Incarceration Records,200," - St. Helena Parish Jail +3823,http://www.sthelena.lavns.org/roster.aspx,Incarceration Records,200," + St. Helena Parish Jail ","",[],[],[],[],[],[] -3824,http://www.plaquemines.lavns.org/roster.aspx,Incarceration Records,200," - Plaquemines Parish Jail +3824,http://www.plaquemines.lavns.org/roster.aspx,Incarceration Records,200," + Plaquemines Parish Jail ","",[],[],[],[],[],[] -3825,http://www.stjames.lavns.org/roster.aspx,Incarceration Records,200," - St. James Parish Jail +3825,http://www.stjames.lavns.org/roster.aspx,Incarceration Records,200," + St. James Parish Jail ","",[],[],[],[],[],[] -3826,http://www.bienville.lavns.org/roster.aspx,Incarceration Records,200," - Bienville Parish Jail +3826,http://www.bienville.lavns.org/roster.aspx,Incarceration Records,200," + Bienville Parish Jail ","",[],[],[],[],[],[] -3827,http://www.catahoula.lavns.org/roster.aspx,Incarceration Records,200," - Catahoula Parish Jail +3827,http://www.catahoula.lavns.org/roster.aspx,Incarceration Records,200," + Catahoula Parish Jail ","",[],[],[],[],[],[] -3828,http://www.beauregard.lavns.org/roster.aspx,Incarceration Records,200," - Beauregard Parish Jail +3828,http://www.beauregard.lavns.org/roster.aspx,Incarceration Records,200," + Beauregard Parish Jail ","",[],[],[],[],[],[] -3829,http://www.natchitoches.lavns.org/roster.aspx,Incarceration Records,200," - Natchitoches Parish Jail +3829,http://www.natchitoches.lavns.org/roster.aspx,Incarceration Records,200," + Natchitoches Parish Jail ","",[],[],[],[],[],[] -3830,http://www.cameron.lavns.org/roster.aspx,Incarceration Records,200," - Cameron Parish Jail +3830,http://www.cameron.lavns.org/roster.aspx,Incarceration Records,200," + Cameron Parish Jail ","",[],[],[],[],[],[] -3831,http://www.avoyelles.lavns.org/roster.aspx,Incarceration Records,200," - Avoyelles Parish Jail +3831,http://www.avoyelles.lavns.org/roster.aspx,Incarceration Records,200," + Avoyelles Parish Jail ","",[],[],[],[],[],[] -3832,http://www.jeffersondavis.lavns.org/roster.aspx,Incarceration Records,200," - Jefferson Davis Parish Jail +3832,http://www.jeffersondavis.lavns.org/roster.aspx,Incarceration Records,200," + Jefferson Davis Parish Jail ","",[],[],[],[],[],[] -3833,http://www.bossier.lavns.org/roster.aspx,Incarceration Records,200," - Bossier Parish Jail +3833,http://www.bossier.lavns.org/roster.aspx,Incarceration Records,200," + Bossier Parish Jail ","",[],[],[],[],[],[] -3834,http://www.acadia.lavns.org/roster.aspx,Incarceration Records,200," - Acadia Parish Jail +3834,http://www.acadia.lavns.org/roster.aspx,Incarceration Records,200," + Acadia Parish Jail ","",[],[],[],[],[],[] -3835,http://www.assumption.lavns.org/roster.aspx,Incarceration Records,200," - Assumption Parish Jail +3835,http://www.assumption.lavns.org/roster.aspx,Incarceration Records,200," + Assumption Parish Jail ","",[],[],[],[],[],[] -3836,http://www.lafayette.lavns.org/roster.aspx,Incarceration Records,200," - Lafayette Parish Correctional Center +3836,http://www.lafayette.lavns.org/roster.aspx,Incarceration Records,200," + Lafayette Parish Correctional Center ","",[],[],[],[],[],[] -3837,http://www.lasalle.lavns.org/roster.aspx,Incarceration Records,200," - La Salle Parish Sheriff's Office +3837,http://www.lasalle.lavns.org/roster.aspx,Incarceration Records,200," + La Salle Parish Sheriff's Office ","",[],[],[],[],[],[] -3838,http://www.franklin.lavns.org/roster.aspx,Incarceration Records,200," - Franklin Parish Jail +3838,http://www.franklin.lavns.org/roster.aspx,Incarceration Records,200," + Franklin Parish Jail ","",[],[],[],[],[],[] -3839,http://www.orleans.lavns.org/roster.aspx,Incarceration Records,200," - Orleans Parish Jail +3839,http://www.orleans.lavns.org/roster.aspx,Incarceration Records,200," + Orleans Parish Jail ","",[],[],[],[],[],[] 3840,http://www.leesville.lavns.org/roster.asp,Incarceration Records,404,"","",,,,,, -3841,http://www.eastbatonrouge.lavns.org/roster.aspx,Incarceration Records,200," - East Baton Rouge Parish Jail +3841,http://www.eastbatonrouge.lavns.org/roster.aspx,Incarceration Records,200," + East Baton Rouge Parish Jail ","",[],[],[],[],[],[] -3842,http://www.claiborne.lavns.org/roster.aspx,Incarceration Records,200," - Claiborne Parish Jail +3842,http://www.claiborne.lavns.org/roster.aspx,Incarceration Records,200," + Claiborne Parish Jail ","",[],[],[],[],[],[] -3843,http://www.madison.lavns.org/roster.aspx,Incarceration Records,200," - Madison Parish Jail +3843,http://www.madison.lavns.org/roster.aspx,Incarceration Records,200," + Madison Parish Jail ","",[],[],[],[],[],[] -3844,http://www.ouachita.lavns.org/roster.aspx,Incarceration Records,200," - Ouachita Parish Correctional Center +3844,http://www.ouachita.lavns.org/roster.aspx,Incarceration Records,200," + Ouachita Parish Correctional Center ","",[],[],[],[],[],[] -3845,http://www.shreveport.lavns.org/roster.aspx,Incarceration Records,200," - Shreveport City Jail +3845,http://www.shreveport.lavns.org/roster.aspx,Incarceration Records,200," + Shreveport City Jail ","",[],[],[],[],[],[] -3846,http://www.bogalusa.lavns.org/roster.aspx,Incarceration Records,200," - Bogalusa Police Department +3846,http://www.bogalusa.lavns.org/roster.aspx,Incarceration Records,200," + Bogalusa Police Department ","",[],[],[],[],[],[] -3847,http://www.bossierpd.lavns.org/roster.aspx,Incarceration Records,200," - Bossier City Police Department +3847,http://www.bossierpd.lavns.org/roster.aspx,Incarceration Records,200," + Bossier City Police Department ","",[],[],[],[],[],[] -3848,http://www.jefferson.lavns.org/roster.aspx,Incarceration Records,200," - Jefferson Parish Jail +3848,http://www.jefferson.lavns.org/roster.aspx,Incarceration Records,200," + Jefferson Parish Jail ","",[],[],[],[],[],[] -3849,http://www.stlandry.lavns.org/roster.aspx,Incarceration Records,200," - St. Landry Parish Jail +3849,http://www.stlandry.lavns.org/roster.aspx,Incarceration Records,200," + St. Landry Parish Jail ","",[],[],[],[],[],[] -3850,http://www.redriver.lavns.org/roster.aspx,Incarceration Records,200," - Red River Parish Jail +3850,http://www.redriver.lavns.org/roster.aspx,Incarceration Records,200," + Red River Parish Jail ","",[],[],[],[],[],[] -3851,http://www.sabine.lavns.org/roster.aspx,Incarceration Records,200," - Sabine Parish Jail +3851,http://www.sabine.lavns.org/roster.aspx,Incarceration Records,200," + Sabine Parish Jail ","",[],[],[],[],[],[] -3852,http://www.richland.lavns.org/roster.aspx,Incarceration Records,200," - Richland Parish Jail +3852,http://www.richland.lavns.org/roster.aspx,Incarceration Records,200," + Richland Parish Jail ","",[],[],[],[],[],[] -3853,http://www.hammond.lavns.org/roster.aspx,Incarceration Records,200," - Hammond Police Department +3853,http://www.hammond.lavns.org/roster.aspx,Incarceration Records,200," + Hammond Police Department ","",[],[],[],[],[],[] -3854,http://www.iberia.lavns.org/roster.aspx,Incarceration Records,200," - Iberia Parish Jail +3854,http://www.iberia.lavns.org/roster.aspx,Incarceration Records,200," + Iberia Parish Jail ","",[],[],[],[],[],[] -3855,http://www.allen.lavns.org/roster.aspx,Incarceration Records,200," - Allen Parish Jail +3855,http://www.allen.lavns.org/roster.aspx,Incarceration Records,200," + Allen Parish Jail ","",[],[],[],[],[],[] -3856,http://www.stcharles.lavns.org/roster.aspx,Incarceration Records,200," - St. Charles Parish Nelson Coleman Correctional Center +3856,http://www.stcharles.lavns.org/roster.aspx,Incarceration Records,200," + St. Charles Parish Nelson Coleman Correctional Center ","",[],[],[],[],[],[] -3857,http://www.morehouse.lavns.org/roster.aspx,Incarceration Records,200," - Morehouse Parish Jail +3857,http://www.morehouse.lavns.org/roster.aspx,Incarceration Records,200," + Morehouse Parish Jail ","",[],[],[],[],[],[] -3858,http://www.eastfeliciana.lavns.org/roster.aspx,Incarceration Records,200," - East Feliciana Parish Jail +3858,http://www.eastfeliciana.lavns.org/roster.aspx,Incarceration Records,200," + East Feliciana Parish Jail ","",[],[],[],[],[],[] -3859,http://www.rapides.lavns.org/roster.aspx,Incarceration Records,200," - Rapides Parish Jail +3859,http://www.rapides.lavns.org/roster.aspx,Incarceration Records,200," + Rapides Parish Jail ","",[],[],[],[],[],[] -3860,http://www.ascension.lavns.org/roster.aspx,Incarceration Records,200," - Ascension Parish Jail +3860,http://www.ascension.lavns.org/roster.aspx,Incarceration Records,200," + Ascension Parish Jail ","",[],[],[],[],[],[] -3861,http://www.stjohn.lavns.org/roster.aspx,Incarceration Records,200," - St. John the Baptist Parish Sherman Walker Correctional Facility +3861,http://www.stjohn.lavns.org/roster.aspx,Incarceration Records,200," + St. John the Baptist Parish Sherman Walker Correctional Facility ","",[],[],[],[],[],[] -3862,http://www.stbernard.lavns.org/roster.aspx,Incarceration Records,200," - St. Bernard Parish Jail +3862,http://www.stbernard.lavns.org/roster.aspx,Incarceration Records,200," + St. Bernard Parish Jail ","",[],[],[],[],[],[] -3863,http://www.pointecoupee.lavns.org/roster.aspx,Incarceration Records,200," - Pointe Coupee Parish Jail +3863,http://www.pointecoupee.lavns.org/roster.aspx,Incarceration Records,200," + Pointe Coupee Parish Jail ","",[],[],[],[],[],[] -3864,http://www.concordia.lavns.org/roster.aspx,Incarceration Records,200," - Concordia Parish Jail +3864,http://www.concordia.lavns.org/roster.aspx,Incarceration Records,200," + Concordia Parish Jail ","",[],[],[],[],[],[] -3865,http://www.caldwell.lavns.org/roster.aspx,Incarceration Records,200," - Caldwell Parish Jail +3865,http://www.caldwell.lavns.org/roster.aspx,Incarceration Records,200," + Caldwell Parish Jail ","",[],[],[],[],[],[] -3866,http://www.desoto.lavns.org/roster.aspx,Incarceration Records,200," - De Soto Parish Jail +3866,http://www.desoto.lavns.org/roster.aspx,Incarceration Records,200," + De Soto Parish Jail ","",[],[],[],[],[],[] -3867,http://www.iberville.lavns.org/roster.aspx,Incarceration Records,200," - Iberville Parish Jail +3867,http://www.iberville.lavns.org/roster.aspx,Incarceration Records,200," + Iberville Parish Jail ","",[],[],[],[],[],[] -3868,http://www.calcasieu.lavns.org/roster.aspx,Incarceration Records,200," - Calcasieu Parish Jail +3868,http://www.calcasieu.lavns.org/roster.aspx,Incarceration Records,200," + Calcasieu Parish Jail ","",[],[],[],[],[],[] 3869,http://alleghenycountyda.us/model-police-policies/,Policies & Contracts,200,Model Police Policies • Allegheny County District Attorney's Office,"","[""Model Police Policies""]",[],[],"[""Contact"", ""Connect""]",[],[] -3870,http://www.oakdale.lavns.org/roster.aspx,Incarceration Records,200," - Oakdale Police Department +3870,http://www.oakdale.lavns.org/roster.aspx,Incarceration Records,200," + Oakdale Police Department ","",[],[],[],[],[],[] -3871,http://www.kinder.lavns.org/roster.aspx,Incarceration Records,200," - Kinder Police Department +3871,http://www.kinder.lavns.org/roster.aspx,Incarceration Records,200," + Kinder Police Department ","",[],[],[],[],[],[] -3872,http://www.caddo.lavns.org/roster.aspx,Incarceration Records,200," - Caddo Correctional Center +3872,http://www.caddo.lavns.org/roster.aspx,Incarceration Records,200," + Caddo Correctional Center ","",[],[],[],[],[],[] -3873,http://www.washington.lavns.org/roster.aspx,Incarceration Records,200," - Washington Parish Jail +3873,http://www.washington.lavns.org/roster.aspx,Incarceration Records,200," + Washington Parish Jail ","",[],[],[],[],[],[] 3874,https://www.alleghenycounty.us/police/minimum-requirements-and-application-procedures.aspx,Policies & Contracts,404,"","",,,,,, 3875,https://www.alleghenycounty.us/police-academy/index.aspx,Policies & Contracts,200,"Police Academy - Allegheny County, PA","The Allegheny County Police Academy provides updated, diversified, quality instruction for recruits and continuing education for certified police officers in Allegheny County.","[""Police Academy""]","[""\r\n\t\t\t\tBasic Training\r\n\t\t\t"", ""\r\n\t\t\t\tResources\r\n\t\t\t"", ""\r\n\t\t\t\tMIST, Ongoing Training, and Specialized Services\r\n\t\t\t"", ""About the Police Academy""]","["""", ""\u00a0"", ""Required Training"", ""Contact Us"", ""Quick Links"", ""Get Social""]",[],[],"[""Use of Force"", ""Implicit Bias"", ""De-escalation""]" -3876,http://www.tensas.lavns.org/roster.aspx,Incarceration Records,200," - Tensas Parish Jail +3876,http://www.tensas.lavns.org/roster.aspx,Incarceration Records,200," + Tensas Parish Jail ","",[],[],[],[],[],[] -3877,http://www.winnfield.lavns.org/roster.aspx,Incarceration Records,200," - Winnfield Police Department +3877,http://www.winnfield.lavns.org/roster.aspx,Incarceration Records,200," + Winnfield Police Department ","",[],[],[],[],[],[] -3878,http://www.sulphur.lavns.org/roster.aspx,Incarceration Records,200," - Sulphur Police Department +3878,http://www.sulphur.lavns.org/roster.aspx,Incarceration Records,200," + Sulphur Police Department ","",[],[],[],[],[],[] 3879,https://www.alleghenycounty.us/police-academy/leadership-and-staff.aspx,Contact Info & Agency Meta,404,"","",,,,,, 3880,https://www.alleghenycounty.us/emergency-services/police-departments.aspx,Contact Info & Agency Meta,404,"","",,,,,, -3881,http://www.tangipahoa.lavns.org/roster.aspx,Incarceration Records,200," - Tangipahoa Parish Jail +3881,http://www.tangipahoa.lavns.org/roster.aspx,Incarceration Records,200," + Tangipahoa Parish Jail ","",[],[],[],[],[],[] 3882,https://www.alleghenycounty.us/police/staff/superintendent.aspx,Contact Info & Agency Meta,404,"","",,,,,, -3883,http://www.villeplatte.lavns.org/roster.aspx,Incarceration Records,200," - Ville Platte Police Department +3883,http://www.villeplatte.lavns.org/roster.aspx,Incarceration Records,200," + Ville Platte Police Department ","",[],[],[],[],[],[] 3884,https://www.alleghenycounty.us/police/county-police-k9-unit.aspx,Contact Info & Agency Meta,404,"","",,,,,, -3885,http://www.stmartin.lavns.org/roster.aspx,Incarceration Records,200," - St. Martin Parish Jail +3885,http://www.stmartin.lavns.org/roster.aspx,Incarceration Records,200," + St. Martin Parish Jail ","",[],[],[],[],[],[] -3886,http://www.sttammany.lavns.org/roster.aspx,Incarceration Records,200," - St. Tammany Parish Jail +3886,http://www.sttammany.lavns.org/roster.aspx,Incarceration Records,200," + St. Tammany Parish Jail ","",[],[],[],[],[],[] -3887,http://www.westfeliciana.lavns.org/roster.aspx,Incarceration Records,200," - West Feliciana Parish Detention Center +3887,http://www.westfeliciana.lavns.org/roster.aspx,Incarceration Records,200," + West Feliciana Parish Detention Center ","",[],[],[],[],[],[] -3888,http://www.webster.lavns.org/roster.aspx,Incarceration Records,200," - Webster Parish Jail +3888,http://www.webster.lavns.org/roster.aspx,Incarceration Records,200," + Webster Parish Jail ","",[],[],[],[],[],[] -3889,http://www.stmary.lavns.org/roster.aspx,Incarceration Records,200," - St. Mary Parish Jail +3889,http://www.stmary.lavns.org/roster.aspx,Incarceration Records,200," + St. Mary Parish Jail ","",[],[],[],[],[],[] -3890,http://www.terrebonne.lavns.org/roster.aspx,Incarceration Records,200," - Terrebonne Parish Jail +3890,http://www.terrebonne.lavns.org/roster.aspx,Incarceration Records,200," + Terrebonne Parish Jail ","",[],[],[],[],[],[] -3891,http://www.vernon.lavns.org/roster.aspx,Incarceration Records,200," - Vernon Parish Jail +3891,http://www.vernon.lavns.org/roster.aspx,Incarceration Records,200," + Vernon Parish Jail ","",[],[],[],[],[],[] -3892,http://www.westcarroll.lavns.org/roster.aspx,Incarceration Records,200," - West Carroll Parish Jail +3892,http://www.westcarroll.lavns.org/roster.aspx,Incarceration Records,200," + West Carroll Parish Jail ","",[],[],[],[],[],[] -3893,http://www.winn.lavns.org/roster.aspx,Incarceration Records,200," - Winn Parish Jail +3893,http://www.winn.lavns.org/roster.aspx,Incarceration Records,200," + Winn Parish Jail ","",[],[],[],[],[],[] -3894,http://www.westbatonrouge.lavns.org/roster.aspx,Incarceration Records,200," - West Baton Rouge Parish Jail +3894,http://www.westbatonrouge.lavns.org/roster.aspx,Incarceration Records,200," + West Baton Rouge Parish Jail ","",[],[],[],[],[],[] 3895,https://www.alleghenycounty.us/police/community-programs.aspx,Misc Police Activity,404,"","",,,,,, 3896,https://www.broadcastify.com/listen/ctid/2242,Dispatch Recordings,200,Allegheny County Pennsylvania Live Audio Feeds,"","[""Allegheny County Pennsylvania Live Audio Feeds ""]","[""Live Feed Listing for Allegheny County""]",[],[],[],[] 3897,https://wp.sbcounty.gov/sheriff/policiesoperatingprocedures-department/,Policies & Contracts,200,Department – San Bernardino County Sheriff's Department,Policies/Operating Procedures Department The following table contains records regarding the Sheriff’s Department’s Policies and Procedures. Back to Policy Mandates Document DateDocument TitleStation/Division07/24/2023San Bernardino County Sheriff’s Department ManualSan Bernardino County Sheriff’s...,"[""Policies/Operating Procedures""]","[""Calendar"", ""\n\t\tCalendar of Events\t""]","[""\n\n\t\t\t\t\t\tM\t\t\t\t\t\n\n\t\t\t\t\t\tMon\t\t\t\t\t\n"", ""\n\n\t\t\t\t\t\tT\t\t\t\t\t\n\n\t\t\t\t\t\tTue\t\t\t\t\t\n"", ""\n\n\t\t\t\t\t\tW\t\t\t\t\t\n\n\t\t\t\t\t\tWed\t\t\t\t\t\n"", ""\n\n\t\t\t\t\t\tT\t\t\t\t\t\n\n\t\t\t\t\t\tThu\t\t\t\t\t\n"", ""\n\n\t\t\t\t\t\tF\t\t\t\t\t\n\n\t\t\t\t\t\tFri\t\t\t\t\t\n"", ""\n\n\t\t\t\t\t\tS\t\t\t\t\t\n\n\t\t\t\t\t\tSat\t\t\t\t\t\n"", ""\n\n\t\t\t\t\t\tS\t\t\t\t\t\n\n\t\t\t\t\t\tSun\t\t\t\t\t\n"", ""\n\n\t\t\t0 events,\n\t\t\n\n\t\t\t1\t\t\n"", ""\n\n\t\t0 events,\n\t\n\n\t\t\t\t\t1\t\t\t\n"", ""\n\n\t\t\t0 events,\n\t\t\n\n\t\t\t2\t\t\n"", ""\n\n\t\t0 events,\n\t\n\n\t\t\t\t\t2\t\t\t\n"", ""\n\n\t\t\t0 events,\n\t\t\n\n\t\t\t3\t\t\n"", ""\n\n\t\t0 events,\n\t\n\n\t\t\t\t\t3\t\t\t\n"", ""\n\n\t\t\t0 events,\n\t\t\n\n\t\t\t4\t\t\n"", ""\n\n\t\t0 events,\n\t\n\n\t\t\t\t\t4\t\t\t\n"", ""\n\n\t\t\t0 events,\n\t\t\n\n\t\t\t5\t\t\n"", ""\n\n\t\t0 events,\n\t\n\n\t\t\t\t\t5\t\t\t\n"", ""\n\n\t\t\t0 events,\n\t\t\n\n\t\t\t6\t\t\n"", ""\n\n\t\t0 events,\n\t\n\n\t\t\t\t\t6\t\t\t\n"", ""\n\n\t\t\t0 events,\n\t\t\n\n\t\t\t7\t\t\n"", ""\n\n\t\t0 events,\n\t\n\n\t\t\t\t\t7\t\t\t\n"", ""\n\n\t\t\t1 event,\n\t\t\n\n\t\t\t8\t\t\n"", ""\n\n\t\t1 event,\n\t\n\n\n\t\t\t\t8\t\t\t\n\n"", ""\n\tCrisis Intervention Training"", ""\n\tCrisis Intervention Training"", ""\n\n\t\tCrisis Intervention Training\t\n"", ""\n\n\t\t\t3 events,\n\t\t\n\n\t\t\t9\t\t\n"", ""\n\n\t\t3 events,\n\t\n\n\n\t\t\t\t9\t\t\t\n\n"", ""\n\tCrisis Intervention Training"", ""\n\tDeputy Leadership Institute"", ""\n\tDeputy Leadership Institute"", ""\n\n\t\tDeputy Leadership Institute\t\n"", ""\n\tAdvanced Gang Awareness"", ""\n\tAdvanced Gang Awareness"", ""\n\n\t\tAdvanced Gang Awareness\t\n"", ""\n\n\t\t\t3 events,\n\t\t\n\n\t\t\t10\t\t\n"", ""\n\n\t\t3 events,\n\t\n\n\n\t\t\t\t10\t\t\t\n\n"", ""\n\tCrisis Intervention Training"", ""\n\tDeputy Leadership Institute"", ""\n\tAdvanced Gang Awareness"", ""\n\n\t\t\t2 events,\n\t\t\n\n\t\t\t11\t\t\n"", ""\n\n\t\t2 events,\n\t\n\n\n\t\t\t\t11\t\t\t\n\n"", ""\n\tCrisis Intervention Training"", ""\n\tAdvanced Gang Awareness"", ""\n\n\t\t\t1 event,\n\t\t\n\n\t\t\t12\t\t\n"", ""\n\n\t\t1 event,\n\t\n\n\n\t\t\t\t12\t\t\t\n\n"", ""\n\tCrisis Intervention Training"", ""\n\n\t\t\t0 events,\n\t\t\n\n\t\t\t13\t\t\n"", ""\n\n\t\t0 events,\n\t\n\n\t\t\t\t\t13\t\t\t\n"", ""\n\n\t\t\t0 events,\n\t\t\n\n\t\t\t14\t\t\n"", ""\n\n\t\t0 events,\n\t\n\n\t\t\t\t\t14\t\t\t\n"", ""\n\n\t\t\t0 events,\n\t\t\n\n\t\t\t15\t\t\n"", ""\n\n\t\t0 events,\n\t\n\n\t\t\t\t\t15\t\t\t\n"", ""\n\n\t\t\t2 events,\n\t\t\n\n\t\t\t16\t\t\n"", ""\n\n\t\t2 events,\n\t\n\n\n\t\t\t\t16\t\t\t\n\n"", ""\n\tCal-Gang Computer System"", ""\n\tCal-Gang Computer System"", ""\n\n\t\tCal-Gang Computer System\t\n"", ""\n\tWellness"", ""\n\tWellness"", ""\n\n\t\tWellness\t\n"", ""\n\n\t\t\t2 events,\n\t\t\n\n\t\t\t17\t\t\n"", ""\n\n\t\t2 events,\n\t\n\n\n\t\t\t\t17\t\t\t\n\n"", ""\n\tCal-Gang Computer System"", ""\n\tWellness"", ""\n\n\t\t\t1 event,\n\t\t\n\n\t\t\t18\t\t\n"", ""\n\n\t\t1 event,\n\t\n\n\n\t\t\t\t18\t\t\t\n\n"", ""\n\tWellness"", ""\n\n\t\t\t0 events,\n\t\t\n\n\t\t\t19\t\t\n"", ""\n\n\t\t0 events,\n\t\n\n\t\t\t\t\t19\t\t\t\n"", ""\n\n\t\t\t0 events,\n\t\t\n\n\t\t\t20\t\t\n"", ""\n\n\t\t0 events,\n\t\n\n\t\t\t\t\t20\t\t\t\n"", ""\n\n\t\t\t0 events,\n\t\t\n\n\t\t\t21\t\t\n"", ""\n\n\t\t0 events,\n\t\n\n\t\t\t\t\t21\t\t\t\n"", ""\n\n\t\t\t1 event,\n\t\t\n\n\t\t\t22\t\t\n"", ""\n\n\t\t1 event,\n\t\n\n\n\t\t\t\t22\t\t\t\n\n"", ""\n\tTraffic Collision Investigation, Basic"", ""\n\tTraffic Collision Investigation, Basic"", ""\n\n\t\tTraffic Collision Investigation, Basic\t\n"", ""\n\n\t\t\t1 event,\n\t\t\n\n\t\t\t23\t\t\n"", ""\n\n\t\t1 event,\n\t\n\n\n\t\t\t\t23\t\t\t\n\n"", ""\n\tTraffic Collision Investigation, Basic"", ""\n\n\t\t\t1 event,\n\t\t\n\n\t\t\t24\t\t\n"", ""\n\n\t\t1 event,\n\t\n\n\n\t\t\t\t24\t\t\t\n\n"", ""\n\tTraffic Collision Investigation, Basic"", ""\n\n\t\t\t1 event,\n\t\t\n\n\t\t\t25\t\t\n"", ""\n\n\t\t1 event,\n\t\n\n\n\t\t\t\t25\t\t\t\n\n"", ""\n\tTraffic Collision Investigation, Basic"", ""\n\n\t\t\t0 events,\n\t\t\n\n\t\t\t26\t\t\n"", ""\n\n\t\t0 events,\n\t\n\n\t\t\t\t\t26\t\t\t\n"", ""\n\n\t\t\t0 events,\n\t\t\n\n\t\t\t27\t\t\n"", ""\n\n\t\t0 events,\n\t\n\n\t\t\t\t\t27\t\t\t\n"", ""\n\n\t\t\t0 events,\n\t\t\n\n\t\t\t28\t\t\n"", ""\n\n\t\t0 events,\n\t\n\n\t\t\t\t\t28\t\t\t\n"", ""\n\n\t\t\t0 events,\n\t\t\n\n\t\t\t29\t\t\n"", ""\n\n\t\t0 events,\n\t\n\n\t\t\t\t\t29\t\t\t\n"", ""\n\n\t\t\t1 event,\n\t\t\n\n\t\t\t30\t\t\n"", ""\n\n\t\t1 event,\n\t\n\n\n\t\t\t\t30\t\t\t\n\n"", ""\n\n\t\tCourtroom Procedures\t\n"", ""\n\n\t\tCourtroom Procedures\t\n"", ""\n\n\t\t\t0 events,\n\t\t\n\n\t\t\t31\t\t\n"", ""\n\n\t\t0 events,\n\t\n\n\t\t\t\t\t31\t\t\t\n"", ""\n\n\t\t\t0 events,\n\t\t\n\n\t\t\t1\t\t\n"", ""\n\n\t\t0 events,\n\t\n\n\t\t\t\t\t1\t\t\t\n"", ""\n\n\t\t\t0 events,\n\t\t\n\n\t\t\t2\t\t\n"", ""\n\n\t\t0 events,\n\t\n\n\t\t\t\t\t2\t\t\t\n"", ""\n\n\t\t\t0 events,\n\t\t\n\n\t\t\t3\t\t\n"", ""\n\n\t\t0 events,\n\t\n\n\t\t\t\t\t3\t\t\t\n"", ""\n\n\t\t\t0 events,\n\t\t\n\n\t\t\t4\t\t\n"", ""\n\n\t\t0 events,\n\t\n\n\t\t\t\t\t4\t\t\t\n"", ""\n\n\t\tCrisis Intervention Training\t\n"", ""\n\n\t\tCrisis Intervention Training\t\n"", ""\n\n\t\tDeputy Leadership Institute\t\n"", ""\n\n\t\tAdvanced Gang Awareness\t\n"", ""\n\n\t\tCrisis Intervention Training\t\n"", ""\n\n\t\tDeputy Leadership Institute\t\n"", ""\n\n\t\tAdvanced Gang Awareness\t\n"", ""\n\n\t\tCrisis Intervention Training\t\n"", ""\n\n\t\tAdvanced Gang Awareness\t\n"", ""\n\n\t\tCrisis Intervention Training\t\n"", ""\n\n\t\tCal-Gang Computer System\t\n"", ""\n\n\t\tWellness\t\n"", ""\n\n\t\tCal-Gang Computer System\t\n"", ""\n\n\t\tWellness\t\n"", ""\n\n\t\tWellness\t\n"", ""\n\n\t\tTraffic Collision Investigation, Basic\t\n"", ""\n\n\t\tTraffic Collision Investigation, Basic\t\n"", ""\n\n\t\tCourtroom Procedures\t\n"", ""\n\n\t\tTraffic Collision Investigation, Basic\t\n"", ""\n\n\t\tTraffic Collision Investigation, Basic\t\n"", ""\n\n\t\tCourtroom Procedures\t\n"", ""Quick Links""]","[""NON-EMERGENCY DISPATCH""]",[],[] -3898,https://www.sanjoseca.gov/your-government/departments-offices/information-technology/digital-privacy/past-privacy-decisions,Policies & Contracts,200," - - Privacy in Practice | City of San José - +3898,https://www.sanjoseca.gov/your-government/departments-offices/information-technology/digital-privacy/past-privacy-decisions,Policies & Contracts,200," + + Privacy in Practice | City of San José + ","","[""City of San Jos\u00e9"", ""Privacy in Practice""]","[""Popular Searches"", ""Jump to subpage..."", ""Privacy Manual"", ""Past Privacy Decisions"", ""Not Approved"", ""Smart Poles Pilot (2010's)"", ""Child-tracking bands"", ""Homeless-tracking cameras"", ""Share ALPR with companies"", ""Approved with Further Review"", ""Fire safety inspections"", ""Labor compliance inspections"", ""AI traffic cameras"", ""Youth intervention services"", ""X-ray bomb detection"", ""Energy price data"", ""ALPR"", ""Police evidence management"", ""Approved with a Brief Review"", ""City purchase of photo scanner"", ""Library purchase of laptops"", ""Airport software renewal"", ""Contact us"", ""Need More Info?"", ""Employees""]","[""Not approved"", ""Approved with further review"", ""Approved with a brief review""]",[],[],[] 3899,https://cde.ucr.cjis.gov/,Crime Maps & Reports,200,"","",[],[],[],[],[],[] 3900,https://www.openrecords.pa.gov/RTKL/AOROSearch.cfm,Records Request Info,200,OOR - Find Agency Open Records Officers,"","[""Find Agency Open Records Officers""]",[],"[""Open Records Officer Search"", ""Registering Agency Open Records Officers""]",[],[],[] @@ -4662,14 +4662,14 @@ Due to privacy considerations, exact CCNs and arrest numbers for these arrest da 3922,https://www.documentcloud.org/documents/23577767-draft-job-meeting-minutes-december-1-2022,Annual & Monthly Reports,200,DocumentCloud,"",[],[],[],[],[],[] 3923,https://www.documentcloud.org/documents/23577764-1423-jail-summary,Incarceration Records,200,DocumentCloud,"",[],[],[],[],[],[] 3924,https://www.alleghenycounty.us/jail/reports.aspx,Incarceration Records,404,"","",,,,,, -3925,https://eapps.alleghenycounty.us/restaurant/RestaurantDetail.aspx?ID=201408080003,Contact Info & Agency Meta,200," - ACHD Restaurant Finder +3925,https://eapps.alleghenycounty.us/restaurant/RestaurantDetail.aspx?ID=201408080003,Contact Info & Agency Meta,200," + ACHD Restaurant Finder ","",[],[],[],[],[],[] -3926,https://eapps.alleghenycounty.us/restaurant/RestaurantDetail.aspx?ID=201808060005,Contact Info & Agency Meta,200," - ACHD Restaurant Finder +3926,https://eapps.alleghenycounty.us/restaurant/RestaurantDetail.aspx?ID=201808060005,Contact Info & Agency Meta,200," + ACHD Restaurant Finder ","",[],[],[],[],[],[] -3927,https://eapps.alleghenycounty.us/restaurant/RestaurantDetail.aspx?ID=202102230002,Contact Info & Agency Meta,200," - ACHD Restaurant Finder +3927,https://eapps.alleghenycounty.us/restaurant/RestaurantDetail.aspx?ID=202102230002,Contact Info & Agency Meta,200," + ACHD Restaurant Finder ","",[],[],[],[],[],[] 3928,https://data.cityofchicago.org/Service-Requests/311-Service-Requests/v6vf-nfxy,Calls for Service,200,311 Service Requests | City of Chicago | Data Portal,"","[""""]","[""Menu""]",[],[],[],[] 3929,https://analytics.alleghenycounty.us/2021/03/04/allegheny-county-jail-population-management-dashboards-2/,Incarceration Records,200,Population of the Allegheny County Jail: Interactive Dashboard - Allegheny Analytics,"","[""Population of the Allegheny County Jail: Interactive Dashboard""]",[],"[""Trouble viewing the dashboard? You can view it directly here.""]",[],[],[] @@ -4754,8 +4754,8 @@ Due to privacy considerations, exact CCNs and arrest numbers for these arrest da 4008,https://data-openjustice.doj.ca.gov/sites/default/files/dataset/2022-08/URSUS_Incident_2020.csv,Use of Force Reports,200,"","",[],[],[],[],[],[] 4009,data.austintexas.gov/resource/sykw-k45z.json,Stops,200,2017-2019_Non-Motor Vehicle Stops_Warnings | Open Data | City of Austin Texas,"","[""""]","[""Menu""]",[],[],[],[] 4010,data.austintexas.gov/resource/vv43-e55n.json,Use of Force Reports,200,R2R 2014 | Open Data | City of Austin Texas,"","[""""]","[""Menu""]",[],[],[],[] -4011,http://gouda.beloitwi.gov/WebLink/Browse.aspx?startid=67660&dbid=0,List of Data Sources,200," - Bias/Hate Crimes - Laserfiche WebLink +4011,http://gouda.beloitwi.gov/WebLink/Browse.aspx?startid=67660&dbid=0,List of Data Sources,200," + Bias/Hate Crimes - Laserfiche WebLink ","",[],[],[],[],[],[] 4012,https://data-openjustice.doj.ca.gov/sites/default/files/dataset/2022-08/URSUS_Incident_2019.csv,Use of Force Reports,200,"","",[],[],[],[],[],[] 4013,https://maps.burlingtonvt.gov/arcgis/rest/services/Hosted/traffic_stops/FeatureServer/0,Stops,404,"","",,,,,, @@ -4858,8 +4858,8 @@ Due to privacy considerations, exact CCNs and arrest numbers for these arrest da 4107,https://services7.arcgis.com/uRrQ0O3z2aaiIWYU/arcgis/rest/services/Calls_for_Service_2020/FeatureServer/0,Calls for Service,200,Layer: Calls_for_Service_2020 (ID:0),"",[],"[""Layer: Calls_for_Service_2020 (ID:0)""]",[],[],[],[] 4108,https://www.arcgis.com/sharing/rest/content/items/ddbe7df35a8e4624a74817990ac88441/data,Calls for Service,200,"","",[],[],[],[],[],[] 4109,https://services1.arcgis.com/wpJGOi6N4Rq5cqFv/arcgis/rest/services/LPD_Use_of_Control_2020_2021/FeatureServer/0,Use of Force Reports,200,Layer: LPD_Use_of_Control_2020_2021 (ID:0),"",[],"[""Layer: LPD_Use_of_Control_2020_2021 (ID:0)""]",[],[],[],[] -4110,https://transparency.jaxsheriff.org/,Officer Involved Shootings,200," - Home Page - JSO Open Data +4110,https://transparency.jaxsheriff.org/,Officer Involved Shootings,200," + Home Page - JSO Open Data ","","[""Open Data & Transparency""]","[""Available Data""]",[],[],[],[] 4111,data.lacity.org/resource/r4ka-x5je.json,Calls for Service,200,LAPD Calls for Service 2019 | Los Angeles - Open Data Portal,"","[""""]","[""Menu""]",[],[],[],[] 4112,data.lacity.org/resource/i7pm-cnmm.json,Calls for Service,200,LAPD Calls for Service 2012 | Los Angeles - Open Data Portal,"","[""""]","[""Menu""]",[],[],[],[] @@ -5082,27 +5082,27 @@ Due to privacy considerations, exact CCNs and arrest numbers for these arrest da 4323,https://www.portland.gov/police/open-data/police-dispatched-calls,Calls for Service,200,Police Dispatched Calls Dashboard | Portland.gov,Dispatched Police Calls for Service,"[""Police Dispatched Calls Dashboard\n""]","[""General Information"", ""Elected Officials"", ""Breadcrumb"", ""Introduction to Calls for Service"", ""Police Response Time"", ""Dashboard Walkthrough"", ""Metadata for Dispatched Calls Open Data"", ""Topics"", ""General information"", ""Follow on Social Media"", ""Terms, policies"", ""Portland.gov"", ""City of Portland, Oregon""]","[""Call Priority Level"", ""Call Groups"", ""1. Report Overview"", ""2. Technical Specifications"", ""3. Visualization Walkthrough""]","[""a. Dropdown Filters (single-select) - Priority Call Filter (example)"", ""b. Dropdown Filters (multi-select) - Neighborhood Filter (example)"", ""c. Tab 1 - Dispatched Calls for Service"", ""d. Maps"", ""e.\u00a0Tab 2 - Response Times"", ""\u00a0f. \u00a0Tab 3 - Fiscal Year Dispatches"", ""g. Toolbar"", ""h. Download Data""]",[],[] 4324,https://www.oakridgetn.gov/Policepolicies/police-policy.php,Policies & Contracts,404,"","",,,,,, 4325,https://www.oakridgetn.gov/departmentpg/ORPD/Contact-ORPD,Contact Info & Agency Meta,404,"","",,,,,, -4326,https://www.knoxvilletn.gov/cms/One.aspx?portalId=109562&pageId=263443,List of Data Sources,200," - KPD Open Records Page - City of Knoxville +4326,https://www.knoxvilletn.gov/cms/One.aspx?portalId=109562&pageId=263443,List of Data Sources,200," + KPD Open Records Page - City of Knoxville ",police*,"[""KPD Open Records Page"", ""Police Chief""]",[],[],[],[],[] 4327,https://www.el-cerrito.org/1342/Released-Records,Incident Reports,200,"Released Records | El Cerrito, CA - Official Website",Lists currently released and available records by case.,"[""\n\n"", ""\r\n\r\nReleased Records\t\t""]",[],"[""Loading"", """", """", ""Contact Us"", ""Quick Links"", ""Helpful Links""]",[],[],[] 4328,https://www.cityofgrassvalley.com/records-release,Incident Reports,200,Records Release - City of Grass Valley,"","[""Records Release"", ""Records Release""]","[""Check the Air Quality"", ""Install smoke & CO detectors"", ""Learn about Fire Safety"", ""Purchase Reflective Address Signs"", ""Fire Department Instagram"", ""Fire Department Facebook"", ""Police Department Facebook"", ""G2300034"", ""G2000004"", ""G1901078"", ""Log in"", ""Commands"", ""Fire Department Instagram"", ""Fire Department Facebook"", ""Police Department Facebook""]",[],[],[],[] 4329,https://www.longbeach.gov/police/about-the-lbpd/lbpd-1421748/,Incident Reports,200,LBPD SB1421/AB748/AB2761,"","[""Police Department""]","[""LBPD SB 1421/AB 748/AB 2761""]","[""Mayor"", ""City Council"", ""Rex Richardson"", ""Mary Zendejas"", ""Cindy Allen"", ""Kristina Duggan"", ""Daryl Supernaw"", ""Megan Kerr"", ""Suely Saro"", ""Roberto Uranga"", ""Al Austin"", ""Dr. Joni Ricks-Oddie"", ""Dawn McIntosh"", ""Laura L. Doud"", ""Doug Haubert"", ""Tom Modica"", ""Monique DeLaGarza"", ""City-Wide Elected Officials"", ""Appointed Officials"", ""Online Payments"", ""Online Services"", ""In-Person Services"", ""Opening a Business"", ""Doing Business With The City"", ""Resources"", ""Most Popular"", ""Online Resources"", ""Attractions"", ""Business Associations"", ""Travel Resources"", ""Departments"", ""Job Opportunities"", ""Information"", ""LBPD"", ""Employment"", ""Bureaus"", ""News & Events"", ""Crime Info"", ""How Do I"", ""How Do I"", ""Contact Us"", ""Senate Bill 1421 (SB 1421)"", ""Assembly Bill 748 (AB 748)"", ""Assembly Bill 2761 (AB 2761)"", ""Do."", ""Discover."", ""Connect."", ""Ask.""]","["""", ""1st District"", ""2nd District"", ""3rd District"", ""4th District"", ""5th District"", ""6th District"", ""7th District"", ""8th District"", ""9th District"", ""City Attorney"", ""City Auditor"", ""City Prosecutor"", ""City Manager"", ""City Clerk""]","[""LBPD SB 1421/AB 748"", ""Public Records Request""]",[] -4330,https://lasdsb1421.powerappsportals.us/,Incident Reports,200," - - Home - · LA County Sheriff +4330,https://lasdsb1421.powerappsportals.us/,Incident Reports,200," + + Home + · LA County Sheriff ","",[],"[""Los Angeles County Sheriff's Department SB-1421 Records"", """"]",[],"[""Search all SB-1421 / SB-16 Published Incidents""]",[],"[""Click here to return to LASD.ORG"", ""Website Privacy Policy"", ""Disclaimers""]" 4331,https://www.lapdonline.org/office-of-the-chief-of-police/constitutional-policing/risk-management-division/senate-bill-1421-senate-bill-16-sb-16/,Incident Reports,200,LAPD Senate Bill 1421 (SB 1421) / Senate Bill 16 (SB 16) - LAPD Online,"","[""LAPD Senate Bill 1421 (SB 1421) / Senate Bill 16 (SB 16)""]","[""Officer Involved Shooting (OIS)"", ""Use of Force (UoF) - Great Bodily Injury/Death"", ""Sustained Complaints of Unreasonable/ Excessive Force; Failure to Intervene in Excessive Force"", ""Sustained Complaints of Sexual Assault / Dishonesty"", ""Sustained Complaints of Prejudice or Discrimination "", ""Sustained Complaints of Unlawful Arrest/ Unlawful Search""]",[],[],[],[] -4332,https://www.co.monterey.ca.us/government/departments-a-h/district-attorney/press-releases/officer-involved-shootings,Officer Involved Shootings,200," - - Officer Involved Shootings | Monterey County, CA - +4332,https://www.co.monterey.ca.us/government/departments-a-h/district-attorney/press-releases/officer-involved-shootings,Officer Involved Shootings,200," + + Officer Involved Shootings | Monterey County, CA + ","","[""Officer Involved Shootings""]",[],[],[],[],[] -4333,https://www.novato.org/government/police-department/transparency,Policies & Contracts,200," - - Transparency | City of Novato, CA - +4333,https://www.novato.org/government/police-department/transparency,Policies & Contracts,200," + + Transparency | City of Novato, CA + ","","[""City of Novato, CA"", ""Transparency""]","[""Popular Searches"", ""FIND A SERVICE"", ""Jump to subpage..."", ""VISIT US"", ""CALL US"", ""CONNECT WITH US""]","[""I WANT TO"", """", """"]",[],[],[] 4334,https://oaklandca.nextrequest.com/requests?department_ids=2053,List of Data Sources,200,"","",[],[],[],[],[],[] 4335,https://www.ocsheriff.gov/about-ocsheriff/peace-officer-records-releases,Incident Reports,200,Peace Officer Records Releases | Orange County California - Sheriff's Department,"Amendments to Penal Code section 832.7 require the release of law enforcement records relating to officer-involved shootings, uses of force resulting in death or great bodily injury and sustained findings against peace officers of dishonesty or sexual assault, as defined by the law. Such records had previously been exempt from public disclosure.","[""\nPeace Officer Records Releases\n""]","[""Breadcrumb"", ""Released Records"", ""\n20-020724 Use of Force\n\n"", ""\n19-042554 Use of Force\n\n"", ""\n20-020164 OIS\n\n"", ""\n19-090 Sustained Dishonesty\n\n"", ""\n03-092321 OIS\n\n"", ""\n03-077834 OIS\n\n"", ""\n03-055771 OIS\n\n"", ""\n03-054572 OIS\n\n"", ""\n00-170538 OIS\n\n"", ""\n18-054 Sustained Dishonesty\n\n"", ""\n18-053 Sustained Dishonesty\n\n"", ""\n18-025 Sustained Dishonesty\n\n"", ""\n10-026804 OIS\n\n"", ""\n08-245804 OIS\n\n"", ""\n08-043784 OIS\n\n"", ""\nCCRS 2020-01467 Sustained Prejudice/Discrimination\n\n"", ""\n20-031866 OIS\n\n"", ""\n17-015 Sustained Prejudice/Discrimination\n\n"", ""\n18-034 Sustained Dishonesty\n\n"", ""\n08-006569 OIS\n\n"", ""\n04-117657 OIS\n\n"", ""\n20-015073 OIS\n\n"", ""\n11-081942 OIS\n\n"", ""\n09-091317 OIS\n\n"", ""\n15-161289 OIS\n\n"", ""\n07-252765 OIS\n\n"", ""\n21-030459 Use of Force\n\n"", ""\n19-032109 OIS\n\n"", ""\n18-002705 OIS\n\n"", ""\n16-287025 OIS\n\n"", ""\n15-165583 OIS\n\n"", ""\n13-155963 OIS\n\n"", ""\n13-034439 OIS\n\n"", ""\n12-108630 OIS\n\n"", ""\n11-222961 OIS\n\n"", ""\n21-010034 Use of Force\n\n"", ""\n21-003026 Use of Force\n\n"", ""\n12-164003 OIS\n\n"", ""\n12-041420 OIS\n\n"", ""\n10-187211 OIS\n\n"", ""\n10-109231 OIS\n\n"", ""\n06-109584 OIS\n\n"", ""\n05-254554 OIS\n\n"", ""\n03-087626 OIS\n\n"", ""\n14-151 Sustained Dishonesty\n\n"", ""\n19-135 Sustained Dishonesty\n\n"", ""\n18-176 Sustained Dishonesty\n\n"", ""\n11-211028 OIS\n\n"", ""\n06-013598 OIS\n\n"", ""\n02-058023 OIS\n\n"", ""\n01-072725 OIS\n\n"", ""\n20-014019 Use of Force\n\n"", ""\n20-015326 Use of Force\n\n"", ""\n20-009167 Use of Force\n\n"", ""\n18-033347 Use of Force\n\n"", ""\n17-020481 Use of Force\n\n"", ""\n16-060907 Use of Force\n\n"", ""\n17-003805 OIS\n\n"", ""\n15-093645 OIS\n\n"", ""\n13-188544 OIS\n\n"", ""\n20-031243 OIS\n\n"", ""\n19-059 Sustained Dishonesty\n\n"", ""\n18-067 Sustained Dishonesty\n\n"", ""\n18-065 Sustained Dishonesty\n\n"", ""\n18-063 Sustained Dishonesty\n\n"", ""\n18-062 Sustained Dishonesty\n\n"", ""\n18-061 Sustained Dishonesty\n\n"", ""\n18-060 Sustained Dishonesty\n\n"", ""\n20-009515 Use of Force\n\n"", ""\n20-008412 Use of Force\n\n"", ""\n18-033960 Use of Force\n\n"", ""\n17-068 Sustained Dishonesty\n\n"", ""\n18-027 Sustained Dishonety\n\n"", ""\n18-026 Sustained Dishonesty\n\n"", ""\n17-079 Sustained Dishonesty\n\n"", ""\n15-160 Sustained Dishonesty\n\n"", ""\n15-150 Sustained Dishonesty\n\n"", ""\n15-135 Sustained Dishonesty\n\n"", ""\n15-116 Sexual Assault\n\n"", ""\n14-118 Sustained Dishonesty\n\n"", ""\n13-148 Sustained Dishonesty\n\n"", ""\n15-037 Sustained Dishonesty\n\n"", ""\n13-145 Sustained Dishonesty\n\n"", ""\n13-141 Sustained Dishonesty\n\n"", ""\n13-136 Sustained Dishonesty\n\n"", ""\n13-124 Sustained Dishonesty\n\n"", ""\n13-115 Sustained Dishonesty\n\n"", ""\n19-026579 Use of Force\n\n"", ""\n20-007202 Use of Force\n\n"", ""\n20-006528 Use of Force\n\n"", ""\n19-046455 Use of Force\n\n"", ""\n19-002925 Use of Force\n\n"", ""\n19-049751 Use of Force\n\n"", ""\n19-046814 Use of Force\n\n"", ""\n19-030299 Use of Force\n\n"", ""\n19-015450 Use of Force\n\n"", ""\n13-004 Sustained Dishonesty\n\n"", ""\n19-035017 Use of Force\n\n"", ""\n19-027020 Use of Force\n\n"", ""\n19-012737 Use of Force \n\n"", ""\n19-005291 Use of Force\n\n"", ""\n19-002419 Use of Force\n\n"", ""\n14-121963 Officer Involved Shooting (OIS)\n\n"", ""\n19-002545 Use of Force\n\n"", ""\n19-012649 Use of Force\n\n"", ""\n18-002766/18-001203 Use of Force\n\n"", ""\n18-019895 Use of Force\n\n"", ""\n18-014708 Use of Force\n\n"", ""\n18-039171 Use of Force\n\n"", ""\n18-048751 Use of Force\n\n"", ""\n16-037674 OIS\n\n"", ""\n18-011596 Use of Force\n\n"", ""\n18-039754 Use of Force\n\n"", ""\n18-037420 Use of Force\n\n"", ""\n18-039946 Use of Force\n\n"", ""\n19-029383 Use of Force\n\n"", ""\n17-028673 Use of Force\n\n"", ""\n17-030601 Use of Force\n\n"", ""\n17-032444 Use of Force\n\n"", ""\n17-035948 Use of Force\n\n"", ""\n17-036781 Use of Force\n\n"", ""\n17-045452 Use of Force\n\n"", ""\n18-009248 Use of Force\n\n"", ""\n18-005421 OIS\n\n"", ""\n16-225472 Use of Force\n\n"", ""\n17-006092 Use of Force\n\n"", ""\n17-011538 Use of Force\n\n"", ""\n17-012816 Use of Force\n\n"", ""\n12-022073 OIS\n\n"", ""\n18-049633 Use of Force\n\n"", ""\n17-049808 Use of Force\n\n"", ""\n16-183459 Use of Force\n\n"", ""\n16-131221 Use of Force\n\n"", ""\n16-049243 Use of Force\n\n"", ""\n13-051335 Use of Force\n\n"", ""\nAB748: Officer-involved Shooting\n\n"", ""\n16-253663 Use of Force\n\n"", ""\n16-204638 Use of Force\n\n"", ""\n16-175330 Use of Force\n\n"", ""\n16-061838 Use of Force\n\n"", ""\n16-060140 Use of Force\n\n"", ""\n16-280983 Use of Force\n\n"", ""\n16-134794 Use of Force\n\n"", ""\n16-103791 Use of Force\n\n"", ""\n16-012403 Use of Force\n\n"", ""\n15-121772 Use of Force\n\n"", ""\n14-049495 Use of Force\n\n"", ""\n14-160051 Sexual Assault\n\n"", ""\n14-190439 Use of Force\n\n"", ""\n14-204617 Use of Force\n\n"", ""\n15-027200 Use of Force\n\n"", ""\n15-063223 Use of Force\n\n"", ""\n15-128868 Use of Force\n\n"", ""\n16-046794 Use of Force\n\n"", ""Share This"", ""Navigation"", ""Quick Links"", ""Resources"", ""Follow Us""]",[],[],"[""Th\u00f4ng B\u00e1o Kh\u00f4ng Ch\u1ecbu Tr\u00e1ch Nhi\u1ec7m"", ""Exenci\u00f3n de responsabilidad"", ""\uc54c\ub824\ub4dc\ub9bd\ub2c8\ub2e4"", ""\u514d\u8cac\u8072\u660e""]",[] @@ -5133,15 +5133,15 @@ Due to privacy considerations, exact CCNs and arrest numbers for these arrest da 4360,https://app.powerbi.com/view?r=eyJrIjoiYTBiMTkwNDAtMjIwNy00MGE4LThmMDktNWJiMjdlOTAwNGRjIiwidCI6IjgxMGUyYjFkLWIxZGQtNDg1Ni04MzAzLWMwMTY1MDBhNWNmYSJ9,List of Data Sources,200,Microsoft Power BI,"",[],[],[],[],[],[] 4361,"",Records Request Info,-1,"","",,,,,, 4362,https://public.powerdms.com/a2gov/tree,Policies & Contracts,200,PowerDMS,"",[],[],[],[],[],[] -4363,https://www.a2gov.org/departments/police/Pages/Careers.aspx,Training & Hiring Info,200," - - Careers - +4363,https://www.a2gov.org/departments/police/Pages/Careers.aspx,Training & Hiring Info,200," + + Careers + ","","[""\r\n Careers\r\n ""]","[""\u200bStart a career with the Ann Arbor Police"", ""(NEW)\u00a0Stu\u200b\u200bdent Internship Program"", ""Hiring pr\u200b\u200b\u200b\u200bocess and ti\u200b\u200bm\u200beline"", ""\u200b\u200b\u200b\u200b\u200bRes\u200bou\u200brc\u200b\u200b\u200bes\u200b\u200b\u200b\u200b""]",[],"[""Connect with Us""]",[],[] -4364,https://www.a2gov.org/departments/police/units/Pages/Training.aspx,Training & Hiring Info,200," - - Training - +4364,https://www.a2gov.org/departments/police/units/Pages/Training.aspx,Training & Hiring Info,200," + + Training + ","","[""\r\n Training\r\n ""]","[""New Hire Polic\u200b\u200be Officer Training"", ""Beyond New\u200b Hire Training""]","[""Visit the\u00a0Careers Page\u200b\u200b""]","[""Connect with Us""]",[],[] 4365,https://www.crimemapping.com/map/mi/annarbor,Crime Maps & Reports,200,CrimeMapping.com - Helping You Build a Safer Community,"",[],[],[],[],[],[] 4366,https://beaconny.gov/wp-content/uploads/2019/09/Beacon_Police_Presentation.pptx,Annual & Monthly Reports,200,"","",[],[],[],[],[],[] @@ -5188,11 +5188,11 @@ Hate crimes are criminal offenses that are motivated to some extent by the offen 4406,"https://communitycrimemap.com/?address=Madison,%20WI",Crime Maps & Reports,200,LexisNexis® Community Crime Map,"",[],[],[],[],[],[] 4407,https://www.montgomerycountymd.gov/OLO/Resources/Files/2022_reports/OLOReport2022-12.pdf,Citations,200,"","",[],[],[],[],[],[] 4408,https://app.powerbigov.us/view?r=eyJrIjoiZTBhNDYzMTMtZTRhMy00OWRkLTk3ZGItZmJlMGQ2OTRjMDQzIiwidCI6IjYwYWZlOWUyLTQ5Y2QtNDliMS04ODUxLTY0ZGYwMjc2YTJlOCJ9&pageName=ReportSection,Stops,200,Microsoft Power BI,"",[],[],[],[],[],[] -4409,https://www.montgomerycountymd.gov/pol/crime-data.html,List of Data Sources,200," - Public Safety Data Page, Montgomery County Police Department , Montgomery County, MD +4409,https://www.montgomerycountymd.gov/pol/crime-data.html,List of Data Sources,200," + Public Safety Data Page, Montgomery County Police Department , Montgomery County, MD ","",[],"[""Public Safety Data""]","[""Annual Reports"", ""Monthly Hate/Bias Summaries"", ""Weekly Crime Summary Reports"", ""Sex Offender Registry\u00a0"", ""Extreme Risk Protection Order (ERPO) Information"", ""Other Reports"", ""Crime Incident Map""]","[""POLICE CONTACTS"", ""FOR CRIME SOLVERS"", ""DISTRICTS"", ""RESOURCES"", ""FOLLOW US"", ""STAY INFORMED""]",[],[] -4410,https://www.montgomerycountymd.gov/pol/data/community-pol-report.html,Annual & Monthly Reports,200," - Community Policing Report, MCPD, Montgomery County, MD +4410,https://www.montgomerycountymd.gov/pol/data/community-pol-report.html,Annual & Monthly Reports,200," + Community Policing Report, MCPD, Montgomery County, MD ","",[],"[""Annual Community Policing Reports"", ""Statistical Data Reports for County Officials""]",[],"[""POLICE CONTACTS"", ""FOR CRIME SOLVERS"", ""DISTRICTS"", ""RESOURCES"", ""FOLLOW US"", ""STAY INFORMED""]",[],[] 4411,https://spdblotter.seattle.gov/2022/01/14/spd-updates-traffic-stop-guidelines/,Policies & Contracts,200,SPD Updates Traffic Stop Guidelines - SPD Blotter,"","[""SPD Updates Traffic Stop Guidelines""]","[""Find Posts By Topic"", ""You might also like..."", ""Police"", ""City-Wide Information"", ""Top Requests"", ""Policies""]","[""Animals"", ""Assistance"", ""For Businesses"", ""Civil Rights"", ""Elected Officials"", ""Explore the City"", ""Get Involved"", ""Immigrants and Refugees"", ""Issues and Initiatives"", ""Learning and Education"", ""Public Safety"", ""Transportation and Development"", ""Technology"", ""Utilities""]","[""Browse the Archive""]",[],[] 4412,https://shakeronline.com/714/Policies-Practices,Policies & Contracts,200,"Policies & Practices | Shaker Heights, OH",Learn more about the department's policies.,"[""\r\n\r\nPolicies & Practices\t\t""]",[],"[""Loading"", ""Bias Free Policing Policy"", ""Body Worn Cameras & Dashcam Video Systems"", ""Duty to Intervene Policy"", ""Officer Involved Critical Incidents Policy"", ""Response to Threats Policy"", ""Other"", ""Contact Us"", ""Quick Links"", ""Site Links""]",[],[],[] diff --git a/pdap_api_client/AccessManager.py b/pdap_api_client/AccessManager.py new file mode 100644 index 00000000..87877466 --- /dev/null +++ b/pdap_api_client/AccessManager.py @@ -0,0 +1,123 @@ +from http import HTTPStatus +from typing import Optional + +import requests + +from pdap_api_client.DTOs import RequestType, Namespaces, RequestInfo, ResponseInfo + +API_URL = "https://data-sources-v2.pdap.dev/api" +request_methods = { + RequestType.POST: requests.post, + RequestType.PUT: requests.put, + RequestType.GET: requests.get, + RequestType.DELETE: requests.delete, +} + + +class CustomHTTPException(Exception): + pass + + +def build_url( + namespace: Namespaces, + subdomains: Optional[list[str]] = None +): + url = f"{API_URL}/{namespace.value}" + if subdomains is not None: + url = f"{url}/{'/'.join(subdomains)}" + return url + + +class AccessManager: + """ + Manages login, api key, access and refresh tokens + """ + def __init__(self, email: str, password: str, api_key: Optional[str] = None): + self.access_token = None + self.refresh_token = None + self.api_key = api_key + self.login(email=email, password=password) + + # TODO: Add means to refresh if token expired. + + def load_api_key(self): + url = build_url( + namespace=Namespaces.AUTH, + subdomains=["api-key"] + ) + request_info = RequestInfo( + type_ = RequestType.POST, + url=url, + headers=self.jwt_header() + ) + response_info = self.make_request(request_info) + self.api_key = response_info.data["api_key"] + + def refresh_access_token(self): + url = build_url( + namespace=Namespaces.AUTH, + subdomains=["refresh-session"], + ) + raise NotImplementedError("Waiting on https://github.com/Police-Data-Accessibility-Project/data-sources-app/issues/566") + + def make_request(self, ri: RequestInfo) -> ResponseInfo: + try: + response = request_methods[ri.type_]( + ri.url, + json=ri.json, + headers=ri.headers, + params=ri.params, + timeout=ri.timeout + ) + response.raise_for_status() + except requests.RequestException as e: + # TODO: Precise string matching here is brittle. Consider changing later. + if e.response.json().message == "Token is expired. Please request a new token.": + self.refresh_access_token() + return self.make_request(ri) + else: + raise CustomHTTPException(f"Error making {ri.type_} request to {ri.url}: {e}") + return ResponseInfo( + status_code=HTTPStatus(response.status_code), + data=response.json() + ) + + def login(self, email: str, password: str): + url = build_url( + namespace=Namespaces.AUTH, + subdomains=["login"] + ) + request_info = RequestInfo( + type_=RequestType.POST, + url=url, + json={ + "email": email, + "password": password + } + ) + response_info = self.make_request(request_info) + data = response_info.data + self.access_token = data["access_token"] + self.refresh_token = data["refresh_token"] + + + def jwt_header(self) -> dict: + """ + Retrieve JWT header + Returns: Dictionary of Bearer Authorization with JWT key + """ + return { + "Authorization": f"Bearer {self.access_token}" + } + + def api_key_header(self): + """ + Retrieve API key header + Returns: Dictionary of Basic Authorization with API key + + """ + if self.api_key is None: + self.load_api_key() + return { + "Authorization": f"Basic {self.api_key}" + } diff --git a/pdap_api_client/DTOs.py b/pdap_api_client/DTOs.py new file mode 100644 index 00000000..31c8c2cf --- /dev/null +++ b/pdap_api_client/DTOs.py @@ -0,0 +1,54 @@ +from enum import Enum +from http import HTTPStatus +from typing import Optional + +from pydantic import BaseModel + + +class MatchAgencyInfo(BaseModel): + submitted_name: str + id: str + +class ApprovalStatus(Enum): + APPROVED = "approved" + REJECTED = "rejected" + PENDING = "pending" + NEEDS_IDENTIFICATION = "needs identification" + + + +class UniqueURLDuplicateInfo(BaseModel): + original_url: str + approval_status: ApprovalStatus + rejection_note: str + +class UniqueURLResponseInfo(BaseModel): + is_unique: bool + duplicates: list[UniqueURLDuplicateInfo] + + +class Namespaces(Enum): + AUTH = "auth" + MATCH = "match" + CHECK = "check" + + +class RequestType(Enum): + POST = "POST" + PUT = "PUT" + GET = "GET" + DELETE = "DELETE" + + +class RequestInfo(BaseModel): + type_: RequestType + url: str + json: Optional[dict] = None + headers: Optional[dict] = None + params: Optional[dict] = None + timeout: Optional[int] = 10 + + +class ResponseInfo(BaseModel): + status_code: HTTPStatus + data: Optional[dict] diff --git a/pdap_api_client/PDAPClient.py b/pdap_api_client/PDAPClient.py new file mode 100644 index 00000000..6c03ce0f --- /dev/null +++ b/pdap_api_client/PDAPClient.py @@ -0,0 +1,65 @@ +from typing import List + +from pdap_api_client.AccessManager import build_url, AccessManager +from pdap_api_client.DTOs import MatchAgencyInfo, UniqueURLDuplicateInfo, UniqueURLResponseInfo, Namespaces, \ + RequestType, RequestInfo + + +class PDAPClient: + + def __init__(self, access_manager: AccessManager): + self.access_manager = access_manager + + def match_agency( + self, + name: str, + state: str, + county: str, + locality: str + ) -> List[MatchAgencyInfo]: + """ + Returns agencies, if any, that match or partially match the search criteria + """ + url = build_url( + namespace=Namespaces.MATCH, + subdomains=["agency"] + ) + request_info = RequestInfo( + type_=RequestType.POST, + url=url, + json={ + "name": name, + "state": state, + "county": county, + "locality": locality + } + ) + response_info = self.access_manager.make_request(request_info) + return [MatchAgencyInfo(**agency) for agency in response_info.data["agencies"]] + + + def is_url_unique( + self, + url_to_check: str + ) -> UniqueURLResponseInfo: + """ + Check if a URL is unique. Returns duplicate info otherwise + """ + url = build_url( + namespace=Namespaces.CHECK, + subdomains=["unique-url"] + ) + request_info = RequestInfo( + type_=RequestType.GET, + url=url, + params={ + "url": url_to_check + } + ) + response_info = self.access_manager.make_request(request_info) + duplicates = [UniqueURLDuplicateInfo(**entry) for entry in response_info.data["duplicates"]] + is_unique = (len(duplicates) == 0) + return UniqueURLResponseInfo( + is_unique=is_unique, + duplicates=duplicates + ) diff --git a/pdap_api_client/__init__.py b/pdap_api_client/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/requirements.txt b/requirements.txt index d4f5869f..d24ad348 100644 --- a/requirements.txt +++ b/requirements.txt @@ -25,4 +25,5 @@ lxml~=5.1.0 pyppeteer>=2.0.0 beautifulsoup4>=4.12.3 -sqlalchemy~=2.0.36 \ No newline at end of file +sqlalchemy~=2.0.36 +ckanapi~=4.8 \ No newline at end of file diff --git a/source_collectors/__init__.py b/source_collectors/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/source_collectors/auto_googler/AutoGooglerCollector.py b/source_collectors/auto_googler/AutoGooglerCollector.py new file mode 100644 index 00000000..1698104a --- /dev/null +++ b/source_collectors/auto_googler/AutoGooglerCollector.py @@ -0,0 +1,37 @@ +from collector_manager.CollectorBase import CollectorBase +from collector_manager.enums import CollectorStatus, CollectorType +from source_collectors.auto_googler.AutoGoogler import AutoGoogler +from source_collectors.auto_googler.schemas import AutoGooglerCollectorConfigSchema, \ + AutoGooglerCollectorInnerOutputSchema, AutoGooglerCollectorOuterOutputSchema +from source_collectors.auto_googler.GoogleSearcher import GoogleSearcher +from source_collectors.auto_googler.SearchConfig import SearchConfig + + +class AutoGooglerCollector(CollectorBase): + config_schema = AutoGooglerCollectorConfigSchema + output_schema = AutoGooglerCollectorOuterOutputSchema + collector_type = CollectorType.AUTO_GOOGLER + + def run_implementation(self) -> None: + auto_googler = AutoGoogler( + search_config=SearchConfig( + urls_per_result=self.config["urls_per_result"], + queries=self.config["queries"], + ), + google_searcher=GoogleSearcher( + api_key=self.config["api_key"], + cse_id=self.config["cse_id"], + ) + ) + for log in auto_googler.run(): + self.log(log) + + inner_data = [] + for query in auto_googler.search_config.queries: + inner_data.append({ + "query": query, + "query_results": auto_googler.data[query], + }) + + self.data = {"data": inner_data} + diff --git a/source_collectors/auto_googler/GoogleSearcher.py b/source_collectors/auto_googler/GoogleSearcher.py index 6638770a..4ccaceef 100644 --- a/source_collectors/auto_googler/GoogleSearcher.py +++ b/source_collectors/auto_googler/GoogleSearcher.py @@ -53,10 +53,18 @@ def search(self, query: str) -> Union[list[dict], None]: If the daily quota is exceeded, None is returned. """ try: - res = self.service.cse().list(q=query, cx=self.cse_id).execute() - if "items" not in res: + raw_results = self.service.cse().list(q=query, cx=self.cse_id).execute() + if "items" not in raw_results: return None - return res['items'] + results = [] + for result in raw_results['items']: + entry = { + 'title': result['title'], + 'url': result['link'], + 'snippet': result['snippet'] + } + results.append(entry) + return results # Process your results except HttpError as e: if "Quota exceeded" in str(e): diff --git a/source_collectors/auto_googler/schemas.py b/source_collectors/auto_googler/schemas.py new file mode 100644 index 00000000..b05f6e81 --- /dev/null +++ b/source_collectors/auto_googler/schemas.py @@ -0,0 +1,56 @@ +from marshmallow import Schema, fields, ValidationError + + + +class AutoGooglerCollectorConfigSchema(Schema): + api_key = fields.Str( + required=True, + allow_none=False, + metadata={"description": "The API key required for accessing the Google Custom Search API."} + ) + cse_id = fields.Str( + required=True, + allow_none=False, + metadata={"description": "The CSE (Custom Search Engine) ID required for identifying the specific search engine to use."} + ) + urls_per_result = fields.Int( + required=False, + allow_none=False, + metadata={"description": "Maximum number of URLs returned per result. Minimum is 1. Default is 10"}, + validate=lambda value: value >= 1, + load_default=10 + ) + queries = fields.List( + fields.Str(), + required=True, + allow_none=False, + metadata={"description": "List of queries to search for."}, + validate=lambda value: len(value) > 0 + ) + +class AutoGooglerCollectorInnerOutputSchema(Schema): + title = fields.Str( + metadata={"description": "The title of the result."} + ) + url = fields.Str( + metadata={"description": "The URL of the result."} + ) + snippet = fields.Str( + metadata={"description": "The snippet of the result."} + ) + +class AutoGooglerCollectorResultSchema(Schema): + query = fields.Str( + metadata={"description": "The query used for the search."} + ) + query_results = fields.List( + fields.Nested(AutoGooglerCollectorInnerOutputSchema), + metadata={"description": "List of results for each query."} + ) + +class AutoGooglerCollectorOuterOutputSchema(Schema): + data = fields.List( + fields.Nested(AutoGooglerCollectorResultSchema), + required=True, + allow_none=False + ) \ No newline at end of file diff --git a/source_collectors/ckan/CKANCollector.py b/source_collectors/ckan/CKANCollector.py new file mode 100644 index 00000000..4f38277c --- /dev/null +++ b/source_collectors/ckan/CKANCollector.py @@ -0,0 +1,55 @@ +from pydantic import BaseModel + +from collector_manager.CollectorBase import CollectorBase +from collector_manager.enums import CollectorType +from source_collectors.ckan.ckan_scraper_toolkit import ckan_package_search, ckan_group_package_show, \ + ckan_package_search_from_organization +from source_collectors.ckan.schemas import CKANSearchSchema, CKANOutputSchema +from source_collectors.ckan.scrape_ckan_data_portals import perform_search, get_flat_list, deduplicate_entries, \ + get_collections, filter_result, parse_result + +SEARCH_FUNCTION_MAPPINGS = { + "package_search": ckan_package_search, + "group_search": ckan_group_package_show, + "organization_search": ckan_package_search_from_organization +} + +class CKANCollector(CollectorBase): + config_schema = CKANSearchSchema + output_schema = CKANOutputSchema + collector_type = CollectorType.CKAN + + def run_implementation(self): + results = [] + for search in SEARCH_FUNCTION_MAPPINGS.keys(): + self.log(f"Running search '{search}'...") + config = self.config.get(search, None) + if config is None: + continue + func = SEARCH_FUNCTION_MAPPINGS[search] + results = perform_search( + search_func=func, + search_terms=config, + results=results + ) + flat_list = get_flat_list(results) + deduped_flat_list = deduplicate_entries(flat_list) + + new_list = [] + + count = len(deduped_flat_list) + for idx, result in enumerate(deduped_flat_list): + if "extras" in result.keys(): + self.log(f"Found collection ({idx + 1}/{count}): {result['id']}") + collections = get_collections(result) + if collections: + new_list += collections[0] + continue + + new_list.append(result) + + filtered_results = list(filter(filter_result, flat_list)) + parsed_results = list(map(parse_result, filtered_results)) + + self.data = {"results": parsed_results} + diff --git a/source_collectors/ckan/__init__.py b/source_collectors/ckan/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/source_collectors/ckan/ckan_scraper_toolkit.py b/source_collectors/ckan/ckan_scraper_toolkit.py index b441c039..c1ec238c 100644 --- a/source_collectors/ckan/ckan_scraper_toolkit.py +++ b/source_collectors/ckan/ckan_scraper_toolkit.py @@ -72,8 +72,7 @@ def ckan_package_search( packages = remote.action.package_search( q=query, rows=num_rows, start=start, **kwargs ) - # Add the base_url to each package - [package.update(base_url=base_url) for package in packages["results"]] + add_base_url_to_packages(base_url, packages) results += packages["results"] total_results = packages["count"] @@ -90,6 +89,11 @@ def ckan_package_search( return results +def add_base_url_to_packages(base_url, packages): + # Add the base_url to each package + [package.update(base_url=base_url) for package in packages["results"]] + + def ckan_package_search_from_organization( base_url: str, organization_id: str ) -> list[dict[str, Any]]: @@ -104,12 +108,16 @@ def ckan_package_search_from_organization( id=organization_id, include_datasets=True ) packages = organization["packages"] - results = [] + results = search_for_results(base_url, packages) + return results + + +def search_for_results(base_url, packages): + results = [] for package in packages: query = f"id:{package['id']}" results += ckan_package_search(base_url=base_url, query=query) - return results @@ -137,7 +145,6 @@ def ckan_collection_search(base_url: str, collection_id: str) -> list[Package]: :param collection_id: The ID of the parent package. :return: List of Package objects representing the packages associated with the collection. """ - packages = [] url = f"{base_url}?collection_package_id={collection_id}" soup = _get_soup(url) @@ -145,58 +152,112 @@ def ckan_collection_search(base_url: str, collection_id: str) -> list[Package]: num_results = int(soup.find(class_="new-results").text.split()[0].replace(",", "")) pages = math.ceil(num_results / 20) + packages = get_packages(base_url, collection_id, pages) + + return packages + + +def get_packages(base_url, collection_id, pages): + packages = [] for page in range(1, pages + 1): url = f"{base_url}?collection_package_id={collection_id}&page={page}" soup = _get_soup(url) - with ThreadPoolExecutor(max_workers=10) as executor: - futures = [ - executor.submit( - _collection_search_get_package_data, dataset_content, base_url - ) - for dataset_content in soup.find_all(class_="dataset-content") - ] - - [packages.append(package.result()) for package in as_completed(futures)] + futures = get_futures(base_url, packages, soup) # Take a break to avoid being timed out if len(futures) >= 15: time.sleep(10) - return packages +def get_futures(base_url: str, packages: list[Package], soup: BeautifulSoup) -> list[Any]: + """Returns a list of futures for the collection search.""" + with ThreadPoolExecutor(max_workers=10) as executor: + futures = [ + executor.submit( + _collection_search_get_package_data, dataset_content, base_url + ) + for dataset_content in soup.find_all(class_="dataset-content") + ] + + [packages.append(package.result()) for package in as_completed(futures)] + return futures + + def _collection_search_get_package_data(dataset_content, base_url: str): """Parses the dataset content and returns a Package object.""" package = Package() joined_url = urljoin(base_url, dataset_content.a.get("href")) dataset_soup = _get_soup(joined_url) # Determine if the dataset url should be the linked page to an external site or the current site + resources = get_resources(dataset_soup) + button = get_button(resources) + set_url_and_data_portal_type(button, joined_url, package, resources) + package.base_url = base_url + set_title(dataset_soup, package) + set_agency_name(dataset_soup, package) + set_supplying_entity(dataset_soup, package) + set_description(dataset_soup, package) + set_record_format(dataset_content, package) + date = get_data(dataset_soup) + set_source_last_updated(date, package) + + return package + + +def set_source_last_updated(date, package): + package.source_last_updated = datetime.strptime(date, "%B %d, %Y").strftime( + "%Y-%d-%m" + ) + + +def get_data(dataset_soup): + date = dataset_soup.find(property="dct:modified").text.strip() + return date + + +def get_button(resources): + button = resources[0].find(class_="btn-group") + return button + + +def get_resources(dataset_soup): resources = dataset_soup.find("section", id="dataset-resources").find_all( class_="resource-item" ) - button = resources[0].find(class_="btn-group") + return resources + + +def set_url_and_data_portal_type(button, joined_url, package, resources): if len(resources) == 1 and button is not None and button.a.text == "Visit page": package.url = button.a.get("href") else: package.url = joined_url package.data_portal_type = "CKAN" - package.base_url = base_url - package.title = dataset_soup.find(itemprop="name").text.strip() - package.agency_name = dataset_soup.find("h1", class_="heading").text.strip() - package.supplying_entity = dataset_soup.find(property="dct:publisher").text.strip() - package.description = dataset_soup.find(class_="notes").p.text + + +def set_record_format(dataset_content, package): package.record_format = [ - record_format.text.strip() for record_format in dataset_content.find_all("li") + format1.text.strip() for format1 in dataset_content.find_all("li") ] package.record_format = list(set(package.record_format)) - date = dataset_soup.find(property="dct:modified").text.strip() - package.source_last_updated = datetime.strptime(date, "%B %d, %Y").strftime( - "%Y-%d-%m" - ) - return package +def set_title(dataset_soup, package): + package.title = dataset_soup.find(itemprop="name").text.strip() + + +def set_agency_name(dataset_soup, package): + package.agency_name = dataset_soup.find("h1", class_="heading").text.strip() + + +def set_supplying_entity(dataset_soup, package): + package.supplying_entity = dataset_soup.find(property="dct:publisher").text.strip() + + +def set_description(dataset_soup, package): + package.description = dataset_soup.find(class_="notes").p.text def _get_soup(url: str) -> BeautifulSoup: diff --git a/source_collectors/ckan/constants.py b/source_collectors/ckan/constants.py new file mode 100644 index 00000000..4e2473c1 --- /dev/null +++ b/source_collectors/ckan/constants.py @@ -0,0 +1,38 @@ +CKAN_DATA_TYPES = [ + "CSV", + "PDF", + "XLS", + "XML", + "JSON", + "Other", + "RDF", + "GIS / Shapefile", + "HTML text", + "DOC / TXT", + "Video / Image", + ] + +CKAN_TYPE_CONVERSION_MAPPING = { + "XLSX": "XLS", + "Microsoft Excel": "XLS", + "KML": "GIS / Shapefile", + "GeoJSON": "GIS / Shapefile", + "application/vnd.geo+json": "GIS / Shapefile", + "ArcGIS GeoServices REST API": "GIS / Shapefile", + "Esri REST": "GIS / Shapefile", + "SHP": "GIS / Shapefile", + "OGC WMS": "GIS / Shapefile", + "QGIS": "GIS / Shapefile", + "gml": "GIS / Shapefile", + "WFS": "GIS / Shapefile", + "WMS": "GIS / Shapefile", + "API": "GIS / Shapefile", + "HTML": "HTML text", + "HTML page": "HTML text", + "": "HTML text", + "TEXT": "DOC / TXT", + "JPEG": "Video / Image", + "Api": "JSON", + "CSV downloads": "CSV", + "csv file": "CSV", + } \ No newline at end of file diff --git a/source_collectors/ckan/main.py b/source_collectors/ckan/main.py new file mode 100644 index 00000000..cc6f8da7 --- /dev/null +++ b/source_collectors/ckan/main.py @@ -0,0 +1,44 @@ +from source_collectors.ckan.ckan_scraper_toolkit import ckan_package_search, ckan_group_package_show, \ + ckan_package_search_from_organization +from source_collectors.ckan.scrape_ckan_data_portals import perform_search, get_flat_list, deduplicate_entries, \ + get_collection_child_packages, filter_result, parse_result, write_to_csv +from source_collectors.ckan.search_terms import package_search, group_search, organization_search + + + +def main(): + """ + Main function. + """ + results = [] + + print("Gathering results...") + results = perform_search( + search_func=ckan_package_search, + search_terms=package_search, + results=results, + ) + results = perform_search( + search_func=ckan_group_package_show, + search_terms=group_search, + results=results, + ) + results = perform_search( + search_func=ckan_package_search_from_organization, + search_terms=organization_search, + results=results, + ) + + flat_list = get_flat_list(results) + # Deduplicate entries + flat_list = deduplicate_entries(flat_list) + print("\nRetrieving collections...") + flat_list = get_collection_child_packages(flat_list) + + filtered_results = list(filter(filter_result, flat_list)) + parsed_results = list(map(parse_result, filtered_results)) + + write_to_csv(parsed_results) + +if __name__ == "__main__": + main() diff --git a/source_collectors/ckan/schemas.py b/source_collectors/ckan/schemas.py new file mode 100644 index 00000000..97d2c95c --- /dev/null +++ b/source_collectors/ckan/schemas.py @@ -0,0 +1,28 @@ +from marshmallow import Schema, fields + + +class PackageSearchSchema(Schema): + url = fields.String(required=True) + terms = fields.List(fields.String(required=True), required=True) + +class GroupAndOrganizationSearchSchema(Schema): + url = fields.String(required=True) + ids = fields.List(fields.String(required=True), required=True) + +class CKANSearchSchema(Schema): + package_search = fields.List(fields.Nested(PackageSearchSchema)) + group_search = fields.List(fields.Nested(GroupAndOrganizationSearchSchema)) + organization_search = fields.List(fields.Nested(GroupAndOrganizationSearchSchema)) + +class CKANOutputInnerSchema(Schema): + source_url = fields.String(required=True) + submitted_name = fields.String(required=True) + agency_name = fields.String(required=True) + description = fields.String(required=True) + supplying_entity = fields.String(required=True) + record_format = fields.List(fields.String(required=True), required=True) + data_portal_type = fields.String(required=True) + source_last_updated = fields.Date(required=True) + +class CKANOutputSchema(Schema): + results = fields.List(fields.Nested(CKANOutputInnerSchema), required=True) \ No newline at end of file diff --git a/source_collectors/ckan/scrape_ckan_data_portals.py b/source_collectors/ckan/scrape_ckan_data_portals.py index 2bb7733b..b15421fc 100644 --- a/source_collectors/ckan/scrape_ckan_data_portals.py +++ b/source_collectors/ckan/scrape_ckan_data_portals.py @@ -8,17 +8,11 @@ import pandas as pd from tqdm import tqdm -p = from_root("CONTRIBUTING.md").parent -sys.path.insert(1, str(p)) +from source_collectors.ckan.ckan_scraper_toolkit import Package, ckan_collection_search +from source_collectors.ckan.constants import CKAN_DATA_TYPES, CKAN_TYPE_CONVERSION_MAPPING -from scrapers_library.data_portals.ckan.ckan_scraper_toolkit import ( - ckan_package_search, - ckan_group_package_show, - ckan_collection_search, - ckan_package_search_from_organization, - Package, -) -from search_terms import package_search, group_search, organization_search +p = from_root(".pydocstyle").parent +sys.path.insert(1, str(p)) def perform_search( @@ -33,9 +27,14 @@ def perform_search( :param results: The list of results. :return: Updated list of results. """ + print(f"Performing search: {search_func.__name__}") key = list(search_terms[0].keys())[1] for search in tqdm(search_terms): - results += [search_func(search["url"], item) for item in search[key]] + item_results = [] + for item in search[key]: + item_result = search_func(search["url"], item) + item_results.append(item_result) + results += item_results return results @@ -52,17 +51,7 @@ def get_collection_child_packages( for result in tqdm(results): if "extras" in result.keys(): - collections = [ - ckan_collection_search( - base_url="https://catalog.data.gov/dataset/", - collection_id=result["id"], - ) - for extra in result["extras"] - if extra["key"] == "collection_metadata" - and extra["value"] == "true" - and not result["resources"] - ] - + collections = get_collections(result) if collections: new_list += collections[0] continue @@ -72,7 +61,19 @@ def get_collection_child_packages( return new_list -def filter_result(result: dict[str, Any] | Package): +def get_collections(result): + collections = [ + ckan_collection_search( + base_url="https://catalog.data.gov/dataset/", + collection_id=result["id"], + ) + for extra in result["extras"] + if parent_package_has_no_resources(extra=extra, result=result) + ] + return collections + + +def filter_result(result: dict[str, Any] | Package) -> bool: """Filters the result based on the defined criteria. :param result: The result to filter. @@ -82,28 +83,37 @@ def filter_result(result: dict[str, Any] | Package): return True for extra in result["extras"]: - # Remove parent packages with no resources - if ( - extra["key"] == "collection_metadata" - and extra["value"] == "true" - and not result["resources"] - ): + if parent_package_has_no_resources(extra, result): return False - # Remove non-public packages - elif extra["key"] == "accessLevel" and extra["value"] == "non-public": + elif package_non_public(extra): return False - # Remove packages with no data or landing page - if len(result["resources"]) == 0: - landing_page = next( - (extra for extra in result["extras"] if extra["key"] == "landingPage"), None - ) + if no_resources_available(result): + landing_page = get_landing_page(result) if landing_page is None: return False return True +def get_landing_page(result): + landing_page = next( + (extra for extra in result["extras"] if extra["key"] == "landingPage"), None + ) + return landing_page + + +def package_non_public(extra: dict[str, Any]) -> bool: + return extra["key"] == "accessLevel" and extra["value"] == "non-public" + + +def parent_package_has_no_resources( + extra: dict[str, Any] , + result: dict[str, Any] +) -> bool: + return extra["key"] == "collection_metadata" and extra["value"] == "true" and not result["resources"] + + def parse_result(result: dict[str, Any] | Package) -> dict[str, Any]: """Retrieves the important information from the package. @@ -129,7 +139,6 @@ def parse_result(result: dict[str, Any] | Package) -> dict[str, Any]: return package.to_dict() - def get_record_format_list( package: Package, resources: Optional[list[dict[str, Any]]] = None, @@ -140,66 +149,43 @@ def get_record_format_list( :param resources: The list of resources. :return: List of record formats. """ - data_types = [ - "CSV", - "PDF", - "XLS", - "XML", - "JSON", - "Other", - "RDF", - "GIS / Shapefile", - "HTML text", - "DOC / TXT", - "Video / Image", - ] - type_conversion = { - "XLSX": "XLS", - "Microsoft Excel": "XLS", - "KML": "GIS / Shapefile", - "GeoJSON": "GIS / Shapefile", - "application/vnd.geo+json": "GIS / Shapefile", - "ArcGIS GeoServices REST API": "GIS / Shapefile", - "Esri REST": "GIS / Shapefile", - "SHP": "GIS / Shapefile", - "OGC WMS": "GIS / Shapefile", - "QGIS": "GIS / Shapefile", - "gml": "GIS / Shapefile", - "WFS": "GIS / Shapefile", - "WMS": "GIS / Shapefile", - "API": "GIS / Shapefile", - "HTML": "HTML text", - "HTML page": "HTML text", - "": "HTML text", - "TEXT": "DOC / TXT", - "JPEG": "Video / Image", - "Api": "JSON", - "CSV downloads": "CSV", - "csv file": "CSV", - } - if resources is None: resources = package.record_format package.record_format = [] for resource in resources: - if isinstance(resource, str): - format = resource - else: - format = resource["format"] + format = get_initial_format(resource) + format = optionally_apply_format_type_conversion(format) + optionally_add_record_format_to_package(format, package) + optionally_add_other_to_record_format(format, package) - # Is the format one of our conversion types? - if format in type_conversion.keys(): - format = type_conversion[format] + return package.record_format - # Add the format to the package's record format list if it's not already there and is a valid data type - if format not in package.record_format and format in data_types: - package.record_format.append(format) - if format not in data_types: - package.record_format.append("Other") +def optionally_add_other_to_record_format(format, package): + if format not in CKAN_DATA_TYPES: + package.record_format.append("Other") - return package.record_format + +def optionally_add_record_format_to_package(format, package): + # Add the format to the package's record format list if it's not already there and is a valid data type + if format not in package.record_format and format in CKAN_DATA_TYPES: + package.record_format.append(format) + + +def optionally_apply_format_type_conversion(format): + # Is the format one of our conversion types? + if format in CKAN_TYPE_CONVERSION_MAPPING.keys(): + format = CKAN_TYPE_CONVERSION_MAPPING[format] + return format + + +def get_initial_format(resource): + if isinstance(resource, str): + format = resource + else: + format = resource["format"] + return format def get_source_url(result: dict[str, Any], package: Package) -> Package: @@ -209,27 +195,46 @@ def get_source_url(result: dict[str, Any], package: Package) -> Package: :param package: The package to update with the source URL. :return: The updated package. """ - # If there is only one resource available and it's a link - if len(result["resources"]) == 1 and package.record_format == ["HTML text"]: - # Use the link to the external page - package.url = result["resources"][0]["url"] - # If there are no resources available - elif len(result["resources"]) == 0: - # Use the dataset's external landing page - package.url = [ - extra["value"] - for extra in result["extras"] - if extra["key"] == "landingPage" - ] + if only_one_link_resource_available(package, result): + set_url_from_link_to_external_page(package, result) + elif no_resources_available(result): + set_url_from_external_landing_page(package, result) package.record_format = ["HTML text"] else: - # Use the package's dataset information page - package.url = f"{result['base_url']}dataset/{result['name']}" + set_url_from_dataset_information_page(package, result) package.data_portal_type = "CKAN" return package +def no_resources_available(result): + return len(result["resources"]) == 0 + + +def only_one_link_resource_available(package, result): + return len(result["resources"]) == 1 and package.record_format == ["HTML text"] + + +def set_url_from_dataset_information_page(package, result): + package.url = f"{result['base_url']}dataset/{result['name']}" + + +def set_url_from_link_to_external_page(package, result): + # Use the link to the external page + package.url = result["resources"][0]["url"] + + +def set_url_from_external_landing_page(package, result): + url = [ + extra["value"] + for extra in result["extras"] + if extra["key"] == "landingPage" + ] + if len(url) > 1: + raise ValueError("Multiple landing pages found") + package.url = url[0] + + def get_supplying_entity(result: dict[str, Any]) -> str: """Retrieves the supplying entity from the package's extras. @@ -246,42 +251,17 @@ def get_supplying_entity(result: dict[str, Any]) -> str: return result["organization"]["title"] -def main(): - """ - Main function. - """ - results = [] +def get_flat_list(results): + flat_list = list(chain(*results)) + return flat_list - print("Gathering results...") - results = perform_search( - search_func=ckan_package_search, - search_terms=package_search, - results=results, - ) - results = perform_search( - search_func=ckan_group_package_show, - search_terms=group_search, - results=results, - ) - results = perform_search( - search_func=ckan_package_search_from_organization, - search_terms=organization_search, - results=results, - ) - flat_list = list(chain(*results)) - # Deduplicate entries - flat_list = [i for n, i in enumerate(flat_list) if i not in flat_list[n + 1 :]] - print("\nRetrieving collections...") - flat_list = get_collection_child_packages(flat_list) +def deduplicate_entries(flat_list): + flat_list = [i for n, i in enumerate(flat_list) if i not in flat_list[n + 1:]] + return flat_list - filtered_results = list(filter(filter_result, flat_list)) - parsed_results = list(map(parse_result, filtered_results)) - # Write to CSV +def write_to_csv(parsed_results): df = pd.DataFrame(parsed_results) df.to_csv("results.csv") - -if __name__ == "__main__": - main() diff --git a/source_collectors/ckan/search_terms.py b/source_collectors/ckan/search_terms.py index 716d68f7..b5de4e2a 100644 --- a/source_collectors/ckan/search_terms.py +++ b/source_collectors/ckan/search_terms.py @@ -25,7 +25,7 @@ "3c648d96-0a29-4deb-aa96-150117119a23", "92654c61-3a7d-484f-a146-257c0f6c55aa", ], - }, + } ] organization_search = [ diff --git a/source_collectors/common_crawler/CommonCrawler.py b/source_collectors/common_crawler/CommonCrawler.py new file mode 100644 index 00000000..cf101619 --- /dev/null +++ b/source_collectors/common_crawler/CommonCrawler.py @@ -0,0 +1,133 @@ +import json +import time +from http import HTTPStatus +from urllib.parse import quote_plus + +import requests + +from source_collectors.common_crawler.utils import URLWithParameters + + +class CommonCrawler: + + def __init__( + self, + url: str, + keyword: str, + start_page: int = 1, + num_pages: int = 1, + crawl_id: str = "CC-MAIN-2023-50", + ): + """ + Initializes the CommonCrawlerManager with a crawl ID. + Args: + crawl_id: the Common Crawl index to use + """ + self.crawl_id = crawl_id + CC_INDEX_SERVER = "http://index.commoncrawl.org/" + INDEX_NAME = f"{self.crawl_id}-index" + self.root_url = f"{CC_INDEX_SERVER}{INDEX_NAME}" + + self.url = url + self.keyword = keyword + self.start_page = start_page + self.num_pages = num_pages + self.url_results = None + + def run(self): + url_results = [] + for page in range(self.start_page, self.start_page + self.num_pages): + # Wait 5 seconds before making the next request, to avoid overloading the server + time.sleep(5) + records = self.search_common_crawl_index(url=self.url, page=page) + + # If records were found, filter them and add to results + if not records: + yield f"No records found for {self.url} on page {page}" + continue + + keyword_urls = self.get_urls_with_keyword(records, self.keyword) + url_results.extend(keyword_urls) + + yield f"Found {len(keyword_urls)} records for {self.url} on page {page}" + + yield f"Found {len(url_results)} total records for {self.url}" + self.url_results = url_results + + + def search_common_crawl_index( + self, url: str, page: int = 0, max_retries: int = 20 + ) -> list[dict]: + """ + This method is used to search the Common Crawl index for a given URL and page number + Args: + url: a URL to search for + page: the page number to search + + Returns: A list of records (dictionaries) containing the search results + + """ + encoded_url = quote_plus(url) + search_url = URLWithParameters(self.root_url) + search_url.add_parameter("url", encoded_url) + search_url.add_parameter("output", "json") + search_url.add_parameter("page", page) + + retries = 0 + delay = 1 + + # put HTTP GET request in re-try loop in case of rate limiting. Once per second is nice enough per common crawl doc. + while retries < max_retries: + response = self.make_request(search_url) + if response: + return self.process_response(response, url, page) + + retries += 1 + print( + f"Rate limit exceeded. Retrying in {delay} second(s)... (Attempt {retries}/{max_retries})" + ) + time.sleep(delay) + + print(f"Max retries exceeded. Failed to get records for {url} on page {page}.") + return None + + def make_request(self, search_url: str) -> requests.Response: + """ + Makes the HTTP GET request to the given search URL. + Return the response if successful, None if rate-limited. + """ + try: + response = requests.get(str(search_url)) + response.raise_for_status() + return response + except requests.exceptions.RequestException as e: + if ( + response.status_code == HTTPStatus.INTERNAL_SERVER_ERROR + and "SlowDown" in response.text + ): + return None + else: + print(f"Failed to get records: {e}") + return None + + def process_response( + self, response: requests.Response, url: str, page: int + ) -> list[dict]: + """Processes the HTTP response and returns the parsed records if successful.""" + if response.status_code == HTTPStatus.OK: + records = response.text.strip().split("\n") + print(f"Found {len(records)} records for {url} on page {page}") + return [json.loads(record) for record in records] + elif "First Page is 0, Last Page is 0" in response.text: + print("No records exist in index matching the url search term") + return None + else: + print(f"Unexpected response: {response.status_code}") + return None + + @staticmethod + def get_urls_with_keyword(records: list[dict], keyword) -> list[str]: + """ + Returns a list of URLs that contain the given keyword + """ + return [record["url"] for record in records if keyword in record["url"]] diff --git a/source_collectors/common_crawler/CommonCrawlerCollector.py b/source_collectors/common_crawler/CommonCrawlerCollector.py new file mode 100644 index 00000000..301b4897 --- /dev/null +++ b/source_collectors/common_crawler/CommonCrawlerCollector.py @@ -0,0 +1,24 @@ +from collector_manager.CollectorBase import CollectorBase +from collector_manager.enums import CollectorType +from source_collectors.common_crawler.CommonCrawler import CommonCrawler +from source_collectors.common_crawler.schemas import CommonCrawlerConfigSchema, CommonCrawlerOutputSchema + + +class CommonCrawlerCollector(CollectorBase): + config_schema = CommonCrawlerConfigSchema + output_schema = CommonCrawlerOutputSchema + collector_type = CollectorType.COMMON_CRAWLER + + def run_implementation(self) -> None: + print("Running Common Crawler...") + common_crawler = CommonCrawler( + crawl_id=self.config["common_crawl_id"], + url=self.config["url"], + keyword=self.config["keyword"], + start_page=self.config["start_page"], + num_pages=self.config["pages"] + ) + for status in common_crawler.run(): + self.log(status) + + self.data = {"urls": common_crawler.url_results} \ No newline at end of file diff --git a/source_collectors/common_crawler/main.py b/source_collectors/common_crawler/main.py index a83b0aee..549e5327 100644 --- a/source_collectors/common_crawler/main.py +++ b/source_collectors/common_crawler/main.py @@ -8,16 +8,17 @@ from dotenv import load_dotenv +from source_collectors.common_crawler.argparser import parse_args +from source_collectors.common_crawler.cache import CommonCrawlerCacheManager +from source_collectors.common_crawler.crawler import CommonCrawlResult, CommonCrawlerManager +from source_collectors.common_crawler.csv_manager import CSVManager + # The below code sets the working directory to be the root of the entire repository # This is done to solve otherwise quite annoying import issues. sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) from util.huggingface_api_manager import HuggingFaceAPIManager from util.miscellaneous_functions import get_filename_friendly_timestamp -from common_crawler.argparser import parse_args -from common_crawler.cache import CommonCrawlerCacheManager -from common_crawler.crawler import CommonCrawlerManager, CommonCrawlResult -from common_crawler.csv_manager import CSVManager from label_studio_interface.LabelStudioConfig import LabelStudioConfig from label_studio_interface.LabelStudioAPIManager import LabelStudioAPIManager diff --git a/source_collectors/common_crawler/schemas.py b/source_collectors/common_crawler/schemas.py new file mode 100644 index 00000000..25b4a06f --- /dev/null +++ b/source_collectors/common_crawler/schemas.py @@ -0,0 +1,18 @@ +from marshmallow import Schema, fields + + +class CommonCrawlerConfigSchema(Schema): + common_crawl_id = fields.String(required=True, description="The Common Crawl ID", example="CC-MAIN-2022-10") + url = fields.String(required=True, description="The URL to query", example="*.gov") + keyword = fields.String(required=True, description="The keyword to search in the url", example="police") + start_page = fields.Integer(required=False, description="The page to start from", example=1) + pages = fields.Integer(required=False, description="The number of pages to search", example=1) + +class CommonCrawlerOutputSchema(Schema): + urls = fields.List( + fields.String( + required=True + ), + required=True, + description="The list of URLs found in the search" + ) \ No newline at end of file diff --git a/source_collectors/muckrock/README.md b/source_collectors/muckrock/README.md index d74b77f0..43bae80d 100644 --- a/source_collectors/muckrock/README.md +++ b/source_collectors/muckrock/README.md @@ -56,8 +56,6 @@ pip install -r requirements.txt ### 2. Clone Muckrock database & search locally -~~- `download_muckrock_foia.py` `search_local_foia_json.py`~~ (deprecated) - - scripts to clone the MuckRock foia requests collection for fast local querying (total size <2GB at present) - `create_foia_data_db.py` creates and populates a SQLite database (`foia_data.db`) with all MuckRock foia requests. Various errors outside the scope of this script may occur; a counter (`last_page_fetched.txt`) is created to keep track of the most recent page fetched and inserted into the database. If the program exits prematurely, simply run `create_foia_data_db.py` again to continue where you left off. A log file is created to capture errors for later reference. diff --git a/source_collectors/muckrock/__init__.py b/source_collectors/muckrock/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/source_collectors/muckrock/classes/FOIADBSearcher.py b/source_collectors/muckrock/classes/FOIADBSearcher.py new file mode 100644 index 00000000..391f7a8d --- /dev/null +++ b/source_collectors/muckrock/classes/FOIADBSearcher.py @@ -0,0 +1,65 @@ +import os +import sqlite3 + +import pandas as pd + +from source_collectors.muckrock.constants import FOIA_DATA_DB + +check_results_table_query = """ + SELECT name FROM sqlite_master + WHERE (type = 'table') + AND (name = 'results') + """ + +search_foia_query = """ + SELECT * FROM results + WHERE (title LIKE ? OR tags LIKE ?) + AND (status = 'done') + """ + + +class FOIADBSearcher: + + def __init__(self, db_path = FOIA_DATA_DB): + self.db_path = db_path + if not os.path.exists(self.db_path): + raise FileNotFoundError("foia_data.db does not exist.\nRun create_foia_data_db.py first to create and populate it.") + + + def search(self, search_string: str) -> pd.DataFrame | None: + """ + Searches the foia_data.db database for FOIA request entries matching the provided search string. + + Args: + search_string (str): The string to search for in the `title` and `tags` of the `results` table. + + Returns: + Union[pandas.DataFrame, None]: + - pandas.DataFrame: A DataFrame containing the matching entries from the database. + - None: If an error occurs during the database operation. + + Raises: + sqlite3.Error: If any database operation fails, prints error and returns None. + Exception: If any unexpected error occurs, prints error and returns None. + """ + try: + with sqlite3.connect(self.db_path) as conn: + results_table = pd.read_sql_query(check_results_table_query, conn) + if results_table.empty: + print("The `results` table does not exist in the database.") + return None + + df = pd.read_sql_query( + sql=search_foia_query, + con=conn, + params=[f"%{search_string}%", f"%{search_string}%"] + ) + + except sqlite3.Error as e: + print(f"Sqlite error: {e}") + return None + except Exception as e: + print(f"An unexpected error occurred: {e}") + return None + + return df \ No newline at end of file diff --git a/source_collectors/muckrock/classes/FOIASearcher.py b/source_collectors/muckrock/classes/FOIASearcher.py new file mode 100644 index 00000000..1def16df --- /dev/null +++ b/source_collectors/muckrock/classes/FOIASearcher.py @@ -0,0 +1,71 @@ +from typing import Optional + +from source_collectors.muckrock.classes.muckrock_fetchers import FOIAFetcher +from tqdm import tqdm + + +class SearchCompleteException(Exception): + pass + +class FOIASearcher: + """ + Used for searching FOIA data from MuckRock + """ + + def __init__(self, fetcher: FOIAFetcher, search_term: Optional[str] = None): + self.fetcher = fetcher + self.search_term = search_term + + def fetch_page(self) -> dict | None: + """ + Fetches the next page of results using the fetcher. + """ + data = self.fetcher.fetch_next_page() + if data is None or data.get("results") is None: + return None + return data + + def filter_results(self, results: list[dict]) -> list[dict]: + """ + Filters the results based on the search term. + Override or modify as needed for custom filtering logic. + """ + if self.search_term: + return [result for result in results if self.search_term.lower() in result["title"].lower()] + return results + + def update_progress(self, pbar: tqdm, results: list[dict]) -> int: + """ + Updates the progress bar and returns the count of results processed. + """ + num_results = len(results) + pbar.update(num_results) + return num_results + + def search_to_count(self, max_count: int) -> list[dict]: + """ + Fetches and processes results up to a maximum count. + """ + count = max_count + all_results = [] + with tqdm(total=max_count, desc="Fetching results", unit="result") as pbar: + while count > 0: + try: + results = self.get_next_page_results() + except SearchCompleteException: + break + + all_results.extend(results) + count -= self.update_progress(pbar, results) + + return all_results + + def get_next_page_results(self) -> list[dict]: + """ + Fetches and processes the next page of results. + """ + data = self.fetch_page() + if not data: + raise SearchCompleteException + return self.filter_results(data["results"]) + diff --git a/source_collectors/muckrock/classes/MuckrockCollector.py b/source_collectors/muckrock/classes/MuckrockCollector.py new file mode 100644 index 00000000..e4e3805f --- /dev/null +++ b/source_collectors/muckrock/classes/MuckrockCollector.py @@ -0,0 +1,160 @@ +import itertools + +from psycopg.generators import fetch + +from collector_manager.CollectorBase import CollectorBase +from collector_manager.enums import CollectorType +from source_collectors.muckrock.classes.FOIASearcher import FOIASearcher, SearchCompleteException +from source_collectors.muckrock.classes.muckrock_fetchers.FOIAFetcher import FOIAFetcher +from source_collectors.muckrock.classes.muckrock_fetchers.FOIALoopFetcher import FOIALoopFetcher +from source_collectors.muckrock.classes.fetch_requests.FOIALoopFetchRequest import FOIALoopFetchRequest +from source_collectors.muckrock.classes.muckrock_fetchers.JurisdictionGeneratorFetcher import \ + JurisdictionGeneratorFetcher +from source_collectors.muckrock.classes.muckrock_fetchers.JurisdictionLoopFetcher import JurisdictionLoopFetcher +from source_collectors.muckrock.classes.fetch_requests.JurisdictionLoopFetchRequest import JurisdictionLoopFetchRequest +from source_collectors.muckrock.classes.muckrock_fetchers.MuckrockFetcher import MuckrockNoMoreDataError +from source_collectors.muckrock.schemas import SimpleSearchCollectorConfigSchema, MuckrockCollectorOutputSchema, \ + MuckrockCountyLevelCollectorConfigSchema, MuckrockAllFOIARequestsCollectorConfigSchema + + +class MuckrockSimpleSearchCollector(CollectorBase): + """ + Performs searches on MuckRock's database + by matching a search string to title of request + """ + config_schema = SimpleSearchCollectorConfigSchema + output_schema = MuckrockCollectorOutputSchema + collector_type = CollectorType.MUCKROCK_SIMPLE_SEARCH + + def check_for_count_break(self, count, max_count) -> None: + if max_count is None: + return + if count >= max_count: + raise SearchCompleteException + + def run_implementation(self) -> None: + fetcher = FOIAFetcher() + searcher = FOIASearcher( + fetcher=fetcher, + search_term=self.config["search_string"] + ) + max_count = self.config["max_results"] + all_results = [] + results_count = 0 + for search_count in itertools.count(): + try: + results = searcher.get_next_page_results() + all_results.extend(results) + results_count += len(results) + self.check_for_count_break(results_count, max_count) + except SearchCompleteException: + break + self.log(f"Search {search_count}: Found {len(results)} results") + + self.log(f"Search Complete. Total results: {results_count}") + self.data = {"urls": self.format_results(all_results)} + + def format_results(self, results: list[dict]) -> list[dict]: + formatted_results = [] + for result in results: + formatted_result = { + "url": result["absolute_url"], + "metadata": result + } + formatted_results.append(formatted_result) + + return formatted_results + + +class MuckrockCountyLevelSearchCollector(CollectorBase): + """ + Searches for any and all requests in a certain county + """ + config_schema = MuckrockCountyLevelCollectorConfigSchema + output_schema = MuckrockCollectorOutputSchema + collector_type = CollectorType.MUCKROCK_COUNTY_SEARCH + + def run_implementation(self) -> None: + jurisdiction_ids = self.get_jurisdiction_ids() + if jurisdiction_ids is None: + self.log("No jurisdictions found") + return + all_data = self.get_foia_records(jurisdiction_ids) + formatted_data = self.format_data(all_data) + self.data = {"urls": formatted_data} + + def format_data(self, all_data): + formatted_data = [] + for data in all_data: + formatted_data.append({ + "url": data["absolute_url"], + "metadata": data + }) + return formatted_data + + def get_foia_records(self, jurisdiction_ids): + all_data = [] + for name, id_ in jurisdiction_ids.items(): + self.log(f"Fetching records for {name}...") + request = FOIALoopFetchRequest(jurisdiction=id_) + fetcher = FOIALoopFetcher(request) + fetcher.loop_fetch() + all_data.extend(fetcher.ffm.results) + return all_data + + def get_jurisdiction_ids(self): + parent_jurisdiction_id = self.config["parent_jurisdiction_id"] + request = JurisdictionLoopFetchRequest( + level="l", + parent=parent_jurisdiction_id, + town_names=self.config["town_names"] + ) + fetcher = JurisdictionGeneratorFetcher(initial_request=request) + for message in fetcher.generator_fetch(): + self.log(message) + jurisdiction_ids = fetcher.jfm.jurisdictions + return jurisdiction_ids + + +class MuckrockAllFOIARequestsCollector(CollectorBase): + """ + Retrieves urls associated with all Muckrock FOIA requests + """ + config_schema = MuckrockAllFOIARequestsCollectorConfigSchema + output_schema = MuckrockCollectorOutputSchema + collector_type = CollectorType.MUCKROCK_ALL_SEARCH + + def run_implementation(self) -> None: + start_page = self.config["start_page"] + fetcher = FOIAFetcher( + start_page=start_page, + ) + total_pages = self.config["pages"] + all_page_data = self.get_page_data(fetcher, start_page, total_pages) + all_transformed_data = self.transform_data(all_page_data) + self.data = {"urls": all_transformed_data} + + + def get_page_data(self, fetcher, start_page, total_pages): + all_page_data = [] + for page in range(start_page, start_page + total_pages): + self.log(f"Fetching page {fetcher.current_page}") + try: + page_data = fetcher.fetch_next_page() + except MuckrockNoMoreDataError: + self.log(f"No more data to fetch at page {fetcher.current_page}") + break + if page_data is None: + continue + all_page_data.append(page_data) + return all_page_data + + def transform_data(self, all_page_data): + all_transformed_data = [] + for page_data in all_page_data: + for data in page_data["results"]: + all_transformed_data.append({ + "url": data["absolute_url"], + "metadata": data + }) + return all_transformed_data \ No newline at end of file diff --git a/source_collectors/muckrock/classes/SQLiteClient.py b/source_collectors/muckrock/classes/SQLiteClient.py new file mode 100644 index 00000000..96a59d82 --- /dev/null +++ b/source_collectors/muckrock/classes/SQLiteClient.py @@ -0,0 +1,38 @@ +import logging +import sqlite3 + + +class SQLClientError(Exception): + pass + + +class SQLiteClient: + + def __init__(self, db_path: str) -> None: + self.conn = sqlite3.connect(db_path) + + def execute_query(self, query: str, many=None): + + try: + if many is not None: + self.conn.executemany(query, many) + else: + self.conn.execute(query) + self.conn.commit() + except sqlite3.Error as e: + print(f"SQLite error: {e}") + error_msg = f"Failed to execute query due to SQLite error: {e}" + logging.error(error_msg) + self.conn.rollback() + raise SQLClientError(error_msg) + +class SQLiteClientContextManager: + + def __init__(self, db_path: str) -> None: + self.client = SQLiteClient(db_path) + + def __enter__(self): + return self.client + + def __exit__(self, exc_type, exc_value, traceback): + self.client.conn.close() \ No newline at end of file diff --git a/source_collectors/muckrock/classes/__init__.py b/source_collectors/muckrock/classes/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/source_collectors/muckrock/classes/exceptions/RequestFailureException.py b/source_collectors/muckrock/classes/exceptions/RequestFailureException.py new file mode 100644 index 00000000..61fefd9c --- /dev/null +++ b/source_collectors/muckrock/classes/exceptions/RequestFailureException.py @@ -0,0 +1,5 @@ +class RequestFailureException(Exception): + """ + Indicates when a failure occurred while making a request + """ + pass diff --git a/source_collectors/muckrock/classes/exceptions/__init__.py b/source_collectors/muckrock/classes/exceptions/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/source_collectors/muckrock/classes/fetch_requests/FOIALoopFetchRequest.py b/source_collectors/muckrock/classes/fetch_requests/FOIALoopFetchRequest.py new file mode 100644 index 00000000..d498fdc2 --- /dev/null +++ b/source_collectors/muckrock/classes/fetch_requests/FOIALoopFetchRequest.py @@ -0,0 +1,5 @@ +from source_collectors.muckrock.classes.fetch_requests.FetchRequestBase import FetchRequest + + +class FOIALoopFetchRequest(FetchRequest): + jurisdiction: int diff --git a/source_collectors/muckrock/classes/fetch_requests/FetchRequestBase.py b/source_collectors/muckrock/classes/fetch_requests/FetchRequestBase.py new file mode 100644 index 00000000..d9880573 --- /dev/null +++ b/source_collectors/muckrock/classes/fetch_requests/FetchRequestBase.py @@ -0,0 +1,5 @@ +from pydantic import BaseModel + + +class FetchRequest(BaseModel): + pass diff --git a/source_collectors/muckrock/classes/fetch_requests/JurisdictionLoopFetchRequest.py b/source_collectors/muckrock/classes/fetch_requests/JurisdictionLoopFetchRequest.py new file mode 100644 index 00000000..5941fa4a --- /dev/null +++ b/source_collectors/muckrock/classes/fetch_requests/JurisdictionLoopFetchRequest.py @@ -0,0 +1,7 @@ +from source_collectors.muckrock.classes.fetch_requests.FetchRequestBase import FetchRequest + + +class JurisdictionLoopFetchRequest(FetchRequest): + level: str + parent: int + town_names: list diff --git a/source_collectors/muckrock/classes/fetch_requests/__init__.py b/source_collectors/muckrock/classes/fetch_requests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/source_collectors/muckrock/classes/muckrock_fetchers/AgencyFetcher.py b/source_collectors/muckrock/classes/muckrock_fetchers/AgencyFetcher.py new file mode 100644 index 00000000..4cc95247 --- /dev/null +++ b/source_collectors/muckrock/classes/muckrock_fetchers/AgencyFetcher.py @@ -0,0 +1,15 @@ +from source_collectors.muckrock.constants import BASE_MUCKROCK_URL +from source_collectors.muckrock.classes.muckrock_fetchers.MuckrockFetcher import MuckrockFetcher +from source_collectors.muckrock.classes.fetch_requests.FetchRequestBase import FetchRequest + + +class AgencyFetchRequest(FetchRequest): + agency_id: int + +class AgencyFetcher(MuckrockFetcher): + + def build_url(self, request: AgencyFetchRequest) -> str: + return f"{BASE_MUCKROCK_URL}/agency/{request.agency_id}/" + + def get_agency(self, agency_id: int): + return self.fetch(AgencyFetchRequest(agency_id=agency_id)) \ No newline at end of file diff --git a/source_collectors/muckrock/classes/muckrock_fetchers/FOIAFetchManager.py b/source_collectors/muckrock/classes/muckrock_fetchers/FOIAFetchManager.py new file mode 100644 index 00000000..0a405596 --- /dev/null +++ b/source_collectors/muckrock/classes/muckrock_fetchers/FOIAFetchManager.py @@ -0,0 +1,20 @@ +from source_collectors.muckrock.classes.fetch_requests.FOIALoopFetchRequest import FOIALoopFetchRequest +from source_collectors.muckrock.constants import BASE_MUCKROCK_URL + + +class FOIAFetchManager: + + def __init__(self): + self.num_found = 0 + self.loop_count = 0 + self.num_found_last_loop = 0 + self.results = [] + + def build_url(self, request: FOIALoopFetchRequest): + return f"{BASE_MUCKROCK_URL}/foia/?status=done&jurisdiction={request.jurisdiction}" + + def process_results(self, results: list[dict]): + self.loop_count += 1 + self.num_found_last_loop = len(results) + self.results.extend(results) + self.num_found += len(results) \ No newline at end of file diff --git a/source_collectors/muckrock/classes/muckrock_fetchers/FOIAFetcher.py b/source_collectors/muckrock/classes/muckrock_fetchers/FOIAFetcher.py new file mode 100644 index 00000000..fadfddb5 --- /dev/null +++ b/source_collectors/muckrock/classes/muckrock_fetchers/FOIAFetcher.py @@ -0,0 +1,41 @@ +from source_collectors.muckrock.classes.muckrock_fetchers.MuckrockFetcher import MuckrockFetcher +from source_collectors.muckrock.classes.fetch_requests.FetchRequestBase import FetchRequest +from source_collectors.muckrock.constants import BASE_MUCKROCK_URL + +FOIA_BASE_URL = f"{BASE_MUCKROCK_URL}/foia" + + +class FOIAFetchRequest(FetchRequest): + page: int + page_size: int + + +class FOIAFetcher(MuckrockFetcher): + """ + A fetcher for FOIA requests. + Iterates through all FOIA requests available through the MuckRock FOIA API. + """ + + def __init__(self, start_page: int = 1, per_page: int = 100): + """ + Constructor for the FOIAFetcher class. + + Args: + start_page (int): The page number to start fetching from (default is 1). + per_page (int): The number of results to fetch per page (default is 100). + """ + self.current_page = start_page + self.per_page = per_page + + def build_url(self, request: FOIAFetchRequest) -> str: + return f"{FOIA_BASE_URL}?page={request.page}&page_size={request.page_size}&format=json" + + def fetch_next_page(self) -> dict | None: + """ + Fetches data from a specific page of the MuckRock FOIA API. + """ + page = self.current_page + self.current_page += 1 + request = FOIAFetchRequest(page=page, page_size=self.per_page) + return self.fetch(request) + diff --git a/source_collectors/muckrock/classes/muckrock_fetchers/FOIAGeneratorFetcher.py b/source_collectors/muckrock/classes/muckrock_fetchers/FOIAGeneratorFetcher.py new file mode 100644 index 00000000..7679fb67 --- /dev/null +++ b/source_collectors/muckrock/classes/muckrock_fetchers/FOIAGeneratorFetcher.py @@ -0,0 +1,16 @@ +from source_collectors.muckrock.classes.muckrock_fetchers.FOIAFetchManager import FOIAFetchManager +from source_collectors.muckrock.classes.fetch_requests.FOIALoopFetchRequest import FOIALoopFetchRequest +from source_collectors.muckrock.classes.muckrock_fetchers.MuckrockNextFetcher import MuckrockGeneratorFetcher + + +class FOIAGeneratorFetcher(MuckrockGeneratorFetcher): + + def __init__(self, initial_request: FOIALoopFetchRequest): + super().__init__(initial_request) + self.ffm = FOIAFetchManager() + + def process_results(self, results: list[dict]): + self.ffm.process_results(results) + return (f"Loop {self.ffm.loop_count}: " + f"Found {self.ffm.num_found_last_loop} FOIA records;" + f"{self.ffm.num_found} FOIA records found total.") diff --git a/source_collectors/muckrock/classes/muckrock_fetchers/FOIALoopFetcher.py b/source_collectors/muckrock/classes/muckrock_fetchers/FOIALoopFetcher.py new file mode 100644 index 00000000..d1bed9e9 --- /dev/null +++ b/source_collectors/muckrock/classes/muckrock_fetchers/FOIALoopFetcher.py @@ -0,0 +1,25 @@ +from datasets import tqdm + +from source_collectors.muckrock.classes.fetch_requests.FOIALoopFetchRequest import FOIALoopFetchRequest +from source_collectors.muckrock.classes.muckrock_fetchers.FOIAFetchManager import FOIAFetchManager +from source_collectors.muckrock.classes.muckrock_fetchers.MuckrockLoopFetcher import MuckrockLoopFetcher + + +class FOIALoopFetcher(MuckrockLoopFetcher): + + def __init__(self, initial_request: FOIALoopFetchRequest): + super().__init__(initial_request) + self.pbar_records = tqdm( + desc="Fetching FOIA records", + unit="record", + ) + self.ffm = FOIAFetchManager() + + def process_results(self, results: list[dict]): + self.ffm.process_results(results) + + def build_url(self, request: FOIALoopFetchRequest): + return self.ffm.build_url(request) + + def report_progress(self): + self.pbar_records.update(self.ffm.num_found_last_loop) diff --git a/source_collectors/muckrock/classes/muckrock_fetchers/JurisdictionByIDFetcher.py b/source_collectors/muckrock/classes/muckrock_fetchers/JurisdictionByIDFetcher.py new file mode 100644 index 00000000..60d9c4ff --- /dev/null +++ b/source_collectors/muckrock/classes/muckrock_fetchers/JurisdictionByIDFetcher.py @@ -0,0 +1,15 @@ +from source_collectors.muckrock.constants import BASE_MUCKROCK_URL +from source_collectors.muckrock.classes.muckrock_fetchers.MuckrockFetcher import MuckrockFetcher +from source_collectors.muckrock.classes.fetch_requests.FetchRequestBase import FetchRequest + + +class JurisdictionByIDFetchRequest(FetchRequest): + jurisdiction_id: int + +class JurisdictionByIDFetcher(MuckrockFetcher): + + def build_url(self, request: JurisdictionByIDFetchRequest) -> str: + return f"{BASE_MUCKROCK_URL}/jurisdiction/{request.jurisdiction_id}/" + + def get_jurisdiction(self, jurisdiction_id: int) -> dict: + return self.fetch(request=JurisdictionByIDFetchRequest(jurisdiction_id=jurisdiction_id)) diff --git a/source_collectors/muckrock/classes/muckrock_fetchers/JurisdictionFetchManager.py b/source_collectors/muckrock/classes/muckrock_fetchers/JurisdictionFetchManager.py new file mode 100644 index 00000000..f1145921 --- /dev/null +++ b/source_collectors/muckrock/classes/muckrock_fetchers/JurisdictionFetchManager.py @@ -0,0 +1,22 @@ +from source_collectors.muckrock.classes.fetch_requests.JurisdictionLoopFetchRequest import JurisdictionLoopFetchRequest +from source_collectors.muckrock.constants import BASE_MUCKROCK_URL + + +class JurisdictionFetchManager: + + def __init__(self, town_names: list[str]): + self.town_names = town_names + self.num_jurisdictions_found = 0 + self.total_found = 0 + self.jurisdictions = {} + + def build_url(self, request: JurisdictionLoopFetchRequest) -> str: + return f"{BASE_MUCKROCK_URL}/jurisdiction/?level={request.level}&parent={request.parent}" + + def process_results(self, results: list[dict]): + for item in results: + if item["name"] in self.town_names: + self.jurisdictions[item["name"]] = item["id"] + self.total_found += 1 + self.num_jurisdictions_found = len(self.jurisdictions) + return f"Found {self.num_jurisdictions_found} jurisdictions; {self.total_found} entries found total." diff --git a/source_collectors/muckrock/classes/muckrock_fetchers/JurisdictionGeneratorFetcher.py b/source_collectors/muckrock/classes/muckrock_fetchers/JurisdictionGeneratorFetcher.py new file mode 100644 index 00000000..603f72d2 --- /dev/null +++ b/source_collectors/muckrock/classes/muckrock_fetchers/JurisdictionGeneratorFetcher.py @@ -0,0 +1,17 @@ +from source_collectors.muckrock.classes.muckrock_fetchers.JurisdictionFetchManager import JurisdictionFetchManager +from source_collectors.muckrock.classes.fetch_requests.JurisdictionLoopFetchRequest import JurisdictionLoopFetchRequest +from source_collectors.muckrock.classes.muckrock_fetchers.MuckrockNextFetcher import MuckrockGeneratorFetcher + + +class JurisdictionGeneratorFetcher(MuckrockGeneratorFetcher): + + def __init__(self, initial_request: JurisdictionLoopFetchRequest): + super().__init__(initial_request) + self.jfm = JurisdictionFetchManager(town_names=initial_request.town_names) + + def build_url(self, request: JurisdictionLoopFetchRequest) -> str: + return self.jfm.build_url(request) + + def process_results(self, results: list[dict]): + return self.jfm.process_results(results) + diff --git a/source_collectors/muckrock/classes/muckrock_fetchers/JurisdictionLoopFetcher.py b/source_collectors/muckrock/classes/muckrock_fetchers/JurisdictionLoopFetcher.py new file mode 100644 index 00000000..3cf05359 --- /dev/null +++ b/source_collectors/muckrock/classes/muckrock_fetchers/JurisdictionLoopFetcher.py @@ -0,0 +1,38 @@ +from tqdm import tqdm + +from source_collectors.muckrock.classes.fetch_requests.JurisdictionLoopFetchRequest import JurisdictionLoopFetchRequest +from source_collectors.muckrock.classes.muckrock_fetchers.JurisdictionFetchManager import JurisdictionFetchManager +from source_collectors.muckrock.classes.muckrock_fetchers.MuckrockLoopFetcher import MuckrockLoopFetcher + + +class JurisdictionLoopFetcher(MuckrockLoopFetcher): + + def __init__(self, initial_request: JurisdictionLoopFetchRequest): + super().__init__(initial_request) + self.jfm = JurisdictionFetchManager(town_names=initial_request.town_names) + self.pbar_jurisdictions = tqdm( + total=len(self.jfm.town_names), + desc="Fetching jurisdictions", + unit="jurisdiction", + position=0, + leave=False + ) + self.pbar_page = tqdm( + desc="Processing pages", + unit="page", + position=1, + leave=False + ) + + def build_url(self, request: JurisdictionLoopFetchRequest) -> str: + return self.jfm.build_url(request) + + def process_results(self, results: list[dict]): + self.jfm.process_results(results) + + def report_progress(self): + old_num_jurisdictions_found = self.jfm.num_jurisdictions_found + self.jfm.num_jurisdictions_found = len(self.jfm.jurisdictions) + difference = self.jfm.num_jurisdictions_found - old_num_jurisdictions_found + self.pbar_jurisdictions.update(difference) + self.pbar_page.update(1) diff --git a/source_collectors/muckrock/classes/muckrock_fetchers/MuckrockFetcher.py b/source_collectors/muckrock/classes/muckrock_fetchers/MuckrockFetcher.py new file mode 100644 index 00000000..a922ac5d --- /dev/null +++ b/source_collectors/muckrock/classes/muckrock_fetchers/MuckrockFetcher.py @@ -0,0 +1,41 @@ +import abc +from abc import ABC + +import requests + +from source_collectors.muckrock.classes.fetch_requests.FetchRequestBase import FetchRequest + + +class MuckrockNoMoreDataError(Exception): + pass + +class MuckrockServerError(Exception): + pass + + +class MuckrockFetcher(ABC): + + def fetch(self, request: FetchRequest): + url = self.build_url(request) + response = requests.get(url) + try: + response.raise_for_status() + except requests.exceptions.HTTPError as e: + print(f"Failed to get records on request `{url}`: {e}") + # If code is 404, raise NoMoreData error + if e.response.status_code == 404: + raise MuckrockNoMoreDataError + if 500 <= e.response.status_code < 600: + raise MuckrockServerError + + + + + return None + + return response.json() + + @abc.abstractmethod + def build_url(self, request: FetchRequest) -> str: + pass + diff --git a/source_collectors/muckrock/classes/muckrock_fetchers/MuckrockIterFetcherBase.py b/source_collectors/muckrock/classes/muckrock_fetchers/MuckrockIterFetcherBase.py new file mode 100644 index 00000000..6b0cfe5d --- /dev/null +++ b/source_collectors/muckrock/classes/muckrock_fetchers/MuckrockIterFetcherBase.py @@ -0,0 +1,29 @@ +from abc import ABC, abstractmethod + +import requests + +from source_collectors.muckrock.classes.fetch_requests.FetchRequestBase import FetchRequest +from source_collectors.muckrock.classes.exceptions.RequestFailureException import RequestFailureException + + +class MuckrockIterFetcherBase(ABC): + + def __init__(self, initial_request: FetchRequest): + self.initial_request = initial_request + + def get_response(self, url): + response = requests.get(url) + try: + response.raise_for_status() + except requests.exceptions.HTTPError as e: + print(f"Failed to get records on request `{url}`: {e}") + raise RequestFailureException + return response + + @abstractmethod + def process_results(self, results: list[dict]): + pass + + @abstractmethod + def build_url(self, request: FetchRequest) -> str: + pass diff --git a/source_collectors/muckrock/classes/muckrock_fetchers/MuckrockLoopFetcher.py b/source_collectors/muckrock/classes/muckrock_fetchers/MuckrockLoopFetcher.py new file mode 100644 index 00000000..6365cf68 --- /dev/null +++ b/source_collectors/muckrock/classes/muckrock_fetchers/MuckrockLoopFetcher.py @@ -0,0 +1,33 @@ +from abc import abstractmethod +from time import sleep + +from source_collectors.muckrock.classes.exceptions.RequestFailureException import RequestFailureException +from source_collectors.muckrock.classes.muckrock_fetchers.MuckrockIterFetcherBase import MuckrockIterFetcherBase + + +class MuckrockLoopFetcher(MuckrockIterFetcherBase): + + def loop_fetch(self): + url = self.build_url(self.initial_request) + while url is not None: + try: + response = self.get_response(url) + except RequestFailureException: + break + + url = self.process_data(response) + sleep(1) + + def process_data(self, response): + """ + Process data and get next url, if any + """ + data = response.json() + self.process_results(data["results"]) + self.report_progress() + url = data["next"] + return url + + @abstractmethod + def report_progress(self): + pass diff --git a/source_collectors/muckrock/classes/muckrock_fetchers/MuckrockNextFetcher.py b/source_collectors/muckrock/classes/muckrock_fetchers/MuckrockNextFetcher.py new file mode 100644 index 00000000..6cade939 --- /dev/null +++ b/source_collectors/muckrock/classes/muckrock_fetchers/MuckrockNextFetcher.py @@ -0,0 +1,36 @@ +from abc import ABC, abstractmethod + +import requests + +from source_collectors.muckrock.classes.fetch_requests.FetchRequestBase import FetchRequest +from source_collectors.muckrock.classes.muckrock_fetchers.MuckrockIterFetcherBase import MuckrockIterFetcherBase +from source_collectors.muckrock.classes.exceptions.RequestFailureException import RequestFailureException + + +class MuckrockGeneratorFetcher(MuckrockIterFetcherBase): + """ + Similar to the Muckrock Loop fetcher, but behaves + as a generator instead of a loop + """ + + def generator_fetch(self) -> str: + """ + Fetches data and yields status messages between requests + """ + url = self.build_url(self.initial_request) + final_message = "No more records found. Exiting..." + while url is not None: + try: + response = self.get_response(url) + except RequestFailureException: + final_message = "Request unexpectedly failed. Exiting..." + break + + data = response.json() + yield self.process_results(data["results"]) + url = data["next"] + + yield final_message + + + diff --git a/source_collectors/muckrock/classes/muckrock_fetchers/__init__.py b/source_collectors/muckrock/classes/muckrock_fetchers/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/source_collectors/muckrock/constants.py b/source_collectors/muckrock/constants.py new file mode 100644 index 00000000..07dca8f4 --- /dev/null +++ b/source_collectors/muckrock/constants.py @@ -0,0 +1,4 @@ + + +BASE_MUCKROCK_URL = "https://www.muckrock.com/api_v1" +FOIA_DATA_DB = "foia_data.db" \ No newline at end of file diff --git a/source_collectors/muckrock/create_foia_data_db.py b/source_collectors/muckrock/create_foia_data_db.py index 4adc5556..e7e49e9a 100644 --- a/source_collectors/muckrock/create_foia_data_db.py +++ b/source_collectors/muckrock/create_foia_data_db.py @@ -19,20 +19,24 @@ and/or printed to the console. """ -import requests -import sqlite3 import logging import os import json import time -from typing import List, Tuple, Dict, Any, Union, Literal +from typing import List, Tuple, Dict, Any + +from tqdm import tqdm + +from source_collectors.muckrock.classes.SQLiteClient import SQLiteClientContextManager, SQLClientError +from source_collectors.muckrock.classes.muckrock_fetchers import FOIAFetcher +from source_collectors.muckrock.classes.muckrock_fetchers.MuckrockFetcher import MuckrockNoMoreDataError logging.basicConfig( filename="errors.log", level=logging.ERROR, format="%(levelname)s: %(message)s" ) +# TODO: Why are we pulling every single FOIA request? -base_url = "https://www.muckrock.com/api_v1/foia/" last_page_fetched = "last_page_fetched.txt" NO_MORE_DATA = -1 # flag for program exit @@ -83,69 +87,32 @@ def create_db() -> bool: bool: True, if database is successfully created; False otherwise. Raises: - sqlite3.Error: If the table creation operation fails, prints error and returns False. - """ - - try: - with sqlite3.connect("foia_data.db") as conn: - conn.execute(create_table_query) - conn.commit() - print("Successfully created foia_data.db!") - return True - except sqlite3.Error as e: - print(f"SQLite error: {e}.") - logging.error(f"Failed to create foia_data.db due to SQLite error: {e}") - return False - - -def fetch_page(page: int) -> Union[JSON, Literal[NO_MORE_DATA], None]: + sqlite3.Error: If the table creation operation fails, + prints error and returns False. """ - Fetches a page of 100 results from the MuckRock FOIA API. - - Args: - page (int): The page number to fetch from the API. - - Returns: - Union[JSON, None, Literal[NO_MORE_DATA]]: - - JSON Dict[str, Any]: The response's JSON data, if the request is successful. - - NO_MORE_DATA (int = -1): A constant, if there are no more pages to fetch (indicated by a 404 response). - - None: If there is an error other than 404. - """ - - per_page = 100 - response = requests.get( - base_url, params={"page": page, "page_size": per_page, "format": "json"} - ) - - if response.status_code == 200: - return response.json() - elif response.status_code == 404: - print("No more pages to fetch") - return NO_MORE_DATA # Typically 404 response will mean there are no more pages to fetch - elif 500 <= response.status_code < 600: - logging.error(f"Server error {response.status_code} on page {page}") - page = page + 1 - return fetch_page(page) - else: - print(f"Error fetching page {page}: {response.status_code}") - logging.error( - f"Fetching page {page} failed with response code: { - response.status_code}" - ) - return None - + with SQLiteClientContextManager("foia_data.db") as client: + try: + client.execute_query(create_table_query) + return True + except SQLClientError as e: + print(f"SQLite error: {e}.") + logging.error(f"Failed to create foia_data.db due to SQLite error: {e}") + return False def transform_page_data(data_to_transform: JSON) -> List[Tuple[Any, ...]]: """ - Transforms the data recieved from the MuckRock FOIA API into a structured format for insertion into a database with `populate_db()`. + Transforms the data received from the MuckRock FOIA API + into a structured format for insertion into a database with `populate_db()`. - Transforms JSON input into a list of tuples, as well as serializes the nested `tags` and `communications` fields into JSON strings. + Transforms JSON input into a list of tuples, + as well as serializes the nested `tags` and `communications` fields + into JSON strings. Args: - data_to_transform (JSON: Dict[str, Any]): The JSON data from the API response. - + data_to_transform: The JSON data from the API response. Returns: - transformed_data (List[Tuple[Any, ...]]: A list of tuples, where each tuple contains the fields of a single FOIA request. + A list of tuples, where each tuple contains the fields + of a single FOIA request. """ transformed_data = [] @@ -197,39 +164,40 @@ def populate_db(transformed_data: List[Tuple[Any, ...]], page: int) -> None: sqlite3.Error: If the insertion operation fails, attempts to retry operation (max_retries = 2). If retries are exhausted, logs error and exits. """ - - with sqlite3.connect("foia_data.db") as conn: - + with SQLiteClientContextManager("foia_data.db") as client: retries = 0 max_retries = 2 while retries < max_retries: try: - conn.executemany(foia_insert_query, transformed_data) - conn.commit() + client.execute_query(foia_insert_query, many=transformed_data) print("Successfully inserted data!") return - except sqlite3.Error as e: - print(f"SQLite error: {e}. Retrying...") - conn.rollback() + except SQLClientError as e: + print(f"{e}. Retrying...") retries += 1 time.sleep(1) if retries == max_retries: - print( - f"Failed to insert data from page {page} after { - max_retries} attempts. Skipping to next page." - ) - logging.error( - f"Failed to insert data from page {page} after { - max_retries} attempts." - ) + report_max_retries_error(max_retries, page) + + +def report_max_retries_error(max_retries, page): + print( + f"Failed to insert data from page {page} after { + max_retries} attempts. Skipping to next page." + ) + logging.error( + f"Failed to insert data from page {page} after { + max_retries} attempts." + ) def main() -> None: """ Main entry point for create_foia_data_db.py. - This function orchestrates the process of fetching FOIA requests data from the MuckRock FOIA API, transforming it, + This function orchestrates the process of fetching + FOIA requests data from the MuckRock FOIA API, transforming it, and storing it in a SQLite database. """ @@ -240,33 +208,46 @@ def main() -> None: print("Failed to create foia_data.db") return - if os.path.exists(last_page_fetched): - with open(last_page_fetched, mode="r") as file: - page = int(file.read()) + 1 - else: - page = 1 - - while True: + start_page = get_start_page() + fetcher = FOIAFetcher( + start_page=start_page + ) - print(f"Fetching page {page}...") - page_data = fetch_page(page) + with tqdm(initial=start_page, unit="page") as pbar: + while True: - if page_data == NO_MORE_DATA: - break # Exit program because no more data exixts - if page_data is None: - print(f"Skipping page {page}...") - page += 1 - continue + # TODO: Build collector that does similar logic + try: + pbar.update() + page_data = fetcher.fetch_next_page() + except MuckrockNoMoreDataError: + # Exit program because no more data exists + break + if page_data is None: + continue + transformed_data = transform_page_data(page_data) + populate_db(transformed_data, fetcher.current_page) + + with open(last_page_fetched, mode="w") as file: + file.write(str(fetcher.current_page)) - transformed_data = transform_page_data(page_data) + print("create_foia_data_db.py run finished") - populate_db(transformed_data, page) - with open(last_page_fetched, mode="w") as file: - file.write(str(page)) - page += 1 +def get_start_page(): + """ + Returns the page number to start fetching from. - print("create_foia_data_db.py run finished") + If the file `last_page_fetched` exists, + reads the page number from the file and returns it + 1. + Otherwise, returns 1. + """ + if os.path.exists(last_page_fetched): + with open(last_page_fetched, mode="r") as file: + page = int(file.read()) + 1 + else: + page = 1 + return page if __name__ == "__main__": diff --git a/source_collectors/muckrock/download_muckrock_foia.py b/source_collectors/muckrock/download_muckrock_foia.py deleted file mode 100644 index 0abd527d..00000000 --- a/source_collectors/muckrock/download_muckrock_foia.py +++ /dev/null @@ -1,58 +0,0 @@ -""" -***DEPRECATED*** - -download_muckrock_foia.py - -This script fetches data from the MuckRock FOIA API and stores the results in a JSON file. - -""" - -import requests -import csv -import time -import json - -# Define the base API endpoint -base_url = "https://www.muckrock.com/api_v1/foia/" - -# Set initial parameters -page = 1 -per_page = 100 -all_data = [] -output_file = "foia_data.json" - - -def fetch_page(page): - """ - Fetches data from a specific page of the MuckRock FOIA API. - """ - response = requests.get( - base_url, params={"page": page, "page_size": per_page, "format": "json"} - ) - if response.status_code == 200: - return response.json() - else: - print(f"Error fetching page {page}: {response.status_code}") - return None - - -# Fetch and store data from all pages -while True: - print(f"Fetching page {page}...") - data = fetch_page(page) - if data is None: - print(f"Skipping page {page}...") - page += 1 - continue - - all_data.extend(data["results"]) - if not data["next"]: - break - - page += 1 - -# Write data to CSV -with open(output_file, mode="w", encoding="utf-8") as json_file: - json.dump(all_data, json_file, indent=4) - -print(f"Data written to {output_file}") diff --git a/source_collectors/muckrock/generate_detailed_muckrock_csv.py b/source_collectors/muckrock/generate_detailed_muckrock_csv.py index a077dbc7..3cb884c0 100644 --- a/source_collectors/muckrock/generate_detailed_muckrock_csv.py +++ b/source_collectors/muckrock/generate_detailed_muckrock_csv.py @@ -1,182 +1,169 @@ -import json +""" +Converts JSON file of MuckRock FOIA requests to CSV for further processing +""" + +# TODO: Look into linking up this logic with other components in pipeline. + import argparse import csv -import requests import time -from utils import format_filename_json_to_csv - -# Load the JSON data -parser = argparse.ArgumentParser(description="Parse JSON from a file.") -parser.add_argument( - "--json_file", type=str, required=True, help="Path to the JSON file" -) - -args = parser.parse_args() - -with open(args.json_file, "r") as f: - json_data = json.load(f) - -# Define the CSV headers -headers = [ - "name", - "agency_described", - "record_type", - "description", - "source_url", - "readme_url", - "scraper_url", - "state", - "county", - "municipality", - "agency_type", - "jurisdiction_type", - "View Archive", - "agency_aggregation", - "agency_supplied", - "supplying_entity", - "agency_originated", - "originating_agency", - "coverage_start", - "source_last_updated", - "coverage_end", - "number_of_records_available", - "size", - "access_type", - "data_portal_type", - "access_notes", - "record_format", - "update_frequency", - "update_method", - "retention_schedule", - "detail_level", -] - - -def get_agency(agency_id): - """ - Function to get agency_described - """ - if agency_id: - agency_url = f"https://www.muckrock.com/api_v1/agency/{agency_id}/" - response = requests.get(agency_url) - - if response.status_code == 200: - agency_data = response.json() - return agency_data - else: - return "" - else: - print("Agency ID not found in item") - - -def get_jurisdiction(jurisdiction_id): - """ - Function to get jurisdiction_described - """ - if jurisdiction_id: - jurisdiction_url = ( - f"https://www.muckrock.com/api_v1/jurisdiction/{jurisdiction_id}/" - ) - response = requests.get(jurisdiction_url) - - if response.status_code == 200: - jurisdiction_data = response.json() - return jurisdiction_data - else: - return "" - else: - print("Jurisdiction ID not found in item") - - -output_csv = format_filename_json_to_csv(args.json_file) -# Open a CSV file for writing -with open(output_csv, "w", newline="") as csvfile: - writer = csv.DictWriter(csvfile, fieldnames=headers) - - # Write the header row - writer.writeheader() - +from enum import Enum +from typing import Optional + +from pydantic import BaseModel + +from source_collectors.muckrock.classes.muckrock_fetchers import AgencyFetcher +from source_collectors.muckrock.classes.muckrock_fetchers.JurisdictionByIDFetcher import JurisdictionByIDFetcher +from utils import format_filename_json_to_csv, load_json_file + + +class JurisdictionType(Enum): + FEDERAL = "federal" + STATE = "state" + COUNTY = "county" + LOCAL = "local" + + +class AgencyInfo(BaseModel): + name: Optional[str] = "" + agency_described: Optional[str] = "" + record_type: Optional[str] = "" + description: Optional[str] = "" + source_url: Optional[str] = "" + readme_url: Optional[str] = "" + scraper_url: Optional[str] = "" + state: Optional[str] = "" + county: Optional[str] = "" + municipality: Optional[str] = "" + agency_type: Optional[str] = "" + jurisdiction_type: Optional[JurisdictionType] = None + agency_aggregation: Optional[str] = "" + agency_supplied: Optional[bool] = False + supplying_entity: Optional[str] = "MuckRock" + agency_originated: Optional[bool] = True + originating_agency: Optional[str] = "" + coverage_start: Optional[str] = "" + source_last_updated: Optional[str] = "" + coverage_end: Optional[str] = "" + number_of_records_available: Optional[str] = "" + size: Optional[str] = "" + access_type: Optional[str] = "" + data_portal_type: Optional[str] = "MuckRock" + access_notes: Optional[str] = "" + record_format: Optional[str] = "" + update_frequency: Optional[str] = "" + update_method: Optional[str] = "" + retention_schedule: Optional[str] = "" + detail_level: Optional[str] = "" + + + def model_dump(self, *args, **kwargs): + original_dict = super().model_dump(*args, **kwargs) + original_dict['View Archive'] = '' + return {key: (value.value if isinstance(value, Enum) else value) + for key, value in original_dict.items()} + + def keys(self) -> list[str]: + return list(self.model_dump().keys()) + + +def main(): + json_filename = get_json_filename() + json_data = load_json_file(json_filename) + output_csv = format_filename_json_to_csv(json_filename) + agency_infos = get_agency_infos(json_data) + write_to_csv(agency_infos, output_csv) + + +def get_agency_infos(json_data): + a_fetcher = AgencyFetcher() + j_fetcher = JurisdictionByIDFetcher() + agency_infos = [] # Iterate through the JSON data for item in json_data: print(f"Writing data for {item.get('title')}") - agency_data = get_agency(item.get("agency")) + agency_data = a_fetcher.get_agency(agency_id=item.get("agency")) time.sleep(1) - jurisdiction_data = get_jurisdiction(agency_data.get("jurisdiction")) - + jurisdiction_data = j_fetcher.get_jurisdiction( + jurisdiction_id=agency_data.get("jurisdiction") + ) + agency_name = agency_data.get("name", "") + agency_info = AgencyInfo( + name=item.get("title", ""), + originating_agency=agency_name, + agency_described=agency_name + ) jurisdiction_level = jurisdiction_data.get("level") - # federal jurisduction level - if jurisdiction_level == "f": - state = "" - county = "" - municipality = "" - juris_type = "federal" - # state jurisdiction level - if jurisdiction_level == "s": - state = jurisdiction_data.get("name") - county = "" - municipality = "" - juris_type = "state" - # local jurisdiction level - if jurisdiction_level == "l": - parent_juris_data = get_jurisdiction(jurisdiction_data.get("parent")) - state = parent_juris_data.get("abbrev") + add_locational_info(agency_info, j_fetcher, jurisdiction_data, jurisdiction_level) + optionally_add_agency_type(agency_data, agency_info) + optionally_add_access_info(agency_info, item) + + # Extract the relevant fields from the JSON object + # TODO: I question the utility of creating columns that are then left blank until later + # and possibly in a different file entirely. + agency_infos.append(agency_info) + return agency_infos + + +def write_to_csv(agency_infos, output_csv): + # Open a CSV file for writing + with open(output_csv, "w", newline="") as csvfile: + writer = csv.DictWriter(csvfile, fieldnames=AgencyInfo().keys()) + + # Write the header row + writer.writeheader() + + for agency_info in agency_infos: + csv_row = agency_info.model_dump() + + # Write the extracted row to the CSV file + writer.writerow(csv_row) + + +def get_json_filename(): + # Load the JSON data + parser = argparse.ArgumentParser(description="Parse JSON from a file.") + parser.add_argument( + "--json_file", type=str, required=True, help="Path to the JSON file" + ) + args = parser.parse_args() + json_filename = args.json_file + return json_filename + + +def add_locational_info(agency_info, j_fetcher, jurisdiction_data, jurisdiction_level): + match jurisdiction_level: + case "f": # federal jurisdiction level + agency_info.jurisdiction_type = JurisdictionType.FEDERAL + case "s": # state jurisdiction level + agency_info.jurisdiction_type = JurisdictionType.STATE + agency_info.state = jurisdiction_data.get("name") + case "l": # local jurisdiction level + parent_juris_data = j_fetcher.get_jurisdiction( + jurisdiction_id=jurisdiction_data.get("parent") + ) + agency_info.state = parent_juris_data.get("abbrev") if "County" in jurisdiction_data.get("name"): - county = jurisdiction_data.get("name") - municipality = "" - juris_type = "county" + agency_info.county = jurisdiction_data.get("name") + agency_info.jurisdiction_type = JurisdictionType.COUNTY else: - county = "" - municipality = jurisdiction_data.get("name") - juris_type = "local" - - if "Police" in agency_data.get("types"): - agency_type = "law enforcement/police" - else: - agency_type = "" - - source_url = "" - absolute_url = item.get("absolute_url") - access_type = "" - for comm in item["communications"]: - if comm["files"]: - source_url = absolute_url + "#files" - access_type = "Web page,Download,API" - break + agency_info.municipality = jurisdiction_data.get("name") + agency_info.jurisdiction_type = JurisdictionType.LOCAL - # Extract the relevant fields from the JSON object - csv_row = { - "name": item.get("title", ""), - "agency_described": agency_data.get("name", "") + " - " + state, - "record_type": "", - "description": "", - "source_url": source_url, - "readme_url": absolute_url, - "scraper_url": "", - "state": state, - "county": county, - "municipality": municipality, - "agency_type": agency_type, - "jurisdiction_type": juris_type, - "View Archive": "", - "agency_aggregation": "", - "agency_supplied": "no", - "supplying_entity": "MuckRock", - "agency_originated": "yes", - "originating_agency": agency_data.get("name", ""), - "coverage_start": "", - "source_last_updated": "", - "coverage_end": "", - "number_of_records_available": "", - "size": "", - "access_type": access_type, - "data_portal_type": "MuckRock", - "access_notes": "", - "record_format": "", - "update_frequency": "", - "update_method": "", - "retention_schedule": "", - "detail_level": "", - } - - # Write the extracted row to the CSV file - writer.writerow(csv_row) + +def optionally_add_access_info(agency_info, item): + absolute_url = item.get("absolute_url") + for comm in item["communications"]: + if comm["files"]: + agency_info.source_url = absolute_url + "#files" + agency_info.access_type = "Web page,Download,API" + break + + +def optionally_add_agency_type(agency_data, agency_info): + if "Police" in agency_data.get("types"): + agency_info.agency_type = "law enforcement/police" + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/source_collectors/muckrock/get_allegheny_foias.py b/source_collectors/muckrock/get_allegheny_foias.py index a559f67f..f993ea90 100644 --- a/source_collectors/muckrock/get_allegheny_foias.py +++ b/source_collectors/muckrock/get_allegheny_foias.py @@ -1,44 +1,31 @@ """ -get_allegheny_foias.py +Get Allegheny County FOIA requests +and save them to a JSON file """ -import requests -import json -import time +from source_collectors.muckrock.classes.muckrock_fetchers.FOIALoopFetcher import FOIALoopFetcher +from source_collectors.muckrock.classes.fetch_requests.FOIALoopFetchRequest import FOIALoopFetchRequest +from source_collectors.muckrock.classes.muckrock_fetchers import JurisdictionLoopFetchRequest, \ + JurisdictionLoopFetcher +from source_collectors.muckrock.utils import save_json_file -def fetch_jurisdiction_ids(town_file, base_url): + +def fetch_jurisdiction_ids(town_file, level="l", parent=126): """ fetch jurisdiction IDs based on town names from a text file """ with open(town_file, "r") as file: town_names = [line.strip() for line in file] - jurisdiction_ids = {} - url = base_url - - while url: - response = requests.get(url) - if response.status_code == 200: - data = response.json() - for item in data.get("results", []): - if item["name"] in town_names: - jurisdiction_ids[item["name"]] = item["id"] - - url = data.get("next") - print( - f"Processed page, found {len(jurisdiction_ids)}/{len(town_names)} jurisdictions so far..." - ) - time.sleep(1) # To respect the rate limit + request = JurisdictionLoopFetchRequest( + level=level, parent=parent, town_names=town_names + ) - elif response.status_code == 503: - print("Error 503: Skipping page") - break - else: - print(f"Error fetching data: {response.status_code}") - break + fetcher = JurisdictionLoopFetcher(request) + fetcher.loop_fetch() + return fetcher.jurisdictions - return jurisdiction_ids def fetch_foia_data(jurisdiction_ids): @@ -47,28 +34,14 @@ def fetch_foia_data(jurisdiction_ids): """ all_data = [] for name, id_ in jurisdiction_ids.items(): - url = f"https://www.muckrock.com/api_v1/foia/?status=done&jurisdiction={id_}" - while url: - response = requests.get(url) - if response.status_code == 200: - data = response.json() - all_data.extend(data.get("results", [])) - url = data.get("next") - print( - f"Fetching records for {name}, {len(all_data)} total records so far..." - ) - time.sleep(1) # To respect the rate limit - elif response.status_code == 503: - print(f"Error 503: Skipping page for {name}") - break - else: - print(f"Error fetching data: {response.status_code} for {name}") - break + print(f"\nFetching records for {name}...") + request = FOIALoopFetchRequest(jurisdiction=id_) + fetcher = FOIALoopFetcher(request) + fetcher.loop_fetch() + all_data.extend(fetcher.ffm.results) # Save the combined data to a JSON file - with open("foia_data_combined.json", "w") as json_file: - json.dump(all_data, json_file, indent=4) - + save_json_file(file_path="foia_data_combined.json", data=all_data) print(f"Saved {len(all_data)} records to foia_data_combined.json") @@ -77,12 +50,12 @@ def main(): Execute the script """ town_file = "allegheny-county-towns.txt" - jurisdiction_url = ( - "https://www.muckrock.com/api_v1/jurisdiction/?level=l&parent=126" - ) - # Fetch jurisdiction IDs based on town names - jurisdiction_ids = fetch_jurisdiction_ids(town_file, jurisdiction_url) + jurisdiction_ids = fetch_jurisdiction_ids( + town_file, + level="l", + parent=126 + ) print(f"Jurisdiction IDs fetched: {jurisdiction_ids}") # Fetch FOIA data for each jurisdiction ID diff --git a/source_collectors/muckrock/muck_get.py b/source_collectors/muckrock/muck_get.py index 20c29338..f51bf9e0 100644 --- a/source_collectors/muckrock/muck_get.py +++ b/source_collectors/muckrock/muck_get.py @@ -1,61 +1,16 @@ """ -muck_get.py - +A straightforward standalone script for downloading data from MuckRock +and searching for it with a specific search string. """ - -import requests -import json - -# Define the base API endpoint -base_url = "https://www.muckrock.com/api_v1/foia/" - -# Define the search string -search_string = "use of force" -per_page = 100 -page = 1 -all_results = [] -max_count = 20 - -while True: - - # Make the GET request with the search string as a query parameter - response = requests.get( - base_url, params={"page": page, "page_size": per_page, "format": "json"} - ) - - # Check if the request was successful - if response.status_code == 200: - # Parse the JSON response - data = response.json() - - if not data["results"]: - break - - filtered_results = [ - item - for item in data["results"] - if search_string.lower() in item["title"].lower() - ] - - all_results.extend(filtered_results) - - if len(filtered_results) > 0: - num_results = len(filtered_results) - print(f"found {num_results} more matching result(s)...") - - if len(all_results) >= max_count: - print("max count reached... exiting") - break - - page += 1 - - else: - print(f"Error: {response.status_code}") - break - -# Dump list into a JSON file -json_out_file = search_string.replace(" ", "_") + ".json" -with open(json_out_file, "w") as json_file: - json.dump(all_results, json_file) - -print(f"List dumped into {json_out_file}") +from source_collectors.muckrock.classes.muckrock_fetchers import FOIAFetcher +from source_collectors.muckrock.classes.FOIASearcher import FOIASearcher +from source_collectors.muckrock.utils import save_json_file + +if __name__ == "__main__": + search_term = "use of force" + fetcher = FOIAFetcher() + searcher = FOIASearcher(fetcher=fetcher, search_term=search_term) + results = searcher.search_to_count(20) + json_out_file = search_term.replace(" ", "_") + ".json" + save_json_file(file_path=json_out_file, data=results) + print(f"List dumped into {json_out_file}") diff --git a/source_collectors/muckrock/muckrock_ml_labeler.py b/source_collectors/muckrock/muckrock_ml_labeler.py index b313c045..e3cb5cc7 100644 --- a/source_collectors/muckrock/muckrock_ml_labeler.py +++ b/source_collectors/muckrock/muckrock_ml_labeler.py @@ -1,6 +1,5 @@ """ -muckrock_ml_labeler.py - +Utilizes a fine-tuned model to label a dataset of URLs. """ from transformers import AutoTokenizer, AutoModelForSequenceClassification @@ -8,45 +7,73 @@ import pandas as pd import argparse -# Load the tokenizer and model -model_name = "PDAP/fine-url-classifier" -tokenizer = AutoTokenizer.from_pretrained(model_name) -model = AutoModelForSequenceClassification.from_pretrained(model_name) -model.eval() - -# Load the dataset from command line argument -parser = argparse.ArgumentParser(description="Load CSV file into a pandas DataFrame.") -parser.add_argument("--csv_file", type=str, required=True, help="Path to the CSV file") -args = parser.parse_args() -df = pd.read_csv(args.csv_file) - -# Combine multiple columns (e.g., 'url', 'html_title', 'h1') into a single text field for each row -columns_to_combine = [ - "url_path", - "html_title", - "h1", -] # Add other columns here as needed -df["combined_text"] = df[columns_to_combine].apply( - lambda row: " ".join(row.values.astype(str)), axis=1 -) - -# Convert the combined text into a list -texts = df["combined_text"].tolist() - -# Tokenize the inputs -inputs = tokenizer(texts, padding=True, truncation=True, return_tensors="pt") - -# Perform inference -with torch.no_grad(): - outputs = model(**inputs) - -# Get the predicted labels -predictions = torch.argmax(outputs.logits, dim=-1) - -# Map predictions to labels -labels = model.config.id2label -predicted_labels = [labels[int(pred)] for pred in predictions] - -# Add the predicted labels to the dataframe and save -df["predicted_label"] = predicted_labels -df.to_csv("labeled_muckrock_dataset.csv", index=False) + +def load_dataset_from_command_line() -> pd.DataFrame: + parser = argparse.ArgumentParser(description="Load CSV file into a pandas DataFrame.") + parser.add_argument("--csv_file", type=str, required=True, help="Path to the CSV file") + args = parser.parse_args() + return pd.read_csv(args.csv_file) + + +def create_combined_text_column(df: pd.DataFrame) -> None: + # Combine multiple columns (e.g., 'url', 'html_title', 'h1') into a single text field for each row + columns_to_combine = [ + "url_path", + "html_title", + "h1", + ] # Add other columns here as needed + df["combined_text"] = df[columns_to_combine].apply( + lambda row: " ".join(row.values.astype(str)), axis=1 + ) + + +def get_list_of_combined_texts(df: pd.DataFrame) -> list[str]: + # Convert the combined text into a list + return df["combined_text"].tolist() + + +def save_labeled_muckrock_dataset_to_csv(): + df.to_csv("labeled_muckrock_dataset.csv", index=False) + + +def create_predicted_labels_column(df: pd.DataFrame, predicted_labels: list[str]) -> None: + df["predicted_label"] = predicted_labels + + +def map_predictions_to_labels(model, predictions) -> list[str]: + labels = model.config.id2label + return [labels[int(pred)] for pred in predictions] + + +def get_predicted_labels(texts: list[str]) -> list[str]: + # Load the tokenizer and model + model_name = "PDAP/fine-url-classifier" + tokenizer = AutoTokenizer.from_pretrained(model_name) + + model = AutoModelForSequenceClassification.from_pretrained(model_name) + model.eval() + # Tokenize the inputs + inputs = tokenizer(texts, padding=True, truncation=True, return_tensors="pt") + # Perform inference + with torch.no_grad(): + outputs = model(**inputs) + # Get the predicted labels + predictions = torch.argmax(outputs.logits, dim=-1) + # Map predictions to labels + predicted_labels = map_predictions_to_labels(model=model, predictions=predictions) + + return predicted_labels + + +if __name__ == "__main__": + df = load_dataset_from_command_line() + # TODO: Check for existence of required columns prior to further processing + create_combined_text_column(df=df) + + texts = get_list_of_combined_texts(df=df) + + predicted_labels = get_predicted_labels(texts=texts) + # Add the predicted labels to the dataframe and save + create_predicted_labels_column(df=df, predicted_labels=predicted_labels) + + save_labeled_muckrock_dataset_to_csv() \ No newline at end of file diff --git a/source_collectors/muckrock/schemas.py b/source_collectors/muckrock/schemas.py new file mode 100644 index 00000000..90d391e3 --- /dev/null +++ b/source_collectors/muckrock/schemas.py @@ -0,0 +1,34 @@ +from marshmallow import Schema, fields + +class MuckrockURLInfoSchema(Schema): + url = fields.String(required=True) + metadata = fields.Dict(required=True) + +class SimpleSearchCollectorConfigSchema(Schema): + search_string = fields.String( + required=True + ) + max_results = fields.Int( + load_default=10, + allow_none=True, + metadata={"description": "The maximum number of results to return." + "If none, all results will be returned (and may take considerably longer to process)."} + ) + +class MuckrockCollectorOutputSchema(Schema): + urls = fields.List( + fields.Nested(MuckrockURLInfoSchema), + required=True + ) + +class MuckrockCountyLevelCollectorConfigSchema(Schema): + parent_jurisdiction_id = fields.Int(required=True) + town_names = fields.List( + fields.String(required=True), + required=True + ) + +class MuckrockAllFOIARequestsCollectorConfigSchema(Schema): + start_page = fields.Int(required=True) + pages = fields.Int(load_default=1) + diff --git a/source_collectors/muckrock/search_foia_data_db.py b/source_collectors/muckrock/search_foia_data_db.py index e7550608..51357663 100644 --- a/source_collectors/muckrock/search_foia_data_db.py +++ b/source_collectors/muckrock/search_foia_data_db.py @@ -18,24 +18,12 @@ Errors encountered during database operations, JSON parsing, or file writing are printed to the console. """ -import sqlite3 import pandas as pd import json import argparse -import os from typing import Union, List, Dict -check_results_table_query = """ - SELECT name FROM sqlite_master - WHERE (type = 'table') - AND (name = 'results') - """ - -search_foia_query = """ - SELECT * FROM results - WHERE (title LIKE ? OR tags LIKE ?) - AND (status = 'done') - """ +from source_collectors.muckrock.classes.FOIADBSearcher import FOIADBSearcher def parser_init() -> argparse.ArgumentParser: @@ -61,45 +49,8 @@ def parser_init() -> argparse.ArgumentParser: def search_foia_db(search_string: str) -> Union[pd.DataFrame, None]: - """ - Searches the foia_data.db database for FOIA request entries matching the provided search string. - - Args: - search_string (str): The string to search for in the `title` and `tags` of the `results` table. - - Returns: - Union[pandas.DataFrame, None]: - - pandas.DataFrame: A DataFrame containing the matching entries from the database. - - None: If an error occurs during the database operation. - - Raises: - sqlite3.Error: If any database operation fails, prints error and returns None. - Exception: If any unexpected error occurs, prints error and returns None. - """ - - print(f'Searching foia_data.db for "{search_string}"...') - - try: - with sqlite3.connect("foia_data.db") as conn: - - results_table = pd.read_sql_query(check_results_table_query, conn) - - if results_table.empty: - print("The `results` table does not exist in the database.") - return None - - params = [f"%{search_string}%", f"%{search_string}%"] - - df = pd.read_sql_query(search_foia_query, conn, params=params) - - except sqlite3.Error as e: - print(f"Sqlite error: {e}") - return None - except Exception as e: - print(f"An unexpected error occurred: {e}") - return None - - return df + searcher = FOIADBSearcher() + return searcher.search(search_string) def parse_communications_column(communications) -> List[Dict]: @@ -164,24 +115,25 @@ def main() -> None: args = parser.parse_args() search_string = args.search_for - if not os.path.exists("foia_data.db"): - print( - "foia_data.db does not exist.\nRun create_foia_data_db.py first to create and populate it." - ) - return - df = search_foia_db(search_string) if df is None: return + update_communications_column(df) - if not df["communications"].empty: - df["communications"] = df["communications"].apply(parse_communications_column) + announce_matching_entries(df, search_string) + generate_json(df, search_string) + + +def announce_matching_entries(df, search_string): print( f'Found {df.shape[0]} matching entries containing "{search_string}" in the title or tags' ) - generate_json(df, search_string) + +def update_communications_column(df): + if not df["communications"].empty: + df["communications"] = df["communications"].apply(parse_communications_column) if __name__ == "__main__": diff --git a/source_collectors/muckrock/search_local_foia_json.py b/source_collectors/muckrock/search_local_foia_json.py deleted file mode 100644 index 562c4bae..00000000 --- a/source_collectors/muckrock/search_local_foia_json.py +++ /dev/null @@ -1,53 +0,0 @@ -""" -***DEPRECATED*** - -search_local_foia_json.py - -""" - -import json - -# Specify the JSON file path -json_file = "foia_data.json" -search_string = "use of force" - -# Load the JSON data -with open(json_file, "r", encoding="utf-8") as file: - data = json.load(file) - -# List to store matching entries -matching_entries = [] - - -def search_entry(entry): - """ - search within an entry - """ - # Check if 'status' is 'done' - if entry.get("status") != "done": - return False - - # Check if 'title' or 'tags' field contains the search string - title_match = "title" in entry and search_string.lower() in entry["title"].lower() - tags_match = "tags" in entry and any( - search_string.lower() in tag.lower() for tag in entry["tags"] - ) - - return title_match or tags_match - - -# Iterate through the data and collect matching entries -for entry in data: - if search_entry(entry): - matching_entries.append(entry) - -# Output the results -print( - f"Found {len(matching_entries)} entries containing '{search_string}' in the title or tags." -) - -# Optionally, write matching entries to a new JSON file -with open("matching_entries.json", "w", encoding="utf-8") as file: - json.dump(matching_entries, file, indent=4) - -print("Matching entries written to 'matching_entries.json'") diff --git a/source_collectors/muckrock/utils.py b/source_collectors/muckrock/utils.py index 3d8b63db..3c7eba28 100644 --- a/source_collectors/muckrock/utils.py +++ b/source_collectors/muckrock/utils.py @@ -8,6 +8,7 @@ """ import re +import json def format_filename_json_to_csv(json_filename: str) -> str: @@ -24,3 +25,12 @@ def format_filename_json_to_csv(json_filename: str) -> str: csv_filename = re.sub(r"_(?=[^.]*$)", "-", json_filename[:-5]) + ".csv" return csv_filename + +def load_json_file(file_path: str) -> dict: + with open(file_path, "r", encoding="utf-8") as f: + data = json.load(f) + return data + +def save_json_file(file_path: str, data: dict | list[dict]): + with open(file_path, "w", encoding="utf-8") as f: + json.dump(data, f, indent=4) \ No newline at end of file diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/collector_db/README.md b/tests/collector_db/README.md new file mode 100644 index 00000000..83518f30 --- /dev/null +++ b/tests/collector_db/README.md @@ -0,0 +1 @@ +These are tests for the source collector database. \ No newline at end of file diff --git a/tests/collector_db/__init__.py b/tests/collector_db/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/collector_db/test_db_client.py b/tests/collector_db/test_db_client.py new file mode 100644 index 00000000..74f92ce2 --- /dev/null +++ b/tests/collector_db/test_db_client.py @@ -0,0 +1,53 @@ +from collector_db.DTOs.BatchInfo import BatchInfo +from collector_db.DTOs.DuplicateInfo import DuplicateInfo +from collector_db.DTOs.URLMapping import URLMapping +from collector_db.DTOs.URLInfo import URLInfo +from core.enums import BatchStatus + + +def test_insert_urls(db_client_test): + # Insert batch + batch_info = BatchInfo( + strategy="ckan", + status=BatchStatus.IN_PROCESS, + parameters={} + ) + batch_id = db_client_test.insert_batch(batch_info) + + urls = [ + URLInfo( + url="https://example.com/1", + url_metadata={"name": "example_1"}, + ), + URLInfo( + url="https://example.com/2", + ), + # Duplicate + URLInfo( + url="https://example.com/1", + url_metadata={"name": "example_duplicate"}, + ) + ] + insert_urls_info = db_client_test.insert_urls( + url_infos=urls, + batch_id=batch_id + ) + + assert insert_urls_info.url_mappings == [ + URLMapping( + url="https://example.com/1", + url_id=1 + ), + URLMapping( + url="https://example.com/2", + url_id=2 + ) + ] + assert insert_urls_info.duplicates == [ + DuplicateInfo( + source_url="https://example.com/1", + original_url_id=1, + duplicate_metadata={"name": "example_duplicate"}, + original_metadata={"name": "example_1"} + ) + ] diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 00000000..954c0eb3 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,24 @@ +import os + +import pytest + +from tests.source_collector.helpers.constants import TEST_DATABASE_URL, TEST_DATABASE_FILENAME +from collector_db.DatabaseClient import DatabaseClient +from core.CoreInterface import CoreInterface +from core.SourceCollectorCore import SourceCollectorCore + + +@pytest.fixture +def db_client_test() -> DatabaseClient: + db_client = DatabaseClient(TEST_DATABASE_URL) + yield db_client + db_client.engine.dispose() + os.remove(TEST_DATABASE_FILENAME) + +@pytest.fixture +def test_core_interface(db_client_test): + core = SourceCollectorCore( + db_client=db_client_test + ) + ci = CoreInterface(core=core) + yield ci \ No newline at end of file diff --git a/tests/source_collector/README.md b/tests/source_collector/README.md new file mode 100644 index 00000000..6b3755d4 --- /dev/null +++ b/tests/source_collector/README.md @@ -0,0 +1 @@ +These are tests for the source collector package. \ No newline at end of file diff --git a/tests/source_collector/__init__.py b/tests/source_collector/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/source_collector/helpers/README.md b/tests/source_collector/helpers/README.md new file mode 100644 index 00000000..3df3aa51 --- /dev/null +++ b/tests/source_collector/helpers/README.md @@ -0,0 +1 @@ +These are modules designed to assist in the execution of tests. \ No newline at end of file diff --git a/tests/source_collector/helpers/common_test_procedures.py b/tests/source_collector/helpers/common_test_procedures.py new file mode 100644 index 00000000..52495072 --- /dev/null +++ b/tests/source_collector/helpers/common_test_procedures.py @@ -0,0 +1,24 @@ +import time + +from collector_manager.enums import CollectorType +from core.CoreInterface import CoreInterface + + +def run_collector_and_wait_for_completion( + collector_type: CollectorType, + ci: CoreInterface, + config: dict +): + collector_name = collector_type.value + response = ci.start_collector( + collector_type=collector_type, + config=config + ) + assert response == f"Started {collector_name} collector with CID: 1" + response = ci.get_status(1) + while response == f"1 ({collector_name}) - RUNNING": + time.sleep(1) + response = ci.get_status(1) + assert response == f"1 ({collector_name}) - COMPLETED", response + response = ci.close_collector(1) + assert response.message == "Collector closed and data harvested successfully." diff --git a/tests/source_collector/helpers/constants.py b/tests/source_collector/helpers/constants.py new file mode 100644 index 00000000..4569a1b6 --- /dev/null +++ b/tests/source_collector/helpers/constants.py @@ -0,0 +1,67 @@ + +ALLEGHENY_COUNTY_MUCKROCK_ID = 126 +ALLEGHENY_COUNTY_TOWN_NAMES = [ + "Allegheny County", + "Allison Park", + "Bairdford", + "Bakerstown", + "Bethel Park", + "Brackenridge", + "Braddock", + "Bradfordwoods", + "Bridgeville", + "Buena Vista", + "Bunola", + "Carnegie", + "Cheswick", + "Clairton", + "Coraopolis", + "Coulters", + "Creighton", + "Crescent", + "Cuddy", + "Curtisville", + "Dravosburg", + "Duquesne", + "East McKeesport", + "East Pittsburgh", + "Elizabeth", + "Gibsonia", + "Glassport", + "Glenshaw", + "Greenock", + "Harwick", + "Homestead", + "Imperial", + "Indianola", + "Ingomar", + "Leetsdale", + "McKees Rocks", + "Mckeesport", + "Monroeville", + "Morgan", + "Natrona Heights", + "North Versailles", + "Oakdale", + "Oakmont", + "Pitcairn", + "Pittsburgh", + "Presto", + "Rural Ridge", + "Russellton", + "Sewickley", + "South Park", + "Springdale", + "Sturgeon", + "Tarentum", + "Turtle Creek", + "Verona", + "Warrendale", + "West Elizabeth", + "West Mifflin", + "Wexford", + "Wildwood", + "Wilmerding" +] +TEST_DATABASE_URL = "sqlite:///test_database.db" +TEST_DATABASE_FILENAME = "test_database.db" diff --git a/tests/source_collector/integration/README.md b/tests/source_collector/integration/README.md new file mode 100644 index 00000000..54a7b88a --- /dev/null +++ b/tests/source_collector/integration/README.md @@ -0,0 +1,3 @@ +These are automated integration tests which are designed to test the entire lifecycle of a source collector -- that is, its progression from initial call, to completion, to batch preprocessing and ingestion into the database. + +These tests make use of the Example Collector - a simple collector which generates fake urls and saves them to the database. \ No newline at end of file diff --git a/tests/source_collector/integration/test_core.py b/tests/source_collector/integration/test_core.py new file mode 100644 index 00000000..d04ba47e --- /dev/null +++ b/tests/source_collector/integration/test_core.py @@ -0,0 +1,46 @@ +import time + +import pytest + +from collector_manager.enums import CollectorType, URLOutcome +from core.CoreInterface import CoreInterface +from core.SourceCollectorCore import SourceCollectorCore +from core.enums import BatchStatus + + +def test_example_collector_lifecycle(test_core_interface): + """ + Test the flow of an example collector, which generates fake urls + and saves them to the database + """ + ci = test_core_interface + db_client = ci.core.db_client + config = { + "example_field": "example_value" + } + response = ci.start_collector( + collector_type=CollectorType.EXAMPLE, + config=config + ) + assert response == "Started example_collector collector with CID: 1" + + response = ci.get_status(1) + assert response == "1 (example_collector) - RUNNING" + time.sleep(1.5) + response = ci.get_status(1) + assert response == "1 (example_collector) - COMPLETED" + response = ci.close_collector(1) + assert response == "Collector closed and data harvested successfully." + + batch_info = db_client.get_batch_by_id(1) + assert batch_info.strategy == "example_collector" + assert batch_info.status == BatchStatus.COMPLETE + assert batch_info.count == 2 + assert batch_info.parameters == config + assert batch_info.compute_time > 1 + + url_infos = db_client.get_urls_by_batch(1) + assert len(url_infos) == 2 + assert url_infos[0].outcome == URLOutcome.PENDING + + diff --git a/tests/source_collector/manual_tests/README.md b/tests/source_collector/manual_tests/README.md new file mode 100644 index 00000000..550124db --- /dev/null +++ b/tests/source_collector/manual_tests/README.md @@ -0,0 +1,4 @@ +This directory contains manual tests -- that is, tests which are designed to be run separate from automated tests. + + +This is typically best the tests in question involve calls to third party APIs and retrieval of life dave. Thus, they are not cost effective to run automatically. diff --git a/tests/source_collector/manual_tests/__init__.py b/tests/source_collector/manual_tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/source_collector/manual_tests/collector/README.md b/tests/source_collector/manual_tests/collector/README.md new file mode 100644 index 00000000..292c9c05 --- /dev/null +++ b/tests/source_collector/manual_tests/collector/README.md @@ -0,0 +1 @@ +These test the functionality of the collectors individually -- from initiation to completion of the collector. They do not test the larger lifecycle. \ No newline at end of file diff --git a/tests/source_collector/manual_tests/collector/__init__.py b/tests/source_collector/manual_tests/collector/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/source_collector/manual_tests/collector/test_ckan_collector.py b/tests/source_collector/manual_tests/collector/test_ckan_collector.py new file mode 100644 index 00000000..cb9a3150 --- /dev/null +++ b/tests/source_collector/manual_tests/collector/test_ckan_collector.py @@ -0,0 +1,16 @@ +from source_collectors.ckan.CKANCollector import CKANCollector +from source_collectors.ckan.schemas import CKANSearchSchema +from source_collectors.ckan.search_terms import package_search, group_search, organization_search + + +def test_ckan_collector(): + collector = CKANCollector( + name="test_ckan_collector", + config={ + "package_search": package_search, + "group_search": group_search, + "organization_search": organization_search + } + ) + collector.run() + pass \ No newline at end of file diff --git a/tests/source_collector/manual_tests/collector/test_muckrock_collectors.py b/tests/source_collector/manual_tests/collector/test_muckrock_collectors.py new file mode 100644 index 00000000..d4ca41b9 --- /dev/null +++ b/tests/source_collector/manual_tests/collector/test_muckrock_collectors.py @@ -0,0 +1,42 @@ +from tests.source_collector.helpers.constants import ALLEGHENY_COUNTY_MUCKROCK_ID, ALLEGHENY_COUNTY_TOWN_NAMES +from collector_manager.enums import CollectorStatus +from source_collectors.muckrock.classes.MuckrockCollector import MuckrockSimpleSearchCollector, \ + MuckrockCountyLevelSearchCollector, MuckrockAllFOIARequestsCollector + + +def test_muckrock_simple_search_collector(): + + collector = MuckrockSimpleSearchCollector( + name="test_muckrock_simple_search_collector", + config={ + "search_string": "police", + "max_results": 10 + } + ) + collector.run() + assert collector.status == CollectorStatus.COMPLETED, collector.logs + assert len(collector.data["urls"]) >= 10 + +def test_muckrock_county_level_search_collector(): + collector = MuckrockCountyLevelSearchCollector( + name="test_muckrock_county_level_search_collector", + config={ + "parent_jurisdiction_id": ALLEGHENY_COUNTY_MUCKROCK_ID, + "town_names": ALLEGHENY_COUNTY_TOWN_NAMES + } + ) + collector.run() + assert collector.status == CollectorStatus.COMPLETED, collector.logs + assert len(collector.data["urls"]) >= 10 + +def test_muckrock_full_search_collector(): + collector = MuckrockAllFOIARequestsCollector( + name="test_muckrock_full_search_collector", + config={ + "start_page": 1, + "pages": 2 + } + ) + collector.run() + assert collector.status == CollectorStatus.COMPLETED, collector.logs + assert len(collector.data["urls"]) >= 1 \ No newline at end of file diff --git a/tests/source_collector/manual_tests/lifecycle/README.md b/tests/source_collector/manual_tests/lifecycle/README.md new file mode 100644 index 00000000..c5d9b882 --- /dev/null +++ b/tests/source_collector/manual_tests/lifecycle/README.md @@ -0,0 +1 @@ +This directory tests the lifecycle of a source collector -- that is, its progression from initial call, to completion, to batch preprocessing and ingestion into the database. \ No newline at end of file diff --git a/tests/source_collector/manual_tests/lifecycle/__init__.py b/tests/source_collector/manual_tests/lifecycle/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/source_collector/manual_tests/lifecycle/test_auto_googler_lifecycle.py b/tests/source_collector/manual_tests/lifecycle/test_auto_googler_lifecycle.py new file mode 100644 index 00000000..cc5e42a9 --- /dev/null +++ b/tests/source_collector/manual_tests/lifecycle/test_auto_googler_lifecycle.py @@ -0,0 +1,42 @@ +import os + +import dotenv + +from tests.source_collector.helpers.common_test_procedures import run_collector_and_wait_for_completion +from collector_manager.enums import CollectorType +from core.enums import BatchStatus + + +def test_auto_googler_collector_lifecycle(test_core_interface): + ci = test_core_interface + db_client = ci.core.db_client + + dotenv.load_dotenv() + config = { + "api_key": os.getenv("GOOGLE_API_KEY"), + "cse_id": os.getenv("GOOGLE_CSE_ID"), + "urls_per_result": 10, + "queries": [ + "Disco Elysium", + "Dune" + ] + } + run_collector_and_wait_for_completion( + collector_type=CollectorType.AUTO_GOOGLER, + ci=ci, + config=config + ) + + batch_info = ci.core.db_client.get_batch_by_id(1) + assert batch_info.strategy == "auto_googler" + assert batch_info.status == BatchStatus.COMPLETE + assert batch_info.count == 20 + + url_infos = db_client.get_urls_by_batch(1) + assert len(url_infos) == 20 + q1_urls = [url_info.url for url_info in url_infos if url_info.url_metadata["query"] == "Disco Elysium"] + q2_urls = [url_info.url for url_info in url_infos if url_info.url_metadata["query"] == "Dune"] + + assert len(q1_urls) == len(q2_urls) == 10 + + diff --git a/tests/source_collector/manual_tests/lifecycle/test_ckan_lifecycle.py b/tests/source_collector/manual_tests/lifecycle/test_ckan_lifecycle.py new file mode 100644 index 00000000..d27635f4 --- /dev/null +++ b/tests/source_collector/manual_tests/lifecycle/test_ckan_lifecycle.py @@ -0,0 +1,28 @@ +from tests.source_collector.helpers.common_test_procedures import run_collector_and_wait_for_completion +from collector_manager.enums import CollectorType +from core.enums import BatchStatus +from source_collectors.ckan.search_terms import group_search, package_search, organization_search + + +def test_ckan_lifecycle(test_core_interface): + ci = test_core_interface + db_client = ci.core.db_client + + config = { + "package_search": package_search, + "group_search": group_search, + "organization_search": organization_search + } + run_collector_and_wait_for_completion( + collector_type=CollectorType.CKAN, + ci=ci, + config=config + ) + + batch_info = db_client.get_batch_by_id(1) + assert batch_info.strategy == "ckan" + assert batch_info.status == BatchStatus.COMPLETE + assert batch_info.count >= 3000 + + url_infos = db_client.get_urls_by_batch(1) + assert len(url_infos) >= 2500 \ No newline at end of file diff --git a/tests/source_collector/manual_tests/lifecycle/test_common_crawler_lifecycle.py b/tests/source_collector/manual_tests/lifecycle/test_common_crawler_lifecycle.py new file mode 100644 index 00000000..ce0c9444 --- /dev/null +++ b/tests/source_collector/manual_tests/lifecycle/test_common_crawler_lifecycle.py @@ -0,0 +1,39 @@ +import time + +from collector_manager.enums import CollectorType +from core.enums import BatchStatus + + +def test_common_crawler_lifecycle(test_core_interface): + ci = test_core_interface + db_client = ci.core.db_client + + config = { + "common_crawl_id": "CC-MAIN-2023-50", + "url": "*.gov", + "keyword": "police", + "start_page": 1, + "pages": 2 + } + response = ci.start_collector( + collector_type=CollectorType.COMMON_CRAWLER, + config=config + ) + assert response == "Started common_crawler collector with CID: 1" + + response = ci.get_status(1) + while response == "1 (common_crawler) - RUNNING": + time.sleep(1) + response = ci.get_status(1) + + assert response == "1 (common_crawler) - COMPLETED" + response = ci.close_collector(1) + assert response == "Collector closed and data harvested successfully." + + batch_info = db_client.get_batch_by_id(1) + assert batch_info.strategy == "common_crawler" + assert batch_info.status == BatchStatus.COMPLETE + assert batch_info.parameters == config + + url_infos = db_client.get_urls_by_batch(1) + assert len(url_infos) > 0 diff --git a/tests/source_collector/manual_tests/lifecycle/test_muckrock_lifecycles.py b/tests/source_collector/manual_tests/lifecycle/test_muckrock_lifecycles.py new file mode 100644 index 00000000..61eb9d68 --- /dev/null +++ b/tests/source_collector/manual_tests/lifecycle/test_muckrock_lifecycles.py @@ -0,0 +1,73 @@ +import time + +from tests.source_collector.helpers.common_test_procedures import run_collector_and_wait_for_completion +from tests.source_collector.helpers.constants import ALLEGHENY_COUNTY_TOWN_NAMES, ALLEGHENY_COUNTY_MUCKROCK_ID +from collector_manager.enums import CollectorType +from core.enums import BatchStatus + + +def test_muckrock_simple_search_collector_lifecycle(test_core_interface): + ci = test_core_interface + db_client = ci.core.db_client + + config = { + "search_string": "police", + "max_results": 10 + } + run_collector_and_wait_for_completion( + collector_type=CollectorType.MUCKROCK_SIMPLE_SEARCH, + ci=ci, + config=config + ) + + batch_info = db_client.get_batch_by_id(1) + assert batch_info.strategy == "muckrock_simple_search" + assert batch_info.status == BatchStatus.COMPLETE + assert batch_info.count >= 10 + + url_infos = db_client.get_urls_by_batch(1) + assert len(url_infos) >= 10 + +def test_muckrock_county_level_search_collector_lifecycle(test_core_interface): + ci = test_core_interface + db_client = ci.core.db_client + + config = { + "parent_jurisdiction_id": ALLEGHENY_COUNTY_MUCKROCK_ID, + "town_names": ALLEGHENY_COUNTY_TOWN_NAMES + } + run_collector_and_wait_for_completion( + collector_type=CollectorType.MUCKROCK_COUNTY_SEARCH, + ci=ci, + config=config + ) + + batch_info = db_client.get_batch_by_id(1) + assert batch_info.strategy == "muckrock_county_search" + assert batch_info.status == BatchStatus.COMPLETE + assert batch_info.count >= 10 + + url_infos = db_client.get_urls_by_batch(1) + assert len(url_infos) >= 10 + +def test_muckrock_full_search_collector_lifecycle(test_core_interface): + ci = test_core_interface + db_client = ci.core.db_client + + config = { + "start_page": 1, + "pages": 2 + } + run_collector_and_wait_for_completion( + collector_type=CollectorType.MUCKROCK_ALL_SEARCH, + ci=ci, + config=config + ) + + batch_info = db_client.get_batch_by_id(1) + assert batch_info.strategy == CollectorType.MUCKROCK_ALL_SEARCH.value + assert batch_info.status == BatchStatus.COMPLETE + assert batch_info.count >= 1 + + url_infos = db_client.get_urls_by_batch(1) + assert len(url_infos) >= 1 \ No newline at end of file diff --git a/Tests/test_common_crawler_integration.py b/tests/test_common_crawler_integration.py similarity index 100% rename from Tests/test_common_crawler_integration.py rename to tests/test_common_crawler_integration.py diff --git a/Tests/test_common_crawler_unit.py b/tests/test_common_crawler_unit.py similarity index 100% rename from Tests/test_common_crawler_unit.py rename to tests/test_common_crawler_unit.py diff --git a/Tests/test_html_tag_collector_integration.py b/tests/test_html_tag_collector_integration.py similarity index 100% rename from Tests/test_html_tag_collector_integration.py rename to tests/test_html_tag_collector_integration.py diff --git a/Tests/test_identifier_unit.py b/tests/test_identifier_unit.py similarity index 100% rename from Tests/test_identifier_unit.py rename to tests/test_identifier_unit.py diff --git a/Tests/test_label_studio_interface_integration.py b/tests/test_label_studio_interface_integration.py similarity index 100% rename from Tests/test_label_studio_interface_integration.py rename to tests/test_label_studio_interface_integration.py diff --git a/Tests/test_util_unit.py b/tests/test_util_unit.py similarity index 100% rename from Tests/test_util_unit.py rename to tests/test_util_unit.py diff --git a/util/helper_functions.py b/util/helper_functions.py new file mode 100644 index 00000000..676a614f --- /dev/null +++ b/util/helper_functions.py @@ -0,0 +1,6 @@ +from enum import Enum +from typing import Type + + +def get_enum_values(enum: Type[Enum]): + return [item.value for item in enum] \ No newline at end of file