FTP connection diagram showing secure data transfer from Zip-Codes.com servers
FTP · SFTP · FTPS delivery

Automate Your Data Updates

Download our monthly-updated databases automatically with FTP, SFTP or FTPS. Set it once and your systems stay current with USPS and Canada Post licensed data — no manual downloads required.

22+years reliable service
4secure protocols
StaticIP for firewall rules
12data updates a year
Servers available 24/7 · already a subscriber? Access is switched on within minutes.

Connection at a glance

FTP address
ftp.zip-codes.com
Static IP
216.250.119.190
Ports
21 22 222 990
Username
Your account username
Password
Your account password

Connection options

Choose the protocol that suits your environment. Any of these ports may need a firewall allowance.

PortProtocolKey typeNotes
21FTP-Standard unencrypted connection
22SFTPssh-dssLegacy SSH key for broad compatibility
222SFTPECDSAModern SSH key for strict security policies
990FTPS-Implicit SSL/TLS encryption
SFTP key options. Port 22 uses an older ssh-dss key for broad compatibility with legacy systems. Port 222 uses a modern ECDSA key for organizations whose security policies or technology prohibit ssh-dss. We maintain both ports separately to accommodate varying customer security requirements, and both will likely require firewall allowance. We can also configure your own public SSH key for authentication — contact us to set that up.
FTPS users: use Implicit mode. Use port 990 with an Implicit connection. Most firewalls block data transfer with Explicit connections, so if your client connects but then times out retrieving a directory listing, switching to Implicit will resolve it.
Firewall configuration. Our IP address is static and will not change, so it is safe to whitelist. Ask your IT team to allow 216.250.119.190.

Sample scripts

Copy one and go. Replace the placeholders with your own credentials and your folder or file names.

curl - List Directory Contents Linux / macOS / Windows

View the files available in your folder:

curl -u USERNAME:PASSWORD ftp://ftp.zip-codes.com/FOLDER/

Example: curl -u jsmith:mypassword ftp://ftp.zip-codes.com/ZIP-DELUXE/

About credentials in commands. The examples above put credentials straight on the command line for simplicity. They can end up in shell history and system logs, so for production use credential files, environment variables or SSH key authentication instead. contact us to set up SSH public key authentication for password-less access.

Automation best practice

Set your scripts up once and let them run reliably month after month.

When to run

Do not run on publish day — leave a buffer, because publishing occasionally slips.

DatabasePublishedRun your script
US ZIP Code1st5th
US ZIP+41st5th
Canadian~10th15th
Area Code1st5th

Avoid needless downloads

  • Check the file’s last modified date before downloading.
  • Compare file timestamps against your last successful import.
  • If there is no update, reschedule the job for a day or two later.
  • Log download timestamps so you have an audit trail.

Full file names are consistent every month, so you can hardcode them in your scripts.

Cron job with a date check

#!/bin/bash
# Download ZIP Code database only if updated

FTP_USER="USERNAME"
FTP_PASS="PASSWORD"
REMOTE_FILE="ftp://ftp.zip-codes.com/ZIP-DELUXE/zip-codes-database-DELUXE-csv.zip"
LOCAL_FILE="/data/zipcode-current.zip"
LAST_DOWNLOAD="/data/.last-download-timestamp"

# Get remote file timestamp
REMOTE_DATE=$(curl -s -I -u $FTP_USER:$FTP_PASS $REMOTE_FILE | grep -i "Last-Modified" | cut -d' ' -f2-)

# Compare with last download
if [ -f "$LAST_DOWNLOAD" ]; then
    LAST_DATE=$(cat $LAST_DOWNLOAD)
    if [ "$REMOTE_DATE" == "$LAST_DATE" ]; then
        echo "No update available. Skipping download."
        exit 0
    fi
fi

# Download new file
curl -u $FTP_USER:$FTP_PASS -o $LOCAL_FILE $REMOTE_FILE
echo $REMOTE_DATE > $LAST_DOWNLOAD
echo "Downloaded updated file: $REMOTE_DATE"

Reads the remote file’s timestamp first and exits without downloading when nothing has changed.

Files and naming

File names do not change from month to month, so a script can rely on them.

File naming. Every month we publish the full data set under the same name:

zip-codes-database-DELUXE-csv.zip
zip-codes-database-STANDARD-csv.zip
canadian-postal-codes-DELUXE-csv.zip

Check the last modified date to confirm you have the newest one.

Folder names. Each product sits in its own folder:

ZIP Code:ZIP-STANDARD, ZIP-DELUXE, ZIP-BUSINESS
ZIP+4:ZIP4-STANDARD, ZIP4-DELUXE
Canadian:CAN-STANDARD, CAN-DELUXE, CAN-BUSINESS
Area Code:NPANXX-STANDARD, NPANXX-DELUXE

Your own folder access is listed in your FTP welcome email.

File sizes, compressed CSV

ProductEditionSize
US ZIP CodeStandard~3.5 MB
Deluxe~5 MB
Business~50 MB
US ZIP+4Standard~1.25 GB
Premium~1.30 GB
Deluxe~1.60 GB
Canadian Postal CodeStandard~9 MB
Deluxe~10 MB
Business~25 MB
Area Code (NPANXX)Standard~3 MB
Deluxe~10 MB
ZIP+4 files are large. At well over a gigabyte they need adequate bandwidth and generous client timeout settings — the usual cause of a failed automated pull.

Frequently asked questions

The ones we are actually asked.

Getting Started

How do I request FTP access?
If you are a current subscriber, email us at info@zip-codes.com and include your account username. We'll activate FTP access within minutes and send you a confirmation email with all the connection details.
Where do I find my FTP credentials?
Your FTP credentials are the same as your account login. You can manage your FTP password and view your assigned folders from your account dashboard.
Can I upload, edit, or delete files?
No. All FTP accounts have read-only access. You can download files from your subscribed folders, but you cannot upload, modify, or delete any files. This is for security purposes.
What FTP clients do you recommend?
We recommend using a dedicated FTP client to browse folder structures and test connections. Popular options include FileZilla, WinSCP, Cyberduck, and SmartFTP. All support FTP, SFTP, and FTPS protocols.

Connection & Security

Do you support secure connections (SFTP/FTPS)?
Absolutely. We support SFTP on Ports 22 and 222, and FTPS (Implicit SSL/TLS) on Port 990. This allows us to comply with HIPAA, corporate security policies, and other requirements for secure data transfer.
What's the difference between Port 22 and Port 222?
Port 22 uses an older ssh-dss key for compatibility with legacy systems. Port 222 uses a modern ECDSA key for organizations whose security policies prohibit ssh-dss. Both are maintained separately, and both may require firewall allowance.
Can I use my own SSH public key?
Yes. We can configure your public SSH key for password-less authentication. Contact us to set this up.
Is the IP address static?
Yes. Our FTP server IP address (216.250.119.190) is static and will not change. You can safely use it to configure firewall rules.
Can you push data to my server instead?
Unfortunately, we cannot push data to your server. Our FTP service is pull-only - you'll need to set up scripts to download from our server on your schedule.

Files & Data

When do you publish new data?
US databases (ZIP Code, ZIP+4, Area Code) are published on the 1st of each month. Canadian databases are published around the 10th, though this can vary. We recommend scheduling scripts for the 5th (US) and 15th (Canadian) to ensure you capture the latest data even if there's a delay.
Do file names change each month?
No. Full data set file names remain consistent each month (e.g., zip-codes-database-DELUXE-csv.zip). You can hardcode these in your automation scripts. Check the file's last modified date to confirm the latest version.

URL Construction

Can I use an FTP URL string?

Yes! You can construct a URL for direct FTP access. Use this template:

ftp://USERNAME:PASSWORD@ftp.zip-codes.com:21/FOLDER/FILENAME.zip

Example:

ftp://jsmith:mypassword@ftp.zip-codes.com:21/ZIP-DELUXE/zip-codes-database-DELUXE-csv.zip

Security note: Credentials in URLs may appear in browser history, shell history, and system logs. For production use, consider more secure methods.

When it will not connect

Four things account for nearly every support call about FTP.

Connection times out on directory listing?

For FTPS connections, switch to Implicit mode on Port 990. Explicit connections are often blocked by firewalls.

Can't connect at all?

Verify your firewall allows outbound connections to 216.250.119.190 on your chosen port (21, 22, 222, or 990).

SSH key rejected or connection refused on Port 22?

Try Port 222 instead. It uses a modern ECDSA key if your system blocks the older ssh-dss algorithm.

Files haven't updated yet?

Check the file's last modified date. US data publishes on the 1st; Canadian around the 10th. Occasional delays may occur.

Ready to get started?

Request FTP access for your account and start automating your data updates today.

Email us

info@zip-codes.com

Response within 2 business hours.

Call us

1-800-425-1169

9am – 5pm ET, Monday to Friday.

Already have FTP access? Your folders and password are in your account.

Request FTP access Manage your FTP settings