San Antonio, TX · Military City, USA UEI L58JZMKRCLM5  ·  CAGE 203C1  ·  NAICS 541511  ·  SAM.gov Active

Reported offenses by ZIP code

SAPD NIBRS Group A offenses, 2025-09 to 2026-08 (trailing 12 months). 131,827 offenses across 62 ZIP codes.

This map covers the 62 ZIP codes the San Antonio Police Department reports offenses in. The county boundary file carries 81, and the other 19 are not drawn because SAPD does not police them. Each is a separate city, a military installation or an unincorporated place: Adkins, Atascosa, Boerne, Bulverde, Castroville, Cibolo, Converse, Elmendorf, Helotes, JBSA Randolph, La Coste, Lytle, Marion, Saint Hedwig, Schertz, Somerset, Universal City, Von Ormy. Those places have their own police departments and their own records. An absence here is a jurisdiction boundary, not a safe neighborhood.

ZIP codes ranked by the selected measure. A per-1,000 rate is withheld where fewer than 5,000 people live in the ZIP code, and a percentage change is withheld where the prior period held fewer than 50 offenses: in both cases the denominator is too small for the number to mean anything.

ZIPOffensesPer 1,000Per sq mivs prior yr44-month trend
782077,133 131.8 945 +6.4%
782166,017 143.1 427 -12.6%
782235,590 97.6 130 +4.3%
782284,645 83.7 411 -4.0%
782274,534 102.8 327 -4.4%
782493,957 64.1 268 -7.4%
782013,934 90.6 550 -4.3%
782373,883 105.1 553 -8.9%
782513,875 62.8 266 -7.3%
782293,867 109.9 681 -10.4%
782303,637 86.5 350 -12.2%
782453,624 39.7 109 -11.2%
782403,581 62.8 319 -5.0%
782103,526 101.5 463 +1.5%
782213,478 83.6 106 -1.9%
782183,467 90.5 317 -11.0%
782123,375 126.5 479 +2.9%
782053,300 n/a 3,367 -3.8%
782243,275 158.4 214 -7.0%
782173,170 93.3 319 -2.7%
782382,998 114.2 322 -9.2%
782092,751 63.4 274 -0.9%
782322,629 72.5 221 -8.5%
782132,619 63.0 336 -8.8%
782112,607 85.2 260 -4.1%
782142,607 119.1 194 -6.8%
782202,555 138.1 227 +1.8%
782472,343 45.1 179 -6.4%
782332,234 46.9 161 -8.7%
782422,230 62.0 285 -1.7%
782582,135 41.3 125 -8.1%
782502,008 34.7 208 -10.1%
782021,860 186.9 753 -0.3%
782221,782 71.3 107 +6.8%
782571,729 166.4 30.1 -11.2%
782041,565 131.0 563 -11.2%
782191,522 89.8 109 -4.4%
782151,379 n/a 1,313 -11.0%
782561,231 102.5 147 -16.6%
782541,123 14.2 42.3 -14.3%
782591,106 41.1 63.9 -7.1%
78225902 68.4 472 +5.9%
78226811 117.4 210 +17.4%
78203734 n/a 556 +11.6%
78244721 19.0 92.4 +4.9%
78208644 n/a 638 +19.5%
78253560 8.3 10.5 -6.7%
78231462 46.4 102 -11.2%
78235460 n/a 217 -3.8%
78248420 29.7 105 +5.3%
78252399 21.9 13.1 -22.7%
78239295 9.9 43.9 +7.7%
78255162 8.9 9.0 -20.6%
78260144 3.9 6.0 -19.6%
7826495 8.1 1.3 +35.7%
7826659 8.1 1.5 -35.2%
7823435 5.6 6.7 n/a
7823627 3.5 2.0 n/a
782618 0.3 0.3 n/a
782434 n/a 11.4 n/a
782062 n/a 200 n/a
782632 n/a 0.0 n/a

The safest and most dangerous ZIP codes in San Antonio

The most-searched question about this data, and the one most sites get wrong. Rank by raw count and you just find the biggest ZIP code; rank by a naive per-capita rate and downtown crowns itself on the strength of the Riverwalk. Here it is done the fair way, by reported offenses per 1,000 residents over the trailing year, with the catches that ranking pointed out.

Lowest crime per resident

  1. 78261 Far North Side0/1k
  2. 78260 Far North Side4/1k
  3. 78266 Far Northeast Side8/1k
  4. 78264 Far South Side8/1k
  5. 78253 Far West Side8/1k

Highest crime per resident

  1. 78202 Central San Antonio187/1k
  2. 78257 La Cantera & The Rim retail166/1k
  3. 78224 South Side158/1k
  4. 78216 North Central / Airport retail143/1k
  5. 78220 East Side138/1k

Two catches, and they are the whole point. The "safest" list excludes the military bases (JBSA Lackland, Fort Sam Houston): their reported crime is low only because SAPD is not their police force, a jurisdiction quirk, not safety. And some "most dangerous" ZIP codes are retail corridors: the rate divides real offenses by the few thousand who live there, while the crime is driven by the tens of thousands who shop there. A ZIP code is a mail boundary, not a neighborhood, and this is reported crime, not risk. Read it as a starting point, then look up the specific ZIP above.

San Antonio crime: the questions people ask

Is San Antonio safe?
It depends what you measure, and this map is built to let you. By the FBI's numbers San Antonio's violent-crime rate runs above the national average, and its property-crime rate is the highest of the five biggest Texas cities. But reported crime is heavily concentrated (half of it falls in about 16 of 62 ZIP codes) and heavily late-night, so a citywide label hides more than it tells. Look up your own ZIP rather than trust one number.
What is the safest ZIP code in San Antonio?
By reported offenses per resident over the trailing year, 78261 is the lowest, at about 0 per 1,000 residents. Military-base ZIP codes read even lower, but that is because SAPD does not police them, not because they are safer. A ZIP is a coarse mail boundary, so treat this as a starting point.
What is the most dangerous ZIP code or neighborhood in San Antonio?
By offenses per resident, 78202 ranks highest (about 187 per 1,000). By sheer number of offenses, 78207 has the most. Watch the trap: a couple of high-rate ZIP codes are retail corridors (the airport and the big malls), where the crime is driven by shoppers, not the few thousand residents the rate divides by.
What time of day does crime happen in San Antonio?
Violent-crime 911 calls (assaults, shootings, robberies, logged when they happen) climb through the evening and peak around 10 pm, heaviest on Sunday and the weekend. About 37% of them come in during the five hours from 9pm to 2am. Early morning is the quietest stretch.
What is the most common crime in San Antonio?
The most-reported NIBRS Group A offense is Simple Assault, followed by property damage and theft from motor vehicles. Most of what SAPD records is property and lower-level offenses, not violent crime.

What actually changed in 2026-08

Nothing did. Not one of the 51 ZIP codes we can test moved far enough from its own expected range to be distinguishable from ordinary month-to-month noise. Several of them changed by more than 20%, and that change still means nothing. Below is the evidence, including the ZIPs whose headline percentages look alarming.

Ranked by how far each ZIP code departed from its own expected count, not by percentage change. Expected is that ZIP's own 24-month baseline, adjusted for the seasonal pattern and for how many days the month has. The comparison is quasi-Poisson: offense counts cluster, so their variance genuinely exceeds their mean, and a plain Poisson test would call several ZIP codes "unusual" every single month just by misjudging the noise. A ZIP is only called unusual beyond 3.0 standard deviations, because testing 51 ZIP codes at once at the conventional 95% threshold would flag about 3 of them by chance alone. Withheld below 30 expected offenses.

ZIPObservedExpectedChangeStd devsVerdict
78242236196 +24%+2.8 Within normal range
78217235288 -22%-2.5 Within normal range
78221263311 -19%-2.5 Within normal range
78240269327 -19%-2.4 Within normal range
78211199238 -19%-2.2 Within normal range
78238226281 -9%-2.1 Within normal range
78218265329 -19%-2.1 Within normal range
7825980103 -24%-1.9 Within normal range

Read the third and fifth columns together. That is the entire point of this panel: a ZIP code can move by half and still be doing nothing unusual, because a small denominator moves easily. Percentage change is the number every other crime map leads with, and it is the number most likely to mislead you.

Every offense runs on its own week

This is the single most misread thing in any crime map, and you can see it here. The City publishes the day an offense was reported, not the day it happened, and different offenses give that away in different ways. Each pair of charts is one offense type against an average day and an average month (the dashed line is 100). Sorted into what their weekly rhythm is really telling you.

Reported the Monday after

These peak on Monday. That is almost certainly not when the crime happens, but when the weekend's break-ins and stolen cars are discovered and reported at the start of the week.

Larceny/Theft Offenses
MTWTFSS
peaks Mon · 26% on weekends
JFMAMJJASOND
busiest in July
Larceny/Theft Offenses by day of week, index where 100 is an average day
Mon106
Tue106
Wed101
Thu100
Fri101
Sat96
Sun90
Destruction/Damage/Vandalism of Property
MTWTFSS
peaks Mon · 30% on weekends
JFMAMJJASOND
busiest in September
Destruction/Damage/Vandalism of Property by day of week, index where 100 is an average day
Mon111
Tue98
Wed94
Thu93
Fri98
Sat103
Sun104
Motor Vehicle Theft
MTWTFSS
peaks Mon · 30% on weekends
JFMAMJJASOND
busiest in October
Motor Vehicle Theft by day of week, index where 100 is an average day
Mon108
Tue99
Wed96
Thu96
Fri95
Sat103
Sun104
Breaking & Entering
MTWTFSS
peaks Mon · 23% on weekends
JFMAMJJASOND
busiest in October
Breaking & Entering by day of week, index where 100 is an average day
Mon130
Tue108
Wed101
Thu100
Fri97
Sat86
Sun78

Reported as it happens

These peak on the weekend. They tend to be reported close to when they happen, not days later: an assault the day it occurs, a weekend drug or weapon stop as it is made. So this shape is closer to the real timing, the mirror image of the Monday group above.

Assault Offenses
MTWTFSS
peaks Sun · 33% on weekends
JFMAMJJASOND
busiest in May
Assault Offenses by day of week, index where 100 is an average day
Mon101
Tue91
Wed89
Thu93
Fri97
Sat110
Sun119
Drug/Narcotics Offenses
MTWTFSS
peaks Sat · 29% on weekends
JFMAMJJASOND
busiest in March
Drug/Narcotics Offenses by day of week, index where 100 is an average day
Mon101
Tue98
Wed96
Thu102
Fri104
Sat105
Sun95
Weapon Law Violations
MTWTFSS
peaks Sat · 32% on weekends
JFMAMJJASOND
busiest in April
Weapon Law Violations by day of week, index where 100 is an average day
Mon99
Tue86
Wed92
Thu95
Fri108
Sat111
Sun110
Robbery
MTWTFSS
peaks Sat · 31% on weekends
JFMAMJJASOND
busiest in April
Robbery by day of week, index where 100 is an average day
Mon100
Tue102
Wed97
Thu89
Fri95
Sat108
Sun108

A weekday, business rhythm

These peak midweek with little weekend share at all. A store reports a shoplifter on a workday; you catch a fraudulent charge when you check a statement on Tuesday, not Sunday.

Fraud Offenses
MTWTFSS
peaks Tue · 17% on weekends
JFMAMJJASOND
busiest in August
Fraud Offenses by day of week, index where 100 is an average day
Mon118
Tue121
Wed116
Thu112
Fri110
Sat68
Sun54
Counterfeiting/Forgery
MTWTFSS
peaks Tue · 16% on weekends
JFMAMJJASOND
busiest in February
Counterfeiting/Forgery by day of week, index where 100 is an average day
Mon111
Tue124
Wed123
Thu119
Fri111
Sat67
Sun44

We publish the weekday and month-of-year shapes because they are real and they are in the data. We are careful to tell you what they do and do not mean, because the obvious reading, that Monday is a dangerous day, is the wrong one. What the pattern actually measures is how and when each kind of crime reaches a police report. That is a genuinely useful thing to know, and almost nobody says it out loud.

When violent crime actually happens

The map's offense dates cannot tell you when a crime happened, only when it was reported. So this comes from a different place: 911 calls. A call about an assault, a shooting or a robbery is logged the moment it comes in, which is as close to the real time as this data gets. Each square is one hour of one weekday over three and a half years; the darker it is, the more violent-crime calls came in then.

Fewer callsMore
10 pmbusiest hour
Sunbusiest day
37%of calls fall in the five hours from 9pm to 2am
36%on the weekend (an even split would be 29%)

So the honest version of "the most dangerous time" is late on a weekend night: violent-crime calls climb all evening, peak around 10 pm, and run heaviest Friday through Sunday. The quietest stretch is the early morning commute.

Read this as calls, not convictions. It counts 262,264 911 calls reporting assaults, shootings and robberies, by the hour they were made. A call is a report of a possible crime, which is a different thing from the confirmed offenses on the map above, and it comes from a different City dataset (Calls for Service). We use it only for timing, because it is the only place the timing honestly exists.

Arrests, for comparison: not the same thing as offenses

A second public dataset: 201,260 SAPD arrests across the same ZIP codes over the full 2023-01 to 2026-08 record. The table below shows the trailing 12 months (2025-09 to 2026-08), the same window as the map above. Do not divide arrests by offenses. They count different things. Arrests are mostly misdemeanors that are not in the Group A offense set at all, and an arrest can be made this month for a crime committed years ago, so an "arrests per offense" figure would be meaningless. We show arrests on their own, as their own measure.

Felony 22% Misdemeanor 78% 61,540 arrests, trailing 12 months

ZIP codes ranked by arrests in the trailing 12 months. Felony share is the percentage of that ZIP's arrests that were felonies, not misdemeanors. A per-1,000 rate is withheld below 5,000 residents, the same rule the offenses table uses.

ZIPArrestsPer 1,000Felony share44-month trend
782075,528 102.1 26%
782053,473 n/a 15%
782372,850 77.2 27%
782272,758 62.6 22%
782282,657 47.9 22%
782232,408 42.0 24%
782162,389 56.8 18%
782102,337 67.3 24%
782012,192 50.5 22%
782122,105 78.9 21%
782181,962 51.2 20%
782291,908 54.2 22%

Arrest location is where the arrest was made, which we checked tracks the offense map closely, so it is honest to read this geographically. What it is not is a measure of how many crimes get solved. That number is not in the public data, and anyone who quotes you one from a source like this is guessing.

Take the data

Everything above is built from open data you can download here. The offenses CSV is one row per ZIP code, per month, per offense type, the shape you want for a spreadsheet or a notebook, and arrests come as their own CSV. No signup, no email, no attribution required to us. Prefer to pull it programmatically? There is a versioned public API with JSON, CSV, and an OpenAPI spec.

Download CSV JSON (indexed cube) JSON (ZIP geometry) Arrests CSV

The underlying records are published by the City of San Antonio under CC-BY (City of San Antonio). The City is the source and deserves the credit. If our processing of it is useful to you, a link back to this page is welcome but not required. Cite it as: BrandShyp, “San Antonio reported offenses by ZIP code”, derived from City of San Antonio open data (SAPD Offenses), built 2026-09-06.

Source: City of San Antonio open data, SAPD Offenses (CC-BY (City of San Antonio)). NIBRS Group A offenses only. Population: U.S. Census ACS 5-year (2023), table B01003. We count offenses, not incidents: the 538,978 published offenses arise from 493,052 distinct police reports, because one report can carry several offenses. A dashboard that counts reports will show a smaller number than this one and both will be correct. Data through 2026-08; the City publishes monthly, so the most recent weeks are not yet included. 5,457 of 538,978 records (1.01%) carry no usable ZIP code and are not mapped. Built 2026-09-06.

Know your ZIP. Share the map.

Send it to a neighbor, post it to your feed, or pass it to your group. Free, no signup, no email wall.

Facebook LinkedIn X WhatsApp Email

Read this before you read the map

A crime map that does not explain itself is closer to a rumour than a record. Here is exactly what this one is.

It shows reports, not convictions, and not all crime

Every number here is an offense reported to SAPD. Some reports are later unfounded. Nobody on this map has been convicted of anything, and no individual is named, because the City’s data contains no names, no addresses, and no coordinates. That is a feature, not a gap.

It also is not all crime. The published dataset covers NIBRS Group A offenses only, which excludes DUI, disorderly conduct, and trespass, among others. Crimes that are never reported appear nowhere in it, and for some categories that is most of them.

ZIP code is as precise as the data goes

You may have seen crime maps that drop a pin on a block. They are working from a private police records feed. The City’s public dataset has no street address and no latitude or longitude: the finest geography it publishes is the ZIP code. So this map stops at the ZIP code, rather than inventing a precision it does not have.

A ZIP code is also not a neighborhood. It is a mail-delivery boundary that can span a wealthy subdivision, an industrial park, and a highway interchange at once. Treat a ZIP-level figure as a coarse signal, never as a verdict on a street.

Common questions about San Antonio crime by ZIP code

What is the crime rate in my ZIP code?

Pick your ZIP in the map’s “Explore your ZIP” list, or click it on the map. Its profile shows reported offenses per 1,000 residents, offenses per square mile, the change from a year earlier, its biggest offense types, and its full 44-month trend. For ZIPs with fewer than 5,000 residents we show counts only, because a rate built on almost nobody is not a rate.

Which areas of San Antonio have the most crime?

The ranked table under the map answers this three ways: total reported offenses, offenses per resident, and offenses per square mile. They do not agree, and that is the point. Downtown and the big retail corridors top any count because of the people who pass through them, not the people who live there. Use the ranking to see where reports cluster, never as a verdict on a street.

Is this a Bexar County crime map?

No. It covers the 62 ZIP codes where SAPD reports offenses. Cities such as Converse, Schertz, Universal City and Helotes run their own police departments, and the Bexar County Sheriff’s Office covers unincorporated county areas, so none of their reports are in the City’s dataset. If your ZIP is missing from the map, that is a jurisdiction boundary, not a safe neighborhood.

How current is it?

The data runs through August 2026. The City republishes monthly with a lag of a few weeks, and the map refreshes itself on the 6th of every month. You can download the full ZIP-by-month table as a CSV.

The part most crime maps get wrong

Dividing by residents is how you produce a lie

Rank ZIP codes by offenses per resident and downtown 78205 reads as roughly 2,000 per 1,000 residents, more offenses than the ZIP has people. That is not danger, it is the Riverwalk: about 1,650 people live there while millions pass through. So we withhold the per-resident rate below 5,000 residents and default to absolute counts. The same distortion hits retail corridors like 78216 (airport and North Star Mall), where the rate still counts people who do not live there.

We also give you offenses per square mile, a second denominator with its own bias (it flatters anything large and empty). Where the two disagree about a ZIP, that disagreement is the finding.

The most trustworthy number is change over time, because comparing a ZIP against its own past needs no denominator at all. Its own trap is small numbers: two offenses to four is “+100%”. So no change is shown below 50 prior offenses, and the color scale is set by the 90th percentile of movement, not the single wildest ZIP.

The trap that is hiding in your calendar

February is not safer. February is shorter.

A mistake almost every crime dashboard makes. Compare February to July on raw counts and February looks about 16% lower. Print that with a downward arrow and you have told the city crime falls in February. It does not. February has 28 days and July has 31, nearly a 10% gap in the time available for anything to happen. Most of that “drop” is the calendar.

So every period comparison here is computed per-day first. Strip out the calendar and a real but small season remains: San Antonio runs a few percent busier in high summer. It is the same mistake as the other two denominators wearing different clothes. Residents, area, days: pick the wrong divisor and the map lies confidently.

Why we will not tell you crime is “up 50%”

Percentage change is what every crime map leads with, and it is the most misleading number, because it is really a ranking of small denominators: a modest ZIP swings by half on an ordinary month.

So the What actually changed panel ranks by a harder question: given what this ZIP normally does at this time of year, is this month actually surprising? Each ZIP is measured against its own baseline, adjusted for the season and the length of the month. The percentage change sits right next to it so you can watch the two disagree. That gap is the whole reason this exists.

Two things most analysis skips. Crime counts are overdispersed: they cluster, so a plain Poisson test invents “significant” spikes every month that are nothing at all. We fit each ZIP’s own dispersion instead. And we test dozens of ZIPs at once: at the reflexive 95% threshold, roughly three would flag by chance alone every month, forever, so we only call a ZIP unusual beyond three standard deviations.

The honest consequence: most months, nothing is unusual. That is not a broken feature, it is the answer, and almost nobody publishes it.

How this was built

Reproducible end to end. Every input is public, and you can check any figure here against the source.

The pipeline

Offense records come from the City of San Antonio’s open data portal (SAPD Offenses, CC BY license) through its CKAN SQL API. They are aggregated to one cell per ZIP code, per month, per offense type, and joined to the City’s own ZIP boundary layer, which is projected to flat SVG geometry at build time. No map library, no tiles, and no third-party tracker loads on this page.

The build asserts its own totals. It re-counts the source table independently and refuses to publish if the aggregate does not reconcile to the row count, because the City’s datastore truncates large responses silently and a partial extract would look perfectly normal.

What we throw away, and why we tell you

Of 538,978 published records, 5,457 (1.01%) carry a blank or unmappable ZIP code. They are excluded, because there is nowhere honest to put them. The alternative, quietly assigning them somewhere, is how a map starts lying.

We count offenses, not incidents. Those 538,978 offenses come from 493,052 distinct police reports, because a single report can carry more than one offense. A dashboard that counts reports will show you a smaller number than this one, and neither of us is wrong. Ask which is being counted before you compare two crime figures.

The City republishes monthly, so the most recent few weeks are never present. If you need what happened last night, this is the wrong tool, and we would rather say so than imply a freshness we do not have.

Every figure in this section is read live from the same data file the map is drawn from, so it cannot drift out of step with the map above it. Data built 2026-09-06. Population: U.S. Census ACS 5-year (2023), table B01003.

Two datasets that look comparable and are not

Further down the page is a second measure: arrests. It is tempting to divide arrests by offenses and call it a “solve rate.” That would be fiction. They count different events: the offenses here are NIBRS Group A, but arrests are mostly misdemeanors that are not Group A at all, so many arrests have no matching offense and never will.

And they do not line up in time: an arrest this month can be for a crime years ago. So we show arrests as their own measure and never divide the two. The data supports “how many arrests, where, and how many were felonies.” It does not support “how many crimes get solved,” and we will not invent that.

Why an IT contractor built a crime map

Because this is the work. A government agency hands you a messy public dataset with a silent truncation bug, no coordinates, a broken denominator, and a 1% slice that fits nowhere. The job is to find the traps before they end up in a published figure someone makes a decision on: reconcile against the source, refuse to ship what does not add up, and state the limits on the face of the artifact, not in a footnote nobody reads.

We are a San Antonio software and data firm working across federal and local government, so this is the kind of problem we are paid to solve elsewhere. That is the whole of our interest in it. Nobody commissioned this map, it is not a sample of client work, and there is nothing to buy on this page. The code, the reconciliation checks, and the methodology are available on request.

Other San Antonio tools

Same method, a different public record. Each one states what its record cannot answer.

Crime Map Building Permits Bar & Restaurant Revenue Aggressive Driving Trail Accessibility License Plate Readers Data Centers Data Center Zoning 311 Response Times Data Center Corroboration Data Center Environmental Record Bond Projects Council District Lookup Sheriff Response Times County Capital Projects Police Response Times Missing Children Records Missing Persons Property Tax Increase Business & Contracting Events

All 20 are free, with no signup and no email wall, and the public API behind them needs no key.

Who publishes this

These tools are built and maintained by BrandShyp LLC, a San Antonio software firm. We sell data, software and accessibility work to public agencies and are seeking state and local government contracts. Small business certification with the South Central Texas Regional Certification Agency is in process. We hold no City of San Antonio contract.

No client, agency or sponsor funds, reviews or approves any of these tools, and nothing on these pages is a solicitation. Every figure comes from the public record named below, which is linked and can be queried without us.

Corrections. If a number here disagrees with the record, write to Justice Harker at [email protected] with the figure and the source that contradicts it. Corrections are made on the page, and what changed is noted there rather than replaced silently.

Source. This page reads SAPD NIBRS Group A offenses and arrests, published by the City of San Antonio, with population from the US Census Bureau and peer-city rates from the FBI. The record is linked from the page above and can be queried without us. We claim no rights over the underlying record and add no license of our own to it.