public List<AdVO> extractLinkDetails() {

		List<AdVO> adList = new LinkedList<AdVO>();
				
		Document doc = null;
		String nextPageUrl = this.baseURL;
		// get list of all the ads from all the search pages
		do {
			int tryCnt = 1;
			try {
				// get the url to next page
				doc = getDocument(nextPageUrl);
				nextPageUrl = getNextPageLink(doc);

				List<AdVO> currList = getAdList(doc);
				if (currList != null)
					adList.addAll(currList);

				// get the ad details
				for(int i = 0; i < currList.size() ; i++){
					try{
						getAdDetails(currList.get(i));
						tryCnt = 1;
					}catch(IOException e){
						if(tryCnt >= MAX_RETRY)
							continue;
						tryCnt++;
						i--;
					}
					
				}
				
				for (AdVO adVO : currList) {
					getAdDetails(adVO);
					saveAsJSON(adVO);
					Thread.currentThread().sleep(RESULT_FETCH_DELAY);
				}
				
				lastResultURL = nextPageUrl;

				Thread.currentThread().sleep(RESULT_FETCH_DELAY);
			} catch (InterruptedException e) {
				//break from the loop
				break;
			} catch(IOException e){
				continue;
			}

		} while (nextPageUrl != null && adList.size() < RESULT_LIMIT);
		
		return adList;
	}