@simplisticated/zip-monster v1.180.0
At a Glance
ZipMonster is a library that simplifies work with zip codes and addresses in the United States. This solution is a reliable replacement for paid APIs that you can find on the Internet.
How to Get Started
Type in Terminal:
npm install --save @simplisticated/zip-monster
or, if you prefer yarn over npm, type:
yarn add @simplisticated/zip-monster
Then add import instruction to your code:
import ZipMonster from '@simplisticated/zip-monster'
Requirements
It's strongly recommended to add NODE_OPTIONS
flag to your .env
file:
NODE_OPTIONS=--max-old-space-size=<AVAILABLE RAM SIZE IN MB>
For example, if you have 2GB RAM:
NODE_OPTIONS=--max-old-space-size=2048
Usage
Everything starts from ZipMonster
object.
The main method is ZipMonster.find
. It's a super flexible way to search the information.
Search by zip code
If you know exactly what zip code you're looking for, simply write:
ZipMonster.find({
zip: "91360"
})
In response, you will receive an array of ZipInformation
objects that correspond to your search request. Each object includes the following data:
{
stateCode: "CA",
city: "Thousand Oaks",
county: "Ventura",
zip: "91360",
zipType: "Non-Unique",
location: {
latitude: 34.2090940366232,
longitude: -118.875059125606
}
}
To get city name, you can write:
const zipCodes = ZipMonster.find({
zip: "91360"
});
const city = zipCodes[0].city // Thousand Oaks
Search by city
You can also search by city:
ZipMonster.find({
city: "Thousand Oaks"
})
The expression above will return array of ZipInformation
objects related to Thousand Oaks.
Also, you can search by part of city name:
ZipMonster.find({
city: {
value: "THOUSAND",
caseSensitive: false,
wholeMatch: false
}
})
which returns zip code information for all cities that contain THOUSAND
in the name.
Search by county
ZipMonster.find({
county: "Vermont"
})
or
ZipMonster.find({
county: {
value: "vermont",
caseSensitive: false,
wholeMatch: true
}
})
Search by state
ZipMonster.find({
stateCode: "CA"
})
Search by location
Let's find cities that are further to north than Palo Alto. That's a very simple task:
const PaloAlto = ZipMonster.find({
city: "Palo Alto",
stateCode: "CA",
withLocationOnly: true
})[0];
const placesFurtherToNorth = ZipMonster.find({
location: {
latitude: {
value: PaloAlto.location!.latitude,
direction: "to-north"
}
}
});
placesFurtherToNorth.length // 21404 places are further to north than Palo Alto
Combine search parameters
You can also combine search parameters with each other:
const result = ZipMonster.find({
city: {
value: "THOUSAND",
caseSensitive: false,
wholeMatch: false
},
county: {
value: "Vent",
caseSensitive: false,
wholeMatch: false
},
stateCode: "CA"
})
const city = result[0].city // Thousand Oaks
What about more complicated logic?
Let's find all zip codes between Austin and Oklahoma City:
// Take the first zip code in Austin
const Austin = ZipMonster.find({
city: "Austin",
stateCode: "TX",
withLocationOnly: true
})[0];
// Find places to north and east from Austin
const placesToNorthFromAustin = ZipMonster.find({
location: {
latitude: {
value: Austin.location!.latitude,
direction: "to-north"
},
longitude: {
value: Austin.location!.longitude,
direction: "to-east"
}
}
});
// Take the first zip code in Oklahoma City
const OklahomaCity = ZipMonster.find({
city: "Oklahoma City",
stateCode: "OK",
withLocationOnly: true
})[0];
// Find places to south and west from Oklahoma City, but stop at Austin
const placesBetweenAustinAndOklahomaCity = ZipMonster.find({
location: {
latitude: {
value: OklahomaCity.location!.latitude,
direction: "to-south"
},
longitude: {
value: OklahomaCity.location!.longitude,
direction: "to-west"
}
},
source: placesToNorthFromAustin
});
placesBetweenAustinAndOklahomaCity.length // 79 zip codes found
Other cases
If you don't use any filter with the method, it will return information about all existing zip codes:
const zipCodes = ZipMonster.find();
zipCodes.length // more than 40k zip codes in the array
License
ZipMonster is available under the MIT license. See the LICENSE file for more info.
7 days ago
7 days ago
7 days ago
7 days ago
10 days ago
11 days ago
12 days ago
11 days ago
12 days ago
12 days ago
12 days ago
13 days ago
13 days ago
13 days ago
13 days ago
13 days ago
13 days ago
13 days ago
1 year ago