Pearland is a city of about 126,000 people south of Houston. Most of the city lies in Brazoria County, and parts reach into Harris and Fort Bend counties. This update adds 12 months of Flock network audit logs from Pearland TX PD, from July 1, 2025 through June 30, 2026. The logs list 11,635,727 searches by 4,756 organizations that included Pearland’s cameras. All times and dates below are Central time.
#Network audit
- Type: Network audit
- Timespan: Jul 1, 2025 – Jun 30, 2026 (365 days)
- Records: 11,635,727
- Organizations (network): 4,756
- Search types: lookup (8,121,625), lookup - Mobile (2,128,742), search (1,028,940), search - Mobile (328,324), convoy (22,782), and seven other types with 5,314 records combined
- Operator name: redacted on 11,635,727 records
- License plate: redacted on 10,455,437 records; blank on 1,180,290
- Case #: redacted on 4,154,701 records; blank on 7,481,026
- Filters: redacted on 4,759,277 records; blank on 6,876,450
- Reason: blank on 5,349 records
The agency marked redactions with ***. It redacted the operator name on all records, including the 27,934 searches that Pearland’s own Flock users ran. No record shows a plate number or a case number.
The median search covered 2,651 networks. 9,552,593 searches (82.1%) covered 1,000 networks or more, and 4,286,946 (36.8%) covered 5,000 or more. 3,213 searches covered one network.
The logs hold searches on all 365 days. Daily counts ran from 9,365 on Sunday, January 25, 2026, to 53,563 on Wednesday, June 17, 2026. Monthly counts rose from 822,120 in September 2025 to 1,238,898 in June 2026. The files for July 2025 through May 2026 each end at 11:58 p.m. on the last day of the month. No records fall in the 11:59 p.m. minute on those 11 days.
The bars show searches per week. The line shows how many organizations searched in that week. Weeks start on Monday. The first bar covers July 1–6, 2025, and the last covers June 29–30, 2026.
#Search types
| Type | Count | % |
|---|---|---|
| lookup | 8,121,625 | 69.8% |
| lookup - Mobile | 2,128,742 | 18.3% |
| search | 1,028,940 | 8.8% |
| search - Mobile | 328,324 | 2.8% |
| convoy | 22,782 | 0.2% |
| apiV1 | 2,528 | <0.1% |
| multiGeo | 1,526 | <0.1% |
| searchSummary - Mobile | 820 | <0.1% |
| visual | 227 | <0.1% |
| freeform | 183 | <0.1% |
| freeform - Mobile | 18 | <0.1% |
| mostSeenOcrValues | 12 | <0.1% |
Flock users ran 201 freeform searches, which take a text prompt. Texas Department of Public Safety ran 73 of them. Flock’s moderation field reads “allow” on 199 and “block” on two. Texas Department of Public Safety ran both blocked searches.
#Top searching agencies
Agencies with “TX” or “Texas” in their names ran 4,300,590 searches (37.0%). Most other names place the agency in one of 45 other states or Washington, D.C. Houston TX PD ran the most searches, with 808,693. The ten busiest agencies ran 2,512,246 searches (21.6%). Pearland TX PD ranks 70th with 27,934.
| Organization | Count | % |
|---|---|---|
| Houston TX PD | 808,693 | 7.0% |
| Dallas TX PD | 579,468 | 5.0% |
| Texas Department of Public Safety | 312,691 | 2.7% |
| Harris County TX SO | 173,881 | 1.5% |
| Louisville Metro KY PD | 139,419 | 1.2% |
| Hillsborough County FL SO | 134,764 | 1.2% |
| Palm Beach County FL SO | 100,740 | 0.9% |
| Cleveland OH Division of Police | 98,465 | 0.8% |
| Missouri State Highway Patrol | 82,639 | 0.7% |
| Fort Worth TX PD | 81,486 | 0.7% |
| Montgomery County TX SO | 71,331 | 0.6% |
| Kansas Highway Patrol | 68,521 | 0.6% |
| Grand Prairie TX PD | 68,178 | 0.6% |
| Cobb County GA PD | 66,604 | 0.6% |
| Carrollton TX PD | 64,373 | 0.6% |
| Other (4,741 organizations) | 8,784,474 | 75.5% |
Four accounts carry the “[Federal]” label:
- Federal Bureau of Investigation (FBI): 59,383 searches. The first came at 7:41 a.m. on March 26, 2026. The account ran 1,759 searches from March 26 to 31, 23,421 in April, 16,345 in May, and 17,858 in June. The reason on 57,252 of them reads “Other - Not Applicable”.
- US Postal Inspection Service: 42,739 searches, spread across all 12 months. Common reasons include “Robbery”, “General Search”, and forms of “mail theft”.
- US Border Patrol [Inactive]: 2,897 searches between July 1 and August 24, 2025. No search by this account appears after August 24.
- Wright Patterson OH Air Force Base: 121 searches.
Five California agencies ran 126,672 searches. Ontario CA PD ran 60,068 of them.
#Reasons
Many reasons pair a Flock offense category with an optional free-text note, such as “Drugs/Narcotics - Investigation”. 6,586,763 reasons (56.6%) contain " - ". This table groups records by the text before the first " - ". It keeps case as written, so “Investigation” and “investigation” appear as separate rows. The logs hold 303,535 distinct reason values.
| Category | Count | % |
|---|---|---|
| Drugs/Narcotics | 829,973 | 7.1% |
| Wanted Person (Arrest Warrant/Fugitive) | 816,032 | 7.0% |
| Motor Vehicle Theft/Stolen | 732,628 | 6.3% |
| Traffic Infraction | 512,462 | 4.4% |
| Larceny/Theft Offenses | 472,591 | 4.1% |
| Auto Theft / VCD Investigation | 334,103 | 2.9% |
| Other | 279,105 | 2.4% |
| Assault/Battery Offenses | 235,233 | 2.0% |
| Burglary/Breaking & Entering | 219,118 | 1.9% |
| Stolen Property Offenses | 198,457 | 1.7% |
| Investigation | 187,577 | 1.6% |
| Hit and Run/Car Accident | 184,895 | 1.6% |
| investigation | 163,811 | 1.4% |
| Robbery | 162,216 | 1.4% |
| Weapons Offense (Guns/Shots Fired) | 155,247 | 1.3% |
| All other values (145,575) | 6,152,279 | 52.9% |
Pearland’s own Flock users most often entered a category followed by “Criminal Justice Purpose”, as in “Larceny/Theft Offenses - Criminal Justice Purpose” (3,457).
#Report highlights
#Immigration
Reasons name immigration agencies or immigration law on these records. The groups overlap:
- 483 records from 31 agencies name ICE as a separate word. Florida Highway Patrol entered 114, including 81 that read “ICE ASSIST”. 188 records read only “ICE”. A bare “ice” can also mean methamphetamine, so those 188 may include drug searches.
- 144 records from 22 agencies contain “immigration”. Lubbock County TX SO entered 42.
- 134 records name the Border Patrol, USBP, CBP, or Stonegarden.
- 55 records cite 287(g). Santa Rosa County FL SO entered 47.
- 2,696 records from 146 agencies name HSI or Homeland Security Investigations. Most of these fall under fraud, drugs, sex offenses, or human trafficking. Addison TX PD entered 395.
The US Border Patrol account cited 8 U.S.C. 1324, the federal law against bringing in and harboring aliens, on 392 of its 2,897 searches.
North MO DTF Brookfield MO PD ran two searches with the reason “ICE detainer” on October 30, 2025. Each covered 25,263 networks. See Anomalies.
#First Amendment
1,203 records match terms that the First Amendment report tracks. Most match on “drone” (330), “church” (205), or “video” (105). 204 contain “protest”, “rally”, or “demonstration”. Among them:
- Lubbock TX PD entered “protest veh” on 61 records.
- Cobb County GA PD entered “HOMELAND SECURITY - SITUATIONAL AWARENESS - NEO NAZI AT JEWISH FACILITIES PROTESTING” on 16 records.
- Burlington NC PD entered “Protest Intelligence” on 10 records.
- Cleveland OH Division of Police (3) and Tulsa OK PD (1) entered reasons that mention a “no kings protest”.
#Low-level offenses
68,372 records from 2,046 agencies match terms that the low-level offenses report tracks. The most common terms are “disorderly conduct” (26,051), “trespass” (19,917), “littering” (10,699), “curfew” (4,020), and “prostitution” (3,628). Dallas TX PD entered the most, with 2,141. The FBI account entered 2,111, most of them “Disorderly Conduct/Disturbance - Not Applicable”.
#Develop PC
2,885 records from 190 agencies match terms that the develop PC report tracks. “MYOC” appears on 1,718. “Develop PC” appears on 596 and “get PC” on 257. Porter County IN SO entered the most, with 434.
#Profiling
227 records from 23 agencies describe a person by race and sex, such as “black male” (69) or “hispanic male” (40). Carmel IN PD entered 111.
#How we processed the files
We staged 12 released files unchanged under their released names. We left out one released June 2026 file and staged a 13-row extract from it in its place.
#Released files
Row counts exclude the header. Hashes are SHA-256 of the released CSV files.
| File | Rows | Bytes | SHA-256 |
|---|---|---|---|
| 7_1_2025-7_31_2025-Pearland TX PD -Network-Audit.csv | 899,340 | 181,606,521 | 4e988bf86b78ae826f63c41f4451edda47059ae76b806f1d83b0f21da649090e |
| 8_1_2025-8_31_2025-Pearland TX PD -Network-Audit.csv | 871,324 | 177,685,231 | 65303d98caccd530d16018683bf1de6626be44209d04848c428c0dfc3e45b3ea |
| 9_1_2025-9_30_2025-Pearland TX PD -Network-Audit.csv | 822,120 | 167,896,297 | 954923b8f15fcf4cebfe6e488bdf7d8603291298fbc74713b2bcae202da37d19 |
| 10_1_2025-10_31_2025-Pearland TX PD -Network-Audit.csv | 936,522 | 191,433,958 | 0121a63e3333a67f5ad82a71f30e730f96c2eff3db32d969b3ba0a930a0083a4 |
| 11_1_2025-11_30_2025-Pearland TX PD -Network-Audit.csv | 868,848 | 177,858,070 | b90d5acfe7d510b77901e30c35232fd82b3b1a036eb7f1de9b9bfd13b89824dc |
| 12_1_2025-12_31_2025-Pearland TX PD -Network-Audit.csv | 852,342 | 180,483,777 | fbfbf84a38b3c9b9a8235ce9f6831aac578aef278e2e50ed8b8044f1c1220667 |
| 1_1_2026-1_31_2026-Pearland TX PD -Network-Audit.csv | 877,588 | 204,042,560 | af317fb7df4cb1ece5817bbfaf818585cd4f4d77c8bfdd71693c864e8f29c7c1 |
| 2_1_2026-2_28_2026-Pearland TX PD -Network-Audit.csv | 920,920 | 213,956,166 | e72a96f3a5a248a65a5e13070ff62b1a713ed31efe55d5a7cdd23be368961aab |
| 3_1_2026-3_31_2026-Pearland TX PD -Network-Audit.csv | 1,044,786 | 240,039,305 | 56ee72ce960485e13a2e5b9c691dd427a721506fab61d799060b110643cf058d |
| 4_1_2026-4_30_2026-Pearland TX PD -Network-Audit.csv | 1,109,403 | 255,090,868 | 926356130f418c8030164525e4215b26e45db2af1cc8f00f87491a2bcddfae73 |
| 5_1_2026-5_31_2026-Pearland TX PD -Network-Audit.csv | 1,193,721 | 274,949,503 | eb2f6ec422e6a1484b511e18bdb34db898b754b97a68d21d7c92f2bab094555e |
| 6_1_2026-6_30_2026-Pearland TX PD -Network-Audit.csv | 1,048,575 | 222,103,135 | ac1f3c1c78aab4f9f027e3d2df24d6697cb7541db49dd4c2e1ba9368c3c99b2b |
| 6_1_2026-6_30_2026-Pearland TX PD -Network-Audit (1).csv | 1,238,886 | 285,909,361 | 317b309cf7a33fba99b1eda5acf7ce8f599293d43f1660b9d4862c863749682f |
All 13 files share one header row: ID, Name, Org Name, Total Networks Searched, Time Frame, License Plate, Reason, Case #, Filters, Search Time, Search Type, Text Prompt, Moderation. Every row in every file has 13 fields, and the Search Time parses on every row. No file has a byte order mark, a NUL byte, or a filler row made only of blanks and ***. The Time Frame field holds a start and an end time separated by a line break.
#The two June 2026 files
Twelve files quote text fields and end each line with LF. “6_1_2026-6_30_2026-Pearland TX PD -Network-Audit.csv” differs. It quotes only the fields that need quotes, such as Time Frame. It ends each row with CRLF and keeps a bare LF inside Time Frame. It holds 1,048,575 rows, the most an Excel worksheet holds below a header row. Its earliest record is from 12:00 a.m. on June 4, 2026.
We compared the two June files by ID:
- 1,048,561 IDs appear in both files. Their parsed fields match in all 13 columns.
- 190,324 IDs appear only in “(1)”. They run from 12:00 a.m. on June 1 to 11:59 p.m. on June 24.
- 13 IDs appear only in the other file. All 13 fall between 11:59:01 and 11:59:57 p.m. on June 30. “(1)” ends at 11:58:57 p.m.
We staged “(1)” whole. We did not stage the other June file. To keep its 13 extra records, we wrote them to “6_1_2026-6_30_2026-Pearland TX PD -Network-Audit_last-minute.csv”. The rule: split the file on CRLF, keep the header line, and keep each row whose ID (the text before the first comma) is not in the ID column of “(1)”. The script writes the kept lines in their original order, each followed by CRLF, so the 13 rows keep their original bytes. We ran this script with Python 3.12.15:
# python3 extract.py <june-file> <june-file-(1)> <output>
import csv, sys
csv.field_size_limit(10**9)
a, b, out = sys.argv[1:4]
with open(b, newline="", encoding="utf-8") as fh:
r = csv.reader(fh); next(r)
bids = {row[0] for row in r}
data = open(a, "rb").read()
recs = data.split(b"\r\n")
assert recs[-1] == b""
recs = recs[:-1]
keep = [recs[0]] + [x for x in recs[1:] if x.split(b",", 1)[0].decode() not in bids]
open(out, "wb").write(b"".join(x + b"\r\n" for x in keep))We made no other change. We used no pandas or openpyxl step.
#Staged CSVs
| File | Rows | Bytes | SHA-256 |
|---|---|---|---|
| 7_1_2025-7_31_2025-Pearland TX PD -Network-Audit.csv | 899,340 | 181,606,521 | 4e988bf86b78ae826f63c41f4451edda47059ae76b806f1d83b0f21da649090e |
| 8_1_2025-8_31_2025-Pearland TX PD -Network-Audit.csv | 871,324 | 177,685,231 | 65303d98caccd530d16018683bf1de6626be44209d04848c428c0dfc3e45b3ea |
| 9_1_2025-9_30_2025-Pearland TX PD -Network-Audit.csv | 822,120 | 167,896,297 | 954923b8f15fcf4cebfe6e488bdf7d8603291298fbc74713b2bcae202da37d19 |
| 10_1_2025-10_31_2025-Pearland TX PD -Network-Audit.csv | 936,522 | 191,433,958 | 0121a63e3333a67f5ad82a71f30e730f96c2eff3db32d969b3ba0a930a0083a4 |
| 11_1_2025-11_30_2025-Pearland TX PD -Network-Audit.csv | 868,848 | 177,858,070 | b90d5acfe7d510b77901e30c35232fd82b3b1a036eb7f1de9b9bfd13b89824dc |
| 12_1_2025-12_31_2025-Pearland TX PD -Network-Audit.csv | 852,342 | 180,483,777 | fbfbf84a38b3c9b9a8235ce9f6831aac578aef278e2e50ed8b8044f1c1220667 |
| 1_1_2026-1_31_2026-Pearland TX PD -Network-Audit.csv | 877,588 | 204,042,560 | af317fb7df4cb1ece5817bbfaf818585cd4f4d77c8bfdd71693c864e8f29c7c1 |
| 2_1_2026-2_28_2026-Pearland TX PD -Network-Audit.csv | 920,920 | 213,956,166 | e72a96f3a5a248a65a5e13070ff62b1a713ed31efe55d5a7cdd23be368961aab |
| 3_1_2026-3_31_2026-Pearland TX PD -Network-Audit.csv | 1,044,786 | 240,039,305 | 56ee72ce960485e13a2e5b9c691dd427a721506fab61d799060b110643cf058d |
| 4_1_2026-4_30_2026-Pearland TX PD -Network-Audit.csv | 1,109,403 | 255,090,868 | 926356130f418c8030164525e4215b26e45db2af1cc8f00f87491a2bcddfae73 |
| 5_1_2026-5_31_2026-Pearland TX PD -Network-Audit.csv | 1,193,721 | 274,949,503 | eb2f6ec422e6a1484b511e18bdb34db898b754b97a68d21d7c92f2bab094555e |
| 6_1_2026-6_30_2026-Pearland TX PD -Network-Audit (1).csv | 1,238,886 | 285,909,361 | 317b309cf7a33fba99b1eda5acf7ce8f599293d43f1660b9d4862c863749682f |
| 6_1_2026-6_30_2026-Pearland TX PD -Network-Audit_last-minute.csv | 13 | 2,941 | 79cf02b68931b3fc2a1d5cb02b66a854656db063ee2dd646407c1c3d5d27345e |
The first 12 staged files are byte-for-byte copies of the released files with the same names. The 13 staged files hold 11,635,813 rows. To check the result, we started again from the released files in a separate folder, repeated these steps, and compared SHA-256 hashes for all 13 staged files. They matched.
#Checked and left unchanged
- Redaction markers. We kept
***as written. - Duplicate IDs. 86 rows repeat an ID that appears earlier in the same file. All 86 match the earlier row in every field. No ID appears in two staged files. We left the repeats for the importer to drop. This post counts each ID once, which gives 11,635,727 records.
- Org name spacing. 388 org names have a leading or trailing space, as in "Brevard County FL SO ". We left them as written. This post trims the space when it counts organizations.
#Anomalies
#Flock moderation note on two searches
Two lookups by North MO DTF Brookfield MO PD on October 30, 2025, at 11:10 p.m., carry a note from Flock in the moderation field. Both list the reason “ICE detainer” and cover 25,263 networks, the largest count in the logs. The note reads: “An issue was identified that caused the system to initiate unprocessed search activity on a larger set of cameras than intended by the user. No footage or data from these devices was accessed or viewed. The underlying bug has been fixed, and additional safeguards have been implemented to prevent recurrence.”
#Test records
33,958 records from 1,398 agencies have “test” or “testing” as a word in the reason. St. Charles County MO PD entered 2,654, Tulsa County OK SO entered 2,301, and Robeson County NC SO entered 1,959.
#Excel row limit
The released file “6_1_2026-6_30_2026-Pearland TX PD -Network-Audit.csv” holds 1,048,575 rows, Excel’s limit. It lacks 190,324 records that appear in “(1)”. We staged “(1)” in its place. See How we processed the files.