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 |
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. Both will likely require firewall allowance.
Custom SSH Keys: We can configure your public SSH key for authentication. Contact us to set this up.
FTPS Users: Use Implicit Mode
Use Port 990 with an Implicit connection. Most firewalls block data transfer with Explicit connections. If your FTP client connects but times out retrieving a directory listing, switching to Implicit mode will resolve the issue.
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.
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/
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
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
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"
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.
Security Note: Credentials in URLs
The examples above include credentials directly in commands for simplicity. Be aware that:
- Credentials may appear in shell history and system logs
- For production environments, consider using credential files, environment variables, or SSH key authentication
- Contact us to set up SSH public key authentication for password-less secure access
Automation Best Practices
Set up your scripts once and let them run reliably month after month.
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.
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.
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.
Each month, we publish the full data set with a consistent filename. You can hardcode these in your scripts:
zip-codes-database-DELUXE-csv.zipzip-codes-database-STANDARD-csv.zipcanadian-postal-codes-DELUXE-csv.zip
Check the file's last modified date to confirm the latest version.
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.
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
Connection & Security
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.
216.250.119.190) is static and will not change. You can safely use it to configure firewall rules.
Files & Data
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.
For FTPS connections, switch to Implicit mode on Port 990. Explicit connections are often blocked by firewalls.
Verify your firewall allows outbound connections to 216.250.119.190 on your chosen port (21, 22, 222, or 990).
Try Port 222 instead. It uses a modern ECDSA key if your system blocks the older ssh-dss algorithm.
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 AccessAlready have FTP access? Manage your FTP settings