Applications for finding iPhone 4 locally?
I ran a shell script like this when the iPad 2 came out to track local availability at Target stores. The regular expressions might need to be changed if the site's formatting has changed since then.

#!/bin/sh
echo "iPad 2 Wi-Fi Black 16GB: "; curl -s --data "_dyncharset=ISO-8859-1&amp;asin=&amp;dpci=057-10-1830&amp;zipcode=95014&amp;city=&amp;state=" http://sites.target.com/site/en/spot/mobile_fiats_results.jsp?_DARGS=/site/en/spot/mobile_fiats.jsp | grep -A 2 strong | sed -e 's/&lt;p&gt;&lt;strong&gt;//' -e 's/&lt;\/strong&gt;&lt;br\/&gt;//' -e 's/&lt;br \/&gt;//' -e 's/&lt;\/p&gt;//' -e 's/--//' -e 's/^[ \t]*//;s/[ \t]*$//'
echo;
echo "iPad 2 Wi-Fi Black 32GB: "; curl -s --data "_dyncharset=ISO-8859-1&amp;asin=&amp;dpci=057-10-1831&amp;zipcode=95014&amp;city=&amp;state=" http://sites.target.com/site/en/spot/mobile_fiats_results.jsp?_DARGS=/site/en/spot/mobile_fiats.jsp | grep -A 2 strong | sed -e 's/&lt;p&gt;&lt;strong&gt;//' -e 's/&lt;\/strong&gt;&lt;br\/&gt;//' -e 's/&lt;br \/&gt;//' -e 's/&lt;\/p&gt;//' -e 's/--//' -e 's/^[ \t]*//;s/[ \t]*$//'
echo;
echo "iPad 2 Wi-Fi Black 64GB: "; curl -s --data "_dyncharset=ISO-8859-1&amp;asin=&amp;dpci=057-10-1832&amp;zipcode=95014&amp;city=&amp;state=" http://sites.target.com/site/en/spot/mobile_fiats_results.jsp?_DARGS=/site/en/spot/mobile_fiats.jsp | grep -A 2 strong | sed -e 's/&lt;p&gt;&lt;strong&gt;//' -e 's/&lt;\/strong&gt;&lt;br\/&gt;//' -e 's/&lt;br \/&gt;//' -e 's/&lt;\/p&gt;//' -e 's/--//' -e 's/^[ \t]*//;s/[ \t]*$//'
echo;
echo "iPad 2 ATT Black 16GB: "; curl -s --data "_dyncharset=ISO-8859-1&amp;asin=&amp;dpci=057-10-1833&amp;zipcode=95014&amp;city=&amp;state=" http://sites.target.com/site/en/spot/mobile_fiats_results.jsp?_DARGS=/site/en/spot/mobile_fiats.jsp | grep -A 2 strong | sed -e 's/&lt;p&gt;&lt;strong&gt;//' -e 's/&lt;\/strong&gt;&lt;br\/&gt;//' -e 's/&lt;br \/&gt;//' -e 's/&lt;\/p&gt;//' -e 's/--//' -e 's/^[ \t]*//;s/[ \t]*$//'
echo;
echo "iPad 2 ATT Black 32GB: "; curl -s --data "_dyncharset=ISO-8859-1&amp;asin=&amp;dpci=057-10-1834&amp;zipcode=95014&amp;city=&amp;state=" http://sites.target.com/site/en/spot/mobile_fiats_results.jsp?_DARGS=/site/en/spot/mobile_fiats.jsp | grep -A 2 strong | sed -e 's/&lt;p&gt;&lt;strong&gt;//' -e 's/&lt;\/strong&gt;&lt;br\/&gt;//' -e 's/&lt;br \/&gt;//' -e 's/&lt;\/p&gt;//' -e 's/--//' -e 's/^[ \t]*//;s/[ \t]*$//'
echo;
echo "iPad 2 ATT Black 64GB: "; curl -s --data "_dyncharset=ISO-8859-1&amp;asin=&amp;dpci=057-10-1835&amp;zipcode=95014&amp;city=&amp;state=" http://sites.target.com/site/en/spot/mobile_fiats_results.jsp?_DARGS=/site/en/spot/mobile_fiats.jsp | grep -A 2 strong | sed -e 's/&lt;p&gt;&lt;strong&gt;//' -e 's/&lt;\/strong&gt;&lt;br\/&gt;//' -e 's/&lt;br \/&gt;//' -e 's/&lt;\/p&gt;//' -e 's/--//' -e 's/^[ \t]*//;s/[ \t]*$//'
echo;
echo "iPad 2 VZN Black 16GB: "; curl -s --data "_dyncharset=ISO-8859-1&amp;asin=&amp;dpci=057-10-1836&amp;zipcode=95014&amp;city=&amp;state=" http://sites.target.com/site/en/spot/mobile_fiats_results.jsp?_DARGS=/site/en/spot/mobile_fiats.jsp | grep -A 2 strong | sed -e 's/&lt;p&gt;&lt;strong&gt;//' -e 's/&lt;\/strong&gt;&lt;br\/&gt;//' -e 's/&lt;br \/&gt;//' -e 's/&lt;\/p&gt;//' -e 's/--//' -e 's/^[ \t]*//;s/[ \t]*$//'
echo;
echo "iPad 2 VZN Black 32GB: "; curl -s --data "_dyncharset=ISO-8859-1&amp;asin=&amp;dpci=057-10-1837&amp;zipcode=95014&amp;city=&amp;state=" http://sites.target.com/site/en/spot/mobile_fiats_results.jsp?_DARGS=/site/en/spot/mobile_fiats.jsp | grep -A 2 strong | sed -e 's/&lt;p&gt;&lt;strong&gt;//' -e 's/&lt;\/strong&gt;&lt;br\/&gt;//' -e 's/&lt;br \/&gt;//' -e 's/&lt;\/p&gt;//' -e 's/--//' -e 's/^[ \t]*//;s/[ \t]*$//'
echo;
echo "iPad 2 VZN Black 64GB: "; curl -s --data "_dyncharset=ISO-8859-1&amp;asin=&amp;dpci=057-10-1838&amp;zipcode=95014&amp;city=&amp;state=" http://sites.target.com/site/en/spot/mobile_fiats_results.jsp?_DARGS=/site/en/spot/mobile_fiats.jsp | grep -A 2 strong | sed -e 's/&lt;p&gt;&lt;strong&gt;//' -e 's/&lt;\/strong&gt;&lt;br\/&gt;//' -e 's/&lt;br \/&gt;//' -e 's/&lt;\/p&gt;//' -e 's/--//' -e 's/^[ \t]*//;s/[ \t]*$//'
echo;
echo "iPad 2 Wi-Fi White 16GB: "; curl -s --data "_dyncharset=ISO-8859-1&amp;asin=&amp;dpci=057-10-1839&amp;zipcode=95014&amp;city=&amp;state=" http://sites.target.com/site/en/spot/mobile_fiats_results.jsp?_DARGS=/site/en/spot/mobile_fiats.jsp | grep -A 2 strong | sed -e 's/&lt;p&gt;&lt;strong&gt;//' -e 's/&lt;\/strong&gt;&lt;br\/&gt;//' -e 's/&lt;br \/&gt;//' -e 's/&lt;\/p&gt;//' -e 's/--//' -e 's/^[ \t]*//;s/[ \t]*$//'
echo;
echo "iPad 2 Wi-Fi White 32GB: "; curl -s --data "_dyncharset=ISO-8859-1&amp;asin=&amp;dpci=057-10-1840&amp;zipcode=95014&amp;city=&amp;state=" http://sites.target.com/site/en/spot/mobile_fiats_results.jsp?_DARGS=/site/en/spot/mobile_fiats.jsp | grep -A 2 strong | sed -e 's/&lt;p&gt;&lt;strong&gt;//' -e 's/&lt;\/strong&gt;&lt;br\/&gt;//' -e 's/&lt;br \/&gt;//' -e 's/&lt;\/p&gt;//' -e 's/--//' -e 's/^[ \t]*//;s/[ \t]*$//'
echo;
echo "iPad 2 Wi-Fi White 64GB: "; curl -s --data "_dyncharset=ISO-8859-1&amp;asin=&amp;dpci=057-10-1841&amp;zipcode=95014&amp;city=&amp;state=" http://sites.target.com/site/en/spot/mobile_fiats_results.jsp?_DARGS=/site/en/spot/mobile_fiats.jsp | grep -A 2 strong | sed -e 's/&lt;p&gt;&lt;strong&gt;//' -e 's/&lt;\/strong&gt;&lt;br\/&gt;//' -e 's/&lt;br \/&gt;//' -e 's/&lt;\/p&gt;//' -e 's/--//' -e 's/^[ \t]*//;s/[ \t]*$//'
echo;
echo "iPad 2 ATT White 16GB: "; curl -s --data "_dyncharset=ISO-8859-1&amp;asin=&amp;dpci=057-10-1842&amp;zipcode=95014&amp;city=&amp;state=" http://sites.target.com/site/en/spot/mobile_fiats_results.jsp?_DARGS=/site/en/spot/mobile_fiats.jsp | grep -A 2 strong | sed -e 's/&lt;p&gt;&lt;strong&gt;//' -e 's/&lt;\/strong&gt;&lt;br\/&gt;//' -e 's/&lt;br \/&gt;//' -e 's/&lt;\/p&gt;//' -e 's/--//' -e 's/^[ \t]*//;s/[ \t]*$//'
echo;
echo "iPad 2 ATT White 32GB: "; curl -s --data "_dyncharset=ISO-8859-1&amp;asin=&amp;dpci=057-10-1843&amp;zipcode=95014&amp;city=&amp;state=" http://sites.target.com/site/en/spot/mobile_fiats_results.jsp?_DARGS=/site/en/spot/mobile_fiats.jsp | grep -A 2 strong | sed -e 's/&lt;p&gt;&lt;strong&gt;//' -e 's/&lt;\/strong&gt;&lt;br\/&gt;//' -e 's/&lt;br \/&gt;//' -e 's/&lt;\/p&gt;//' -e 's/--//' -e 's/^[ \t]*//;s/[ \t]*$//'
echo;
echo "iPad 2 ATT White 64GB: "; curl -s --data "_dyncharset=ISO-8859-1&amp;asin=&amp;dpci=057-10-1844&amp;zipcode=95014&amp;city=&amp;state=" http://sites.target.com/site/en/spot/mobile_fiats_results.jsp?_DARGS=/site/en/spot/mobile_fiats.jsp | grep -A 2 strong | sed -e 's/&lt;p&gt;&lt;strong&gt;//' -e 's/&lt;\/strong&gt;&lt;br\/&gt;//' -e 's/&lt;br \/&gt;//' -e 's/&lt;\/p&gt;//' -e 's/--//' -e 's/^[ \t]*//;s/[ \t]*$//'
echo;
echo "iPad 2 VZN White 16GB: "; curl -s --data "_dyncharset=ISO-8859-1&amp;asin=&amp;dpci=057-10-1845&amp;zipcode=95014&amp;city=&amp;state=" http://sites.target.com/site/en/spot/mobile_fiats_results.jsp?_DARGS=/site/en/spot/mobile_fiats.jsp | grep -A 2 strong | sed -e 's/&lt;p&gt;&lt;strong&gt;//' -e 's/&lt;\/strong&gt;&lt;br\/&gt;//' -e 's/&lt;br \/&gt;//' -e 's/&lt;\/p&gt;//' -e 's/--//' -e 's/^[ \t]*//;s/[ \t]*$//'
echo;
echo "iPad 2 VZN White 32GB: "; curl -s --data "_dyncharset=ISO-8859-1&amp;asin=&amp;dpci=057-10-1846&amp;zipcode=95014&amp;city=&amp;state=" http://sites.target.com/site/en/spot/mobile_fiats_results.jsp?_DARGS=/site/en/spot/mobile_fiats.jsp | grep -A 2 strong | sed -e 's/&lt;p&gt;&lt;strong&gt;//' -e 's/&lt;\/strong&gt;&lt;br\/&gt;//' -e 's/&lt;br \/&gt;//' -e 's/&lt;\/p&gt;//' -e 's/--//' -e 's/^[ \t]*//;s/[ \t]*$//'
echo;
echo "iPad 2 VZN White 64GB: "; curl -s --data "_dyncharset=ISO-8859-1&amp;asin=&amp;dpci=057-10-1847&amp;zipcode=95014&amp;city=&amp;state=" http://sites.target.com/site/en/spot/mobile_fiats_results.jsp?_DARGS=/site/en/spot/mobile_fiats.jsp | grep -A 2 strong | sed -e 's/&lt;p&gt;&lt;strong&gt;//' -e 's/&lt;\/strong&gt;&lt;br\/&gt;//' -e 's/&lt;br \/&gt;//' -e 's/&lt;\/p&gt;//' -e 's/--//' -e 's/^[ \t]*//;s/[ \t]*$//'
echo;


(substitute your own zip code for Apple HQ's)