FTP Services Provided By Zip-Codes.com

Nov 24, 2025
FTP connection diagram showing secure data transfer from Zip-Codes.com servers

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 & Canada Post licensed data - no manual downloads required.

Static IP Address
Multiple Secure Protocols
Monthly Updates
24/7 Availability
22+
Years Reliable Service
4
Secure Protocols
Static IP Address
12
Monthly Data Updates

Quick Reference

Bookmark this page - here's everything you need at a glance.

Connection Details
FTP Address: ftp.zip-codes.com
Static IP: 216.250.119.190
Available Ports: 21, 22, 222, 990
Username: Your account username
Password: Your account password
Publishing Schedule
US Databases: 1st of each month
Canadian Databases: ~10th of each month
Recommended Script (US): 5th of each month
Recommended Script (CA): 15th of each month

Connection Options

Choose the protocol that works best for your environment. All ports may require firewall allowance.

Port Protocol Key Type Notes
21 FTP - Standard unencrypted connection
22 SFTP ssh-dss Legacy SSH key for broad compatibility
222 SFTP ECDSA Modern SSH key for strict security policies
990 FTPS - Implicit SSL/TLS encryption
Firewall Configuration

Coordinate with your IT team to whitelist our static IP address: 216.250.119.190

Sample Scripts

Copy these examples to get started quickly. Replace placeholders with your credentials and folder/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/

curl - Download a File Linux / macOS / Windows

Download a specific file to your current directory:

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

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

wget - Automated Download Linux / macOS

Ideal for cron jobs and automated scripts:

wget --ftp-user=USERNAME --ftp-password=PASSWORD ftp://ftp.zip-codes.com/FOLDER/FILENAME.zip -O /path/to/save/FILENAME.zip

Sample Crontab Entry (runs on the 5th of each month at 2 AM):

0 2 5 * * wget --ftp-user=USERNAME --ftp-password=PASSWORD ftp://ftp.zip-codes.com/ZIP-DELUXE/zip-codes-database-DELUXE-csv.zip -O /data/zipcode-update.zip
PowerShell - Windows Download Script Windows

For Windows servers and enterprise environments:

# FTP Download Script for Windows
$ftpUrl = "ftp://ftp.zip-codes.com/FOLDER/FILENAME.zip"
$username = "USERNAME"
$password = "PASSWORD"
$localPath = "C:\Data\FILENAME.zip"

$webClient = New-Object System.Net.WebClient
$webClient.Credentials = New-Object System.Net.NetworkCredential($username, $password)
$webClient.DownloadFile($ftpUrl, $localPath)

Write-Host "Download complete: $localPath"
SFTP - Secure Command Line Secure

For secure connections using SSH. Use Port 222 for modern ECDSA key:

# Connect via SFTP (Port 222 for ECDSA)
sftp -P 222 USERNAME@ftp.zip-codes.com

# Once connected, navigate and download:
cd FOLDER
get FILENAME.zip
exit

Note: Use -P 22 for legacy ssh-dss key if Port 222 is unavailable in your environment.

Automation Best Practices

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

Scheduling Recommendations
Don't run scripts on publish day - allow buffer time.
Database Published Script On
US ZIP Code 1st 5th
US ZIP+4 1st 5th
Canadian ~10th 15th
Area Code 1st 5th

This buffer accounts for occasional publishing delays.

Smart Processing Tips
Avoid unnecessary processing and downloads.
  • Check the file's last modified date before downloading
  • Compare file timestamps to your last successful import
  • If no update, reschedule your job for 1-2 days later
  • Log download timestamps for audit trails

Pro tip: Full file names are consistent each month - you can hardcode them in your scripts.

Advanced: Cron Job with Date Check (Bash)

This script checks if the remote file has been updated before downloading:

#!/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"

Files & Naming Conventions

File names are consistent each month - you can rely on them for automated scripts.

File Naming Convention

Each month, we publish the full data set with a consistent filename. You can hardcode these in your scripts:

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

Check the file's last modified date to confirm the latest version.

Common Folder Names

Each product is stored 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 specific folder access is listed in your FTP welcome email.

File Sizes (CSV Compressed)

Plan your storage and bandwidth accordingly:

Product Edition Size
US ZIP Code Standard ~3.5 MB
Deluxe ~5 MB
Business ~50 MB
US ZIP+4 Standard ~1.25 GB
Premium ~1.30 GB
Deluxe ~1.60 GB
Canadian Postal Code Standard ~9 MB
Deluxe ~10 MB
Business ~25 MB
Area Code (NPANXX) Standard ~3 MB
Deluxe ~10 MB

ZIP+4 files are large - ensure adequate bandwidth and timeout settings.

Frequently Asked Questions

Quick answers to common questions about our FTP service.

Getting Started

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.

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.

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.

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

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.

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.

Yes. We can configure your public SSH key for password-less authentication. Contact us to set this up.

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.

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

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.

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

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.

Troubleshooting

Quick solutions to common connection issues.

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.

Still having issues? Contact our support team - we typically respond within 1 business day.

Ready to Get Started?

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

Request FTP Access

Response within 2 business hours

Already have FTP access? Manage your FTP settings