Great Pride in my Colleagues

Sometimes I spot things in my day to day work which I simply have to link to from here. This is the latest one, the new my eBay that the team are working on. An awesome blog post looking for feedback and opening up to the community. The New My eBay - eBay Chatter Blog

I am particularly impressed with the "My Reminders" section idea.

"This week, live from Boston..."

I am speaking at the eBay Developer's Conference 2007 (after I had an awesome time last year speaking about "Taking your application International"). This year my main talk is entitled "Data Mining: The Key to Affiliate Success"... awesome title huh? ;) Here's the blurb

Data Mining: The Key to Affiliate Success
Alex Schultz
Speaker Alex Schultz put himself through college as an affiliate and run the eBay UK affiliate program. That’s why you should come listen to him speak about the key to affiliate success: data mining. Hear real life examples of how data mining gives affiliates an advantage, how to optimize where you send your clicks, how to be truly certain you have a significant result from your optimization efforts, and more. Learn my secrets and make lots of money for very little work.

I am hoping that a fair few people turn up to this talk because I am going to be letting people into tips of the trade with regard to the data eBay passes in affiliate reporting but also more importantly into how you can back engineer your way into useful eBay data and stats to give you an optimization head start with our APIs. Stay tuned and check out my eBay Dev Con del.icio.us links related to my talk. I will also be walking the floor at eBay live and in the "International booth" located between Canada and PayPal so please do head over!

eBay Search URL Structure Explained

One of the things I have found very hard as an eBay API developer (with two certified applications) is the eBay search results page URL structure. My latest project requires me to build more complex eBay search URL structures on the fly. Below I explain how to create eBay URLs on the fly based on my understanding. I am hoping this complements a few articles out there about adding eBay items to your wordpress blog and how to create an eBay niche store. eBay has given me NO HELP in producing this post so please don't consider this to be some kinda official eBay description of how to create an advanced search url... it isn't one!

The search will return BIN only items, items available to certain countries, search title and desc, select a category, include a price range and show the eBay "welcome new user banner". There are of course more variables possible but this is a good start:

http://search.ebay.com/4gb-ipod-nano-product-red__W0QQfnuZ1QQftsZ2QQsaatcZ3QQsacatZ293QQsaprchiZ150QQsaprcloZ200QQsascsZ2

The link above is a search for a "4gb ipod nano product red" the query section of the search should be simple enough to spot. You replace the " " with "-" and append the search string to the search.ebay.com as follows for a simple default search:

http://search.ebay.com/4gb-ipod-nano-product-red

If you wish to then start exploring more complex variables you append _W0 to tell eBay search they are coming and then each variable is preceeded by QQ. The order of the variables appears not to matter and the first variable on this list is QQfnuZ1 - this is the welcome new user banner as shown below:

http://search.ebay.com/4gb-ipod-nano-product-red_W0QQfnuZ1

The next variable is QQsacatZ293 which tells eBay to just search category 293 which in this case is consumer electronics in the US (siteid: 0)

http://search.ebay.com/4gb-ipod-nano-product-red_W0QQfnuZ1QQsacatZ293

The next variable is QQftsZ2 which tells eBay to search title AND desc expanding the search... if you don't want this to happen simply leave it out.

http://search.ebay.com/4gb-ipod-nano-product-red_W0QQfnuZ1QQsacatZ293QQftsZ2

Proceeding through my example URL we come across QQsaprchiZ150 and QQsaprcloZ200. These variables control min and max price (and don't have to appear together, you can have just one or the other). Here I set min price to $150 (QQsaprchiZ150) and max price to $200 (QQsaprcloZ200) as far as I can see the currency is controlled by the site you search on but I may be wrong.

http://search.ebay.com/4gb-ipod-nano-product-red_W0QQfnuZ1QQsacatZ293QQftsZ2QQsaprchiZ150QQsaprcloZ200

I now have two more variables left in my example url. The penultimate is QQsascsZ2. If this is present you only return BIN items (if you enter QQsascsZ1 you only get auction items and if you leave it off you get everything).

http://search.ebay.com/4gb-ipod-nano-product-red_W0QQfnuZ1QQsacatZ293QQftsZ2QQsaprchiZ150QQsaprcloZ200QQsascsZ2

Now the final variable in my list for understanding the eBay search URL is: QQsaatcZ3. This controls the ship to country, in this example it is "3" which is the united kingdom.

http://search.ebay.com/4gb-ipod-nano-product-red_W0QQfnuZ1QQsacatZ293QQftsZ2QQsaprchiZ150QQsaprcloZ200QQsascsZ2QQsaatcZ3

The full list of countries within the eBay advanced search form as of 4th February is at the end of this article.

So there you have an outline of some of the main variables in the eBay advanced search URLs, this definitely prooved really useful for me to create my little application, I hope it's useful for you.

1, United States
15, Australia
2, Canada
3, United Kingdom
4, Afghanistan
5, Albania
6, Algeria
7, American Samoa
8, Andorra
9, Angola
10, Anguilla
11, Antigua and Barbuda
225, APO/FPO
12, Argentina
13, Armenia
14, Aruba
15, Australia
16, Austria
17, Azerbaijan Republic
18, Bahamas
19, Bahrain
20, Bangladesh
21, Barbados
22, Belarus
23, Belgium
24, Belize
25, Benin
26, Bermuda
27, Bhutan
28, Bolivia
29, Bosnia and Herzegovina
30, Botswana
31, Brazil
32, British Virgin Islands
33, Brunei Darussalam
34, Bulgaria
35, Burkina Faso
36, Burma
37, Burundi
38, Cambodia
39, Cameroon
2, Canada
40, Cape Verde Islands
41, Cayman Islands
42, Central African Republic
43, Chad
44, Chile
45, China
46, Colombia
47, Comoros
48, Congo, Democratic Republic of the
49, Congo, Republic of the
50, Cook Islands
51, Costa Rica
52, Cote d Ivoire (Ivory Coast)
53, Croatia, Republic of
55, Cyprus
56, Czech Republic
57, Denmark
58, Djibouti
59, Dominica
60, Dominican Republic
61, Ecuador
62, Egypt
63, El Salvador
64, Equatorial Guinea
65, Eritrea
66, Estonia
67, Ethiopia
68, Falkland Islands (Islas Malvinas)
69, Fiji
70, Finland
71, France
72, French Guiana
73, French Polynesia
74, Gabon Republic
75, Gambia
76, Georgia
77, Germany
78, Ghana
79, Gibraltar
80, Greece
81, Greenland
82, Grenada
83, Guadeloupe
84, Guam
85, Guatemala
86, Guernsey
87, Guinea
88, Guinea;Bissau
89, Guyana
90, Haiti
91, Honduras
92, Hong Kong
93, Hungary
94, Iceland
95, India
96, Indonesia
97, Iran
99, Ireland
100, Israel
101, Italy
102, Jamaica
103, Jan Mayen
104, Japan
105, Jersey
106, Jordan
107, Kazakhstan
108, Kenya
109, Kiribati
111, Korea, South
112, Kuwait
113, Kyrgyzstan
114, Laos
115, Latvia
116, Lebanon
120, Liechtenstein
121, Lithuania
122, Luxembourg
123, Macau
124, Macedonia
125, Madagascar
126, Malawi
127, Malaysia
128, Maldives
129, Mali
130, Malta
131, Marshall Islands
132, Martinique
133, Mauritania
134, Mauritius
135, Mayotte
136, Mexico
226, Micronesia
137, Moldova
138, Monaco
139, Mongolia
140, Montserrat
141, Morocco
142, Mozambique
143, Namibia
144, Nauru
145, Nepal
146, Netherlands
147, Netherlands Antilles
148, New Caledonia
149, New Zealand
150, Nicaragua
151, Niger
152, Nigeria
153, Niue
154, Norway
155, Oman
156, Pakistan
157, Palau
158, Panama
159, Papua New Guinea
160, Paraguay
161, Peru
162, Philippines
163, Poland
164, Portugal
165, Puerto Rico
166, Qatar
227, Reunion
167, Romania
168, Russian Federation
169, Rwanda
170, Saint Helena
171, Saint Kitts;Nevis
172, Saint Lucia
173, Saint Pierre and Miquelon
174, Saint Vincent and the Grenadines
175, San Marino
176, Saudi Arabia
177, Senegal
178, Seychelles
179, Sierra Leone
180, Singapore
181, Slovakia
182, Slovenia
183, Solomon Islands
184, Somalia
185, South Africa
186, Spain
187, Sri Lanka
189, Suriname
190, Svalbard
191, Swaziland
192, Sweden
193, Switzerland
194, Syria
195, Tahiti
196, Taiwan
197, Tajikistan
198, Tanzania
199, Thailand
200, Togo
201, Tonga
202, Trinidad and Tobago
203, Tunisia
204, Turkey
205, Turkmenistan
206, Turks and Caicos Islands
207, Tuvalu
208, Uganda
209, Ukraine
210, United Arab Emirates
3, United Kingdom
1, United States
211, Uruguay
212, Uzbekistan
213, Vanuatu
214, Vatican City State
215, Venezuela
216, Vietnam
217, Virgin Islands (U.S.)
218, Wallis and Futuna
219, Western Sahara
220, Western Samoa
221, Yemen
222, Yugoslavia
223, Zambia
224, Zimbabwe

eBay Related Searches through Get Search Results

Ok I am simply blown away by the latest offering from the eBay API as an awesome way to make a bunch of money. eBay is now revealing (without the data + formula behind it of course) the results of their related searches algorithm. When you search on eBay for "tmx" on eBay at the moment it will give you 937 items but just above that it will give you the following related searches: ps3,   wii,   tmx elmo,   tickle me elmo,   playstation 3

This is really useful information you can use to determine (as a paid search advertiser for example) hey I don't want to buy keyword "tmx" it's too pricey but keyword "tickle me elmo" is closely related... I will buy that instead and send the clicks to the same page as TMX. This data is quite simply awesome and exposed world wide for free. Make use of it and you'll do great, esp. as an ebay affiliate and you can access it via the REST API, I am playing with this and a little bit of MAA right now :)

Skype4Com - Create Chat with VBS

I have spent a lot of the last week hacking about with the Skype api and vbs. I have wscript on my computer and wanted to open a skype chat window and send a message to the user based on the content of an API call response. Here is the code I used with the Skype4Com dll to do the skype call adapted from some JS API call code already available online. As always this is a true hack and so may not be 100% stable or great code it is offered as is for you to play with.

 

' // Create a Skype4COM object:
Set oSkype = WScript.CreateObject("Skype4COM.Skype")

' // Create a UserCollection object and add the multichat users to this collection:
Set oMembers = WScript.CreateObject("Skype4COM.UserCollection")
oMembers.Add(oSkype.User("alexapitest"))

' // Create a multichat:
Set oChat = oSkype.CreateChatMultiple(oMembers)

' // Open a chat window:
oChat.OpenWindow()

' // Send a chat message:
Set oMsg = oChat.SendMessage("Greetings!")

Banker's Rounding - WTF

So today I was hacking around with the Skype API to put together a little bot which will contact me once an hour while I am at work with some interesting data from the web. The idea is it will eventually be a bot that uses the eBay API to tell me when a certain item I am looking for is listed as a BIN under a certain price. I've been looking at various ways to do this but (since I only have one computer here and don't fancy going to the hassle of partitioning the hard drive) in the end I chose to use window's scheduled tasks and VBS (although perl with active perl gave it a run for it's money).

Due to this I am interested when random facts about VBS and indeed visual basic turn up but this one truly made me fall over backwards. WHO by default would set up a programming language to use banker's rounding WHY would I want 4.985 to round to 4.98 rather than 4.99 when I go to 3 significant figures!

Ah well thanks to the comments section of daily wtf for clearing that one up :)

eBay Tag Cloud up and running

I have been working on a syndicatable eBay tag cloud for quite some time now and finally completed it yesterday. It seems to be working really well you can check it out at ebay tag cloud and I just wanted to make this post to #1 announce the tag cloud but also #2 give people somewhere to post suggestions for how to improve it so go on... post a comment

Dynamic categorization using the ebay API

In my last post I explained that I was investigating the interrelation of keywords (or tags) in eBay titles to see if they could help me to producing some kind of dynamic categorization for the eBay site. I completed my research yesterday and wanted to share it here, the answer definitely seems to be yes and that really excites me for a whole host of reasons.

The experiment involved me pulling all the titles for the 77750 listings related to the word iPod on eBay.com (siteid:0) and saving all those titles into a database. I then split each title into individual words and entered them into a mySQL database (I love mySQL but that's a whole other story) then running an SQL query to give me the DISTINCT keywords and the COUNT of how many times they occured in the titles.

What I found was absolutely fantastic. The keyword ipod had a 31% probability of association with the word Nano, 28% with case and Apple, 27% with video and so on. It also had a 42% association with the word for however out of the top 100 words that was the only irrelevant word (- and + and & also turned up). Thinking about how to remove this irrelevance I also ran the keyword tyre on eBay.co.uk and guess what all the irrelevant words for ipod turned up in the top 100 for tyre as well so deduping the two lists simply obliterated the irrelevant words. I realize there is a lot further to go with this to make it scalable and useful. My article on temporal perturbation is important too but this research simply tells me there is gold in them there hills as far as the eBay API is concerned and using it for research rather than just tools. Someone needs to mine it more than they have already.

This however leaves me with my one irritation with the awesome tool which is phpMyAdmin and that is unlike Teradata QueryMan it does not save your last n queries. I often want to go back to a query which I forgot to save and rerun it and I have to rewrite it from scratch. That happened in the posting of this article (I didn't automate the final analysis... my bad!) and left me a tiny bit grumpy.

Anyway, dynamic categorization and keyword discovery carefully optimized by millions of sellers over 10s of thousands of items daily with billions of dollars of GMV in any category of item you could want exposed for free!!! That's gotta be worth something to someone :)

Web browser Widget: Integrating Internet Explorer into C# Windows Application

Last night was a really interesting play around for me with C Sharp (C#). I decided a while back that it is a huge opportunity to be able to place widgets on users' desktops in Windows but quite simply I did not know how. Off the back of that idea I bought Visual Studio .NET and decided to teach myself how to program in C#. The book I used to teach myself is called Microsoft Visual C#.NET Step by Step and is written by John Sharp and Jon Jagger. The two Jonnies have done a fantastic job in this book of helping you step by step work your way into C# and I am very grateful.

NewprojectwindowsapplicationThere are a few simple steps for getting a browser integrated into a windows application using Visual Studio and Windows C# .NET. Initially you need to set yourself up a new project of the type "Windows Application" as shown in the linked thumbnail to the left.

CustomizetoolboxOnce you have created this new application you need to be able to insert the webbrowser into the C# form under the design option in the Visual Studio .net interface. The way you add the webbrowser is again really really simple but I could find almost nowhere online which shows you how. If you head to the Tools > Add/Remove Toolbox items > menu you will see the dialog box to the right. Within this box you have the opportunity to select the Microsoft Web Browser COM component. Check this box and then click "OK"

Toolbox Now within the toolbox you will see the Microsoft Web Browser icon shown to the right hand side, you can drag and drop this to the windows form and you will have integrated the web browser into your form. The image to the right shows the toolbox with the new Web Browser option.

Now you have your web browser in your form you are pretty much done but of course you will see nothing in this form unless you set a base referring URL within the code. The following code is directly from my initial test file of this little integration. The browser in my integration has been given the name "axWebBrowser1" and on the form loading I set it's location to my website www.paperairplanes.co.uk.

private void Form1_Load(object

sender, System.EventArgs e)

{

axWebBrowser1.Navigate(http://www.paperairplanes.co.uk/);

}

I have Zipped up the source code for anyone to use and included it at the following link but this is totally offered up as is and I am not a good programmer at all so I insist you check the code thoroughly before you use it. Download WindowsApplication2.zip

Good luck and I will be sure to post anything fun I do with this technology. I have a history of creating fun little hacks that are useful for me so I hope to post something soon.

API enabled tag cloud

Tagcloudebay10

Late last night I finished programming something I have been playing with for a the last week. It is a tag cloud using the "GetPopularResults" API call from the eBay API and forcing a curve for the word font sizes.

The upshot of this little bit of programming is the image shown to the left of this post and you can see the live version at example eBay TagCloud I will post in the near future a way that you can create your own version of this Tag Cloud and the code used to call the eBay API.

The Tag Cloud displayed is for category "1" (Collectibles) on siteid 3 (the eBay.co.uk site) and shows the top 30 words searched for in this category and site combination using the GetPopularKeywords call on the eBay API.

Of course due to the simplicity of calling internationally on the eBay API this cloud can easily be set up for any country and for any category which I am really proud about.

My Photo

Recent Posts

Blog powered by TypePad

my flickr tag cloud